CVE-2022-21445

Oracle ADF Faces

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

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

2024-09-18

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

Oracle ADF Faces library, included with Oracle JDeveloper Distribution, contains a deserialization of untrusted data vulnerability leading to unauthenticated remote code execution.

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

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

CVE-2022-21445 представляет собой критическую уязвимость в библиотеке Oracle ADF Faces (компонент Oracle Fusion Middleware). Проблема заключается в небезопасной десериализации данных, передаваемых через параметры состояния представления (View State).

Злоумышленник может отправить специально сформированный HTTP-запрос, содержащий вредоносный сериализованный объект. Поскольку приложение не выполняет надлежащую проверку входных данных перед десериализацией, это приводит к удаленному выполнению произвольного кода (RCE) в контексте безопасности сервера приложений (например, WebLogic) без необходимости аутентификации.

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

Основным способом устранения уязвимости является установка официального пакета обновлений от Oracle (Critical Patch Update — CPU).

  1. Определите версию установленного Oracle WebLogic Server и Oracle ADF.
  2. Перейдите на портал My Oracle Support (MOS).
  3. Скачайте соответствующий патч для вашей версии (согласно бюллетеню безопасности за апрель 2022 года или более позднему).
  4. Используйте утилиту opatch для применения исправления.

Пример команды для проверки текущих патчей:

opatch lsinventory

Пример команды для установки патча (после перехода в директорию с распакованным патчем):

opatch apply

  1. После установки патча перезапустите все экземпляры Managed Servers и Admin Server.

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

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

  1. Использование Web Application Firewall (WAF): Настройте правила WAF для фильтрации и блокировки подозрительных POST-запросов, содержащих аномально длинные или зашифрованные строки в параметрах, характерных для ADF Faces (например, javax.faces.ViewState).

  2. Ограничение доступа: Минимизируйте доступ к консоли управления и внутренним сервисам ADF из внешних сетей. Разрешите доступ только с доверенных IP-адресов.

  3. Настройка фильтрации JEP 290: Если ваша версия Java поддерживает JEP 290, настройте глобальный фильтр десериализации для блокировки известных опасных классов (gadget chains).

Пример добавления параметра запуска JVM:

-Djdk.serialFilter=!org.apache.commons.collections.**;!org.apache.commons.beanutils.**;!org.codehaus.groovy.runtime.**

  1. Включение шифрования ViewState: Убедитесь, что в файле web.xml настроено обязательное шифрование и проверка целостности состояния представления:
<context-param>
  <param-name>org.apache.myfaces.trinidad.CLIENT_STATE_METHOD</param-name>
  <param-value>all</param-value>
</context-param>