
Уязвимость BDU:2022-01248 (CVE-2021-35587) Oracle Access Manager
Уязвимость CVE-2021-35587 (BDU:2022-01248) представляет собой критическую уязвимость удаленного выполнения кода (RCE) в компоненте OpenSSO Agent программного обеспечения Oracle Access Manager (OAM), входящего в состав Oracle Fusion Middleware. Уязвимость возникает из-за некорректной обработки HTTP-запросов к специфическому эндпоинту. Неаутентифицированный злоумышленник, имеющий сетевое подключение к уязвимому серверу по HTTP(S), может скомпрометировать систему для полного захвата контроля.
Анализ уязвимости
Уровень опасности: 9.8 (CRITICAL)
Вектор атаки: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
-
AV:N (Attack Vector: Network) - Атака возможна удаленно через сеть.
-
AC:L (Attack Complexity: Low) - Низкая сложность эксплуатации, не требуются специальные условия.
-
PR:N (Privileges Required: None) - Аутентификация не требуется.
-
UI:N (User Interaction: None) - Вмешательство пользователя не нужно.
-
S:U (Scope: Unchanged) - Уязвимость не затрагивает другие компоненты.
-
C:H (Confidentiality Impact: High) - Полное раскрытие конфиденциальных данных.
-
I:H (Integrity Impact: High) - Полное нарушение целостности данных.
-
A:H (Availability Impact: High) - Полный отказ в обслуживании.
Условия эксплуатации
-
Сетевая доступность: Злоумышленник должен иметь возможность отправить HTTP-запрос на порт, где работает уязвимый экземпляр OAM (обычно 80/tcp, 443/tcp, 7001-7010/tcp, 14100-14101/tcp).
-
Уязвимая версия: Сервер должен использовать одну из уязвимых версий:
-
Oracle Access Manager 11.1.2.3.0
-
Oracle Access Manager 12.2.1.3.0
-
Oracle Access Manager 12.2.1.4.0
-
-
Доступ к эндпоинту: Путь
/oam/server/opensso/sessionservice
должен быть доступен извне (не заблокирован ACL, WAF, etc.).
Технический анализ эксплоита и вектора атаки
Эксплоит (POC) CVE-2021-35587.py
демонстрирует не саму RCE-атаку, а надежный способ обнаружения уязвимых систем. Это ключевой первый шаг для злоумышленника. Рассмотрим его код детально:
class CVE_2021_35587(BasicPoc): def __init__(self): self.name = "CVE-2021-35587" super(CVE_2021_35587, self).__init__() def poc(self, target: str): poc_url = '/oam/server/opensso/sessionservice' # Критический уязвимый путь url = target + poc_url try: resp = self.get(url) # Отправка GET-запроса if resp.status_code == 200: # Успешный ответ - первый признак # Проверка ОЧЕНЬ специфичных заголовков Oracle Middleware: if 'X-ORACLE-DMS-ECID' in resp.headers or 'X-ORACLE-DMS-RID' in resp.headers: # Проверка уникальных маркеров контента в теле ответа: if '/oam/pages/css/general.css' in resp.text and \ 'login-footer-version' in resp.text and \ 'Oracle Corporation' in resp.text: logger.success(f"{target} is vulnerable") logger.success(resp.text) # Вывод успешного ответа return True return False except Exception as e: logger.error(e) logger.error(f'[-] {target} is not vulnerable') return False if __name__ == '__main__': grammar = 'body="/oam/pages/css/login_page.css"' # Dork для поиска OAM в Fofa cve = CVE_2021_35587() fofa = Fofa() fofa.set_config(api_key='xxxxxx', api_email='xxxxxx') # Настройка API Fofa logger.warning(f'[+] the asset account of grammar: {grammar} are: {fofa.asset_counts(grammar)}') pages = fofa.asset_pages(grammar) # Расчет кол-ва страниц результатов logger.debug(pages) for page in range(1, pages + 1): # Перебор всех страниц результатов Fofa logger.debug(f'[*] page {page}') assets = fofa.assets(grammar, page) # Получение списка целей cve.run(assets) # Запуск проверки на уязвимость для каждой цели
Ключевые моменты вектора атаки (на основе анализа POC и описания CVE):
-
Целевой эндпоинт: Атака направлена на специфический URL-путь
/oam/server/opensso/sessionservice
, связанный с управлением сессиями OpenSSO. -
Некорректная обработка запроса: Уязвимость возникает при обработке компонентом OpenSSO Agent (часть OAM) определенных HTTP-запросов к этому эндпоинту. Точная природа RCE (десериализация, переполнение буфера, инъекция команд) публично не раскрывалась Oracle в деталях, но CVSS и описание указывают на возможность выполнения произвольного кода.
-
Отсутствие аутентификации: Запросы к этому эндпоинту не требуют валидной сессии или учетных данных.
-
Простота эксплуатации: Описание CVE и CVSS подчеркивают "Easily exploitable" (легко эксплуатируемая) с LOW Attack Complexity.
Возможные последствия успешной эксплуатации
-
Полный захват контроля (Server Takeover): Злоумышленник получает возможность выполнять произвольные команды и код на уровне ОС с привилегиями пользователя, под которым работает сервер OAM (часто это привилегированный пользователь).
-
Кража конфиденциальных данных: Доступ к базам данных OAM, содержащим информацию о пользователях, политиках доступа, сессиях, паролях (хэши), токенах SSO.
-
Компрометация инфраструктуры аутентификации: Злоумышленник может модифицировать политики безопасности, создавать/удалять учетные записи администраторов, перенаправлять аутентификацию на свои серверы.
-
Установка постоянного доступа: Установка бэкдоров, создание новых учетных записей, установка веб-шеллов.
-
Боковое перемещение: Использование скомпрометированного сервера OAM как плацдарма для атак на другие внутренние системы, к которым у него есть доступ.
-
Отказ в обслуживании (DoS): Намеренная порча конфигураций или остановка критических процессов сервера OAM.
Актуальные и рациональные способы защиты
-
Приоритет 1: Патчинг: Самый эффективный и обязательный метод. Установите обновления, предоставленные Oracle
-
Минимизация поверхности атаки (Если патчинг невозможен немедленно):
-
Контроль доступа к сети (Firewall Rules): Жестко ограничьте доступ к портам уязвимого OAM сервера (TCP 80, 443, 7001-7010, 14100-14101) только для IP-адресов или подсетей, которым этот доступ абсолютно необходим (например, только балансировщики нагрузки, фронтенд-серверы, сети администраторов). Заблокируйте доступ из интернета.
-
Блокировка уязвимого эндпоинта (WAF/Reverse Proxy): Настройте правила в WAF (Web Application Firewall) или обратном прокси (Nginx, Apache httpd) для блокировки всех запросов к пути
/oam/server/opensso/sessionservice
. Это временная мера, пока не установлен патч.-
Пример правила для ModSecurity (WAF):
SecRule REQUEST_URI "@beginsWith /oam/server/opensso/sessionservice" \ "id:10001,\ phase:1,\ deny,\ status:403,\ msg:'Blocking access to CVE-2021-35587 vulnerable endpoint',\ tag:'security',\ severity:'CRITICAL'"
-
Пример правила для Nginx:
location ~ ^/oam/server/opensso/sessionservice { deny all; return 403; }
-
Пример правила для Cloudflare WAF: Создайте правило "URI Path"
matches pattern
/oam/server/opensso/sessionservice
и выберите действие "Block".
-
-
Правило для Suricata (IPS/NIDS): Может обнаруживать и блокировать попытки доступа к уязвимому эндпоинту.
alert http any any -> $HOME_NET any ( \ msg:"ET EXPLOIT Possible Oracle OAM CVE-2021-35587 Exploit Attempt (sessionservice)"; \ flow:established,to_server; \ http.uri; content:"/oam/server/opensso/sessionservice"; depth:35; \ classtype:attempted-admin; \ sid:202201248; \ rev:1; \ metadata:created_at 2022_01_01, updated_at 2022_01_01;)
-
depth:35
: Оптимизирует поиск, проверяя начало URI. -
$HOME_NET
: Определите как сеть ваших защищаемых серверов. -
sid:202201248
: Использует BDU-ID для уникальности.
-
-
-
Принцип минимальных привилегий: Убедитесь, что сервис OAM запущен под учетной записью ОС с минимально необходимыми привилегиями для снижения ущерба при компрометации.
-
Мониторинг и аудит:
-
Включите детальное аудирование на серверах OAM.
-
Мониторьте логи веб-сервера/WAF на предмет запросов к
/oam/server/opensso/sessionservice
. -
Мониторьте подозрительную активность на серверах OAM (необычные процессы, сетевые соединения, изменения файлов).
-
Вывод
BDU:2022-01248 (CVE-2021-35587) – критическая уязвимость, позволяющая удаленно получить полный контроль над сервером Oracle Access Manager без каких-либо учетных данных. Ее простота эксплуатации и высокий потенциальный ущерб (кража данных, полная компрометация инфраструктуры аутентификации) делают ее крайне опасной. Эксплоит-код, представленный здесь, служит инструментом для сканирования и идентификации уязвимых систем, что является первым шагом злоумышленника. Единственная надежная защита – немедленное применение патчей от Oracle. До момента установки патчей критически важно изолировать уязвимые системы от публичного интернета и заблокировать доступ к уязвимому эндпоинту /oam/server/opensso/sessionservice
с помощью сетевых ACL, WAF или правил обратного прокси. Мониторинг попыток доступа к этому пути является важным индикатором потенциальной атаки.
