CVE-2017-12149

Red Hat JBoss Application Server

ВЫСОКАЯ ВЕРОЯТНОСТЬ

Дата обнаружения

2021-12-10

Официальное описание

The JBoss Application Server, shipped with Red Hat Enterprise Application Platform 5.2, allows an attacker to execute arbitrary code via crafted serialized data.

🛡️
Технический анализ и план устранения

Суть уязвимости

Уязвимость (CVE-2017-12149) — это десериализация недоверенных данных в компоненте HttpInvoker (порт 8080 по умолчанию) и JMXInvokerServlet (порт 8080 по умолчанию) Red Hat JBoss AS. Атакующий может отправить специально созданный сериализованный Java-объект на эти эндпоинты, что приведет к удаленному выполнению произвольного кода (RCE) с привилегиями пользователя, под которым работает сервер приложений.

Как исправить

Основной метод — установка официального патча от Red Hat.

  1. Для Red Hat JBoss Enterprise Application Platform (EAP) 5.2:

    • Установите обновление безопасности. Точная версия исправленного пакета зависит от вашего дистрибутива и канала обновлений.
    • Пример для систем, использующих yum (RHEL): bash sudo yum update jbossas
    • После обновления обязательно перезапустите все экземпляры JBoss AS.
  2. Проверка версии: Убедитесь, что установлена исправленная версия. Для EAP 5.2 это, например, jbossas-5.2.0-*.ep5.el5. bash rpm -qa | grep jbossas

Временное решение

Если немедленное обновление невозможно, выполните следующие шаги для блокировки уязвимых эндпоинтов:

  1. Отключите уязвимые сервлеты. Удалите или переименуйте деплойменты invoker.war и jmx-invoker-service.xml.

    • Найдите и переименуйте файлы в директориях развертывания вашего сервера (например, $JBOSS_HOME/server/<PROFILE>/deploy/): bash # Пример для дефолтного профиля 'default' cd /opt/jboss/server/default/deploy/ mv invoker.war invoker.war.disabled_CVE-2017-12149 mv http-invoker.sar http-invoker.sar.disabled_CVE-2017-12149 # Также проверьте директорию 'deployers' для jmx-invoker-service.xml find . -name "*jmx-invoker*" -exec mv {} {}.disabled_CVE-2017-12149 \;
    • Перезапустите JBoss AS.
  2. Настройте брандмауэр (iptables/ firewalld). Ограничьте доступ к порту управления JBoss (по умолчанию 8080) только доверенным IP-адресам или внутренней сети. bash # Пример iptables: разрешить доступ только с сети 192.168.1.0/24 sudo iptables -A INPUT -p tcp --dport 8080 -s 192.168.1.0/24 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 8080 -j DROP

  3. Настройте WAF (Web Application Firewall). Добавьте правила для блокировки запросов, содержащих сигнатуры сериализованных Java-объектов (например, AC ED 00 05 в начале тела запроса) к URL-пути /invoker/JMXInvokerServlet.

Важно: Временные решения лишь снижают риск. Полное устранение уязвимости возможно только путем установки официального патча.