Уязвимость в Common Array Manager 6.10.x

Common Array Manager (CAM) 6.10.x позволяет удаленно без авторизации повредить любой файл на сервере мониторинга. Актуально только для ОС Solaris.

Немного истории
Common Array Manager — это софт для управления и мониторинга линейки дисковых массивов от Sun/Oracle. Появился данный продукт в 2006 году и используется для управления массивами 6140, 6540, 6180, 6580, 25x0. Данная линейка уже снята с производства, но сами массивы продолжают эксплуатироваться, для них доступна поддержка. Само ПО так же не раз обновлялось. Последние версии: 6.10; 6.10.2.0.0 были выпущены в 2014 и 2015 году соответственно. О них то и пойдет речь.

Изучением данного вопроса заставил заняться реальный случай повреждения данных, здесь будет приведен уже результат исследования.

Документация говорит нам, что для управления 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, не подверженный данной уязвимости.

Реакция вендора
Сказано, что для Common Array Manager наступил End Of Support Life (EOSL), поэтому никаких patches,alerts итд не будет…

Риски
Системы мониторинга массивов, обычно, не имеют прямого доступа из Internet, и вряд ли обычные пользователи в вашей сети найдут эти URL, чтобы специально сделать гадость. Но вот некоторые системы для проведения тестов на проникновения, как оказалось, легко находят сканером и открытые сетевые порты, и странные формы. После чего автоматом пытаются сделать запросы, чтобы получить файл /etc/passwd. Файл получить им не удается. Тест на проникновение пройден. Но и в систему больше зайти невозможно…

Документация по CAM 6.10"
Документация по CAM 6.9"
Метки:
Sun,Oracle,array,solaris