CVE-2010-0738

Red Hat JBoss

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

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

2022-05-25

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

The JMX-Console web application in JBossAs in Red Hat JBoss Enterprise Application Platform performs access control only for the GET and POST methods, which allows remote attackers to send requests to this application's GET handler by using a different method.

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

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

CVE-2010-0738 — это уязвимость обхода аутентификации в веб-приложении JMX-Console. Проблема заключается в некорректной конфигурации ограничений безопасности (security-constraints) в файле web.xml.

Механизм контроля доступа был настроен на проверку авторизации только для стандартных HTTP-методов GET и POST. Злоумышленник может отправить запрос, используя другие методы (например, HEAD или PUT), которые сервер JBoss по умолчанию обрабатывает тем же обработчиком, что и GET. Это позволяет неавторизованному пользователю получить полный доступ к функциям управления JMX-консолью, включая выполнение произвольного кода на сервере через MBeans (например, MainDeployer).

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

Для полного устранения уязвимости необходимо отредактировать конфигурационный файл web.xml приложения JMX-Console, чтобы ограничения безопасности распространялись на все типы HTTP-запросов.

  1. Найдите файл web.xml в директории развертывания JMX-Console: deploy/jmx-console.war/WEB-INF/web.xml

  2. Найдите секцию <security-constraint> и удалите внутри неё теги <http-method>, чтобы правило применялось ко всем методам без исключения.

Пример корректной конфигурации:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>HtmlAdaptor</web-resource-name>
        <description>An example security config that only allows users with the role JBossAdmin to access the HTML JMX Console</description>
        <url-pattern>/*</url-pattern>
        <!-- Теги http-method GET и POST должны быть удалены -->
    </web-resource-collection>
    <auth-constraint>
        <role-name>JBossAdmin</role-name>
    </auth-constraint>
</security-constraint>

  1. Перезапустите сервер JBoss для применения изменений:
./shutdown.sh
./run.sh

Временные меры

Если немедленное редактирование конфигурации невозможно, рекомендуется применить следующие защитные меры:

  1. Удаление JMX-Console (наиболее безопасный метод): Если консоль не используется на продуктивной среде, удалите директорию приложения.
rm -rf server/$PROFILE/deploy/jmx-console.war

  1. Ограничение доступа на уровне сетевого экрана или Reverse Proxy: Настройте фильтрацию входящего трафика, разрешив доступ к порту управления (обычно 8080 или 8443) только с доверенных IP-адресов администраторов.

  2. Отключение обработки лишних HTTP-методов в Connector: В файле server.xml (настройки JBoss Web/Tomcat) можно настроить фильтрацию методов, однако это может повлиять на работу других приложений.

  3. Использование профиля "Production": Убедитесь, что вы используете защищенный профиль конфигурации, где по умолчанию включена аутентификация для всех административных интерфейсов.