CVE-2010-1871
Red Hat JBoss Seam 2
2021-12-10
JBoss Seam 2 (jboss-seam2), as used in JBoss Enterprise Application Platform 4.3.0 for Red Hat Linux, allows attackers to perform remote code execution. This vulnerability can only be exploited when the Java Security Manager is not properly configured.
Технический анализ и план устранения
Суть уязвимости
Уязвимость (CVE-2010-1871) в JBoss Seam 2 позволяет удаленному злоумышленнику выполнить произвольный код на сервере. Для эксплуатации требуется, чтобы Java Security Manager был сконфигурирован неправильно или отключен. Атакующий может отправить специально сформированные HTTP-запросы к приложению, что приведет к десериализации недоверенных данных и выполнению кода.
Как исправить
-
Обновите JBoss Enterprise Application Platform (EAP) и JBoss Seam. Установите исправленные версии пакетов от Red Hat:
- Для JBoss Enterprise Application Platform 4.3.0:
- Обновитесь до версии jboss-eap-4.3.0.CP09 или выше.
- Установите обновление для пакета
jboss-seam2через менеджер пакетов Red Hat (yum).
```bash
Проверьте текущую версию
rpm -qa | grep -i jboss-seam2
Обновите пакет (требуются права root)
yum update jboss-seam2 ```
- Для JBoss Enterprise Application Platform 4.3.0:
-
Проверьте и настройте Java Security Manager. Убедитесь, что Security Manager включен и правильно настроен в конфигурации сервера приложений. Это критически важно для блокировки эксплуатации данной уязвимости.
Временное решение
Если немедленное обновление невозможно, выполните следующие шаги:
-
Включите и настройте Java Security Manager.
- Добавьте параметр
-Djava.security.managerи политику-Djava.security.policyв скрипт запуска JBoss (например,run.confилиstandalone.conf). - Строго ограничьте разрешения в файле политики безопасности для приложения.
```bash
Пример добавления в JAVA_OPTS (файл run.conf)
JAVA_OPTS="$JAVA_OPTS -Djava.security.manager -Djava.security.policy=/path/to/your/security.policy" ```
- Добавьте параметр
-
Ограничьте сетевой доступ.
- Настройте межсетевой экран (firewall) так, чтобы доступ к портам JBoss (по умолчанию 8080, 8443) был только с доверенных IP-адресов или сегментов сети. ```bash
Пример для iptables (разрешить только с внутренней сети 192.168.1.0/24)
iptables -A INPUT -p tcp --dport 8080 -s 192.168.1.0/24 -j ACCEPT iptables -A INPUT -p tcp --dport 8080 -j DROP ```
-
Настройте правила WAF.
- Разместите Web Application Firewall (например, ModSecurity) перед приложением.
- Настройте правила для блокировки запросов, содержащих известные шаблоны эксплуатации десериализации в Java (например, с использованием сигнатур на классы
org.jboss.seam).