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.
-
Для Red Hat JBoss Enterprise Application Platform (EAP) 5.2:
- Установите обновление безопасности. Точная версия исправленного пакета зависит от вашего дистрибутива и канала обновлений.
- Пример для систем, использующих
yum(RHEL):bash sudo yum update jbossas - После обновления обязательно перезапустите все экземпляры JBoss AS.
-
Проверка версии: Убедитесь, что установлена исправленная версия. Для EAP 5.2 это, например,
jbossas-5.2.0-*.ep5.el5.bash rpm -qa | grep jbossas
Временное решение
Если немедленное обновление невозможно, выполните следующие шаги для блокировки уязвимых эндпоинтов:
-
Отключите уязвимые сервлеты. Удалите или переименуйте деплойменты
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.
- Найдите и переименуйте файлы в директориях развертывания вашего сервера (например,
-
Настройте брандмауэр (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 -
Настройте WAF (Web Application Firewall). Добавьте правила для блокировки запросов, содержащих сигнатуры сериализованных Java-объектов (например,
AC ED 00 05в начале тела запроса) к URL-пути/invoker/JMXInvokerServlet.
Важно: Временные решения лишь снижают риск. Полное устранение уязвимости возможно только путем установки официального патча.