Уязвимость компонента Oracle Access Manager
Уязвимость компонента Oracle Access Manager
Категория: Программы Теги: Уязвимости Опубликовано: 9 июня 2025

Уязвимость 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) - Полный отказ в обслуживании.

Условия эксплуатации

  1. Сетевая доступность: Злоумышленник должен иметь возможность отправить HTTP-запрос на порт, где работает уязвимый экземпляр OAM (обычно 80/tcp, 443/tcp, 7001-7010/tcp, 14100-14101/tcp).

  2. Уязвимая версия: Сервер должен использовать одну из уязвимых версий:

    • Oracle Access Manager 11.1.2.3.0

    • Oracle Access Manager 12.2.1.3.0

    • Oracle Access Manager 12.2.1.4.0

  3. Доступ к эндпоинту: Путь /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):

  1. Целевой эндпоинт: Атака направлена на специфический URL-путь /oam/server/opensso/sessionservice, связанный с управлением сессиями OpenSSO.

  2. Некорректная обработка запроса: Уязвимость возникает при обработке компонентом OpenSSO Agent (часть OAM) определенных HTTP-запросов к этому эндпоинту. Точная природа RCE (десериализация, переполнение буфера, инъекция команд) публично не раскрывалась Oracle в деталях, но CVSS и описание указывают на возможность выполнения произвольного кода.

  3. Отсутствие аутентификации: Запросы к этому эндпоинту не требуют валидной сессии или учетных данных.

  4. Простота эксплуатации: Описание CVE и CVSS подчеркивают "Easily exploitable" (легко эксплуатируемая) с LOW Attack Complexity.

Возможные последствия успешной эксплуатации

  • Полный захват контроля (Server Takeover): Злоумышленник получает возможность выполнять произвольные команды и код на уровне ОС с привилегиями пользователя, под которым работает сервер OAM (часто это привилегированный пользователь).

  • Кража конфиденциальных данных: Доступ к базам данных OAM, содержащим информацию о пользователях, политиках доступа, сессиях, паролях (хэши), токенах SSO.

  • Компрометация инфраструктуры аутентификации: Злоумышленник может модифицировать политики безопасности, создавать/удалять учетные записи администраторов, перенаправлять аутентификацию на свои серверы.

  • Установка постоянного доступа: Установка бэкдоров, создание новых учетных записей, установка веб-шеллов.

  • Боковое перемещение: Использование скомпрометированного сервера OAM как плацдарма для атак на другие внутренние системы, к которым у него есть доступ.

  • Отказ в обслуживании (DoS): Намеренная порча конфигураций или остановка критических процессов сервера OAM.

Актуальные и рациональные способы защиты

  1. Приоритет 1: Патчинг: Самый эффективный и обязательный метод. Установите обновления, предоставленные Oracle

  2. Минимизация поверхности атаки (Если патчинг невозможен немедленно):

    • Контроль доступа к сети (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 для уникальности.

  3. Принцип минимальных привилегий: Убедитесь, что сервис OAM запущен под учетной записью ОС с минимально необходимыми привилегиями для снижения ущерба при компрометации.

  4. Мониторинг и аудит:

    • Включите детальное аудирование на серверах OAM.

    • Мониторьте логи веб-сервера/WAF на предмет запросов к /oam/server/opensso/sessionservice.

    • Мониторьте подозрительную активность на серверах OAM (необычные процессы, сетевые соединения, изменения файлов).

Вывод

BDU:2022-01248 (CVE-2021-35587) – критическая уязвимость, позволяющая удаленно получить полный контроль над сервером Oracle Access Manager без каких-либо учетных данных. Ее простота эксплуатации и высокий потенциальный ущерб (кража данных, полная компрометация инфраструктуры аутентификации) делают ее крайне опасной. Эксплоит-код, представленный здесь, служит инструментом для сканирования и идентификации уязвимых систем, что является первым шагом злоумышленника. Единственная надежная защита – немедленное применение патчей от Oracle. До момента установки патчей критически важно изолировать уязвимые системы от публичного интернета и заблокировать доступ к уязвимому эндпоинту /oam/server/opensso/sessionservice с помощью сетевых ACL, WAF или правил обратного прокси. Мониторинг попыток доступа к этому пути является важным индикатором потенциальной атаки.

Алексей Черемных Алексей Черемных
59