Common Array Manager (CAM) 6.10.x позволяет удаленно без авторизации повредить любой файл на сервере мониторинга. Актуально только для ОС Solaris.
Изучением данного вопроса заставил заняться реальный случай повреждения данных, здесь будет приведен уже результат исследования.
Документация говорит нам, что для управления CAM надо зайти на https://<CAM_IP>:6789. Там сделана нормальная авторизация, с распределением ролей и тд. Но есть еще один сервис, который работает на порту 8654:
bash-3.2# svcs -vx fmservice
svc:/system/fmservice:default (Sun Storage Fault Management Service)
State: online since Fri Nov 17 11:40:20 2017
See: man -M /opt/se6x20/cli/man -s 1M sscs
See: /var/svc/log/system-fmservice:default.log
Impact: None.
bash-3.2#
Как оказалось, работает там обычный http.
Страница, вроде пустая, но просмотр исходного кода показывает, что просто не закрыт тэг TITLE.
<HTML>
<HEAD><TITLE>StorADE XML Debug</HEAD>
<BODY>
<H1>StorADE XML debug web pages</H1>
Welcome to the StorADE debug web pages
<ul>
<li><a href="jobs.html">jobs</a>
<li><a href="inventory.html">inventory</a>
<li><a href="health.html">health</a>
<li><a href="test?GO=Test::Event::menu">events</a>
</ul>
</BODY>
</HTML>
Посмотрим, что находится на странице health.html.
Нас интересует пункт: «Create Snapshot».
Заполним требуемые поля:
   Snapshot Directory: /
   Snapshot Name: test
И нажимаем Create.
Проверка на сервере показывает, что у нас создался новый файл /test.zip. Содержимое файла — это zip архив, с информацией для анализа работы CAM.
Запрос отправлялся методом GET. Добавим после имени файла %00.
На сервере создался файл /test.
bash-3.2# ls -la /test*
-rw-r--r-- 1 root root 3130 Nov 17 12:35 /test
-rw-r--r-- 1 root root 3130 Nov 17 12:34 /test.zip
Файлы создаются от пользователя root, поэтому можно переписать любой файл на сервере, где установлен CAM.
Как закрыть данную уязвимость.
- Установить CAM версии 6.9 + patches. Там нет этой проблемы.
- Запретить с помощью встроенного в Solaris firewall доступ снаружи по порту tcp:8654. Все соединения необходимые для работы, происходят через интерфейс lo0. Этим не решается сама проблема, но она становится хотя бы локальной.
- Установить CAM в зоне. Проблема не решается, но локализованы риски.
Версии CAM 6.10.x существуют только под Solaris, для других платформ доступен максимум CAM 6.9, не подверженный данной уязвимости.
Документация по CAM 6.10"
Документация по CAM 6.9"
Автор: бро