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).
- Определите версию установленного Oracle WebLogic Server и Oracle ADF.
- Перейдите на портал My Oracle Support (MOS).
- Скачайте соответствующий патч для вашей версии (согласно бюллетеню безопасности за апрель 2022 года или более позднему).
- Используйте утилиту
opatchдля применения исправления.
Пример команды для проверки текущих патчей:
opatch lsinventory
Пример команды для установки патча (после перехода в директорию с распакованным патчем):
opatch apply
- После установки патча перезапустите все экземпляры Managed Servers и Admin Server.
Временные меры
Если немедленная установка патча невозможна, рекомендуется применить следующие защитные механизмы:
-
Использование Web Application Firewall (WAF): Настройте правила WAF для фильтрации и блокировки подозрительных POST-запросов, содержащих аномально длинные или зашифрованные строки в параметрах, характерных для ADF Faces (например,
javax.faces.ViewState). -
Ограничение доступа: Минимизируйте доступ к консоли управления и внутренним сервисам ADF из внешних сетей. Разрешите доступ только с доверенных IP-адресов.
-
Настройка фильтрации JEP 290: Если ваша версия Java поддерживает JEP 290, настройте глобальный фильтр десериализации для блокировки известных опасных классов (gadget chains).
Пример добавления параметра запуска JVM:
-Djdk.serialFilter=!org.apache.commons.collections.**;!org.apache.commons.beanutils.**;!org.codehaus.groovy.runtime.**
- Включение шифрования ViewState:
Убедитесь, что в файле
web.xmlнастроено обязательное шифрование и проверка целостности состояния представления:
<context-param>
<param-name>org.apache.myfaces.trinidad.CLIENT_STATE_METHOD</param-name>
<param-value>all</param-value>
</context-param>