Удалённо эксплуатируемая уязвимость в OMI-агенте, навязываемом в Linux-окружениях Microsoft Azure

Kate

Administrator
Команда форума
Клиенты облачной платформы Microsoft Azure, использующие Linux в виртуальных машинах, столкнулись с критической уязвимостью (CVE-2021-38647), позволяющей удалённо выполнить код с правами root. Уязвимость получила кодовое имя OMIGOD и примечательна тем, что проблема присутствует в приложении OMI Agent, которое без лишней огласки устанавливается в Linux-окружениях.

OMI Agent автоматически устанавливается и активируется при использовании таких сервисов, как Azure Automation, Azure Automatic Update, Azure Operations Management Suite, Azure Log Analytics, Azure Configuration Management, Azure Diagnostics и Azure Container Insights. Например, атаке подвержены Linux-окружения в Azure для которых включён мониторинг. Агент является частью открытого пакета OMI (Open Management Infrastructure Agent) с реализацией стека DMTF CIM/WBEM для управления IT-инфраструктурой.

OMI Agent устанавливается в системе под пользователем omsagent и создаёт настройки в /etc/sudoers для запуска серии скриптов с правами root. В процессе работы некоторых сервисов создаются слушающие сетевые сокеты на сетевых портах 5985, 5986 и 1270. Сканирование в сервисе Shodan показывает наличие в сети более 15 тысяч уязвимых Linux-окружений. В настоящее время в открытом доступе уже размещён рабочий прототип эксплоита, позволяющий выполнить свой код с правами root на подобных системах.

Проблема усугубляется тем, что в Azure явно не документировано применение OMI и OMI Agent устанавливается без предупреждения - достаточно согласиться с условиями выбранного сервиса при настройке окружения и OMI Agent будет автоматически активирован, т.е. большинство пользователей даже не подозревают о его наличии.

Метод эксплуатации тривиален - достаточно отправить к агенту XML-запрос, удалив заголовок, отвечающий за аутентификацию. OMI использует аутентификацию при получении управляющих сообщений, проверяя, что клиент имеет право на отправку той или иной команды. Суть уязвимости в том, что при удалении в сообщении заголовка "Authentication", отвечающего за аутентификацию, сервер считает прохождение проверки успешной, принимает управляющее сообщение и допускает выполнение команд с правами root. Для выполнения произвольных команд в системе достаточно использовать в сообщении штатную команду ExecuteShellCommand_INPUT. Например, для запуска утилиты "id" достаточно отправить запрос:


curl -H "Content-Type: application/soap+xml;charset=UTF-8" -k --data-binary "@http_body.txt" https://10.0.0.5:5986/wsman

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://schemas.xmlsoap.org/ws/2004/08/addressing">
...
<s:Body>
<p:ExecuteShellCommand_INPUT xmlns:p="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/SCX_OperatingSystem">
<p:command>id</p:command>
<p:timeout>0</p:timeout>
</p:ExecuteShellCommand_INPUT>
</s:Body>
</s:Envelope>

Компания Microsoft уже выпустила обновление OMI 1.6.8.1 с устранением уязвимости, но оно ещё не доведено до пользователей Microsoft Azure (в новых окружениях пока устанавливается старая версия OMI). Автообновление агента не поддерживается, поэтому пользователям необходимо выполнить обновление пакета вручную, используя команды "dpkg -i" в Debian/Ubuntu или "rpm -Uvh" в Fedora/RHEL (проверить, установлен ли пакет можно командами "dpkg -l omi" и "rpm -qa omi"). В качестве обходного пути защиты рекомендуется блокировать доступ к сетевым портам 5985, 5986 и 1270.

Кроме CVE-2021-38647 в OMI 1.6.8.1 также устранены три уязвимости (CVE-2021-38648, CVE-2021-38645 и CVE-2021-38649), позволяющие непривилегированному локальному пользователю выполнить свой код с правами root.

 
Сверху