Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2026-25604-PoC — A PoC для демонстрации CVE-2026-25604 | Kitploit
Инструменты/GitHubGitHub/john-jung/cve-2026-25604-poc
Аутентификация и авторизацияАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеБезопасность облачных средОбучение и Образование
GitHubjohn-jung/cve-2026-25604-poc

CVE-2026-25604-PoC

A PoC для демонстрации CVE-2026-25604

Репозиторий
125 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2026-25604 PoC

Внедрение заголовка Host, приводящее к обходу аутентификации SAML в AWS Auth Manager Apache Airflow

Злоумышленник может внедрить вредоносный заголовок Host в поток входа SAML, в результате чего URL службы Assertion Consumer Service (ACS) будет указывать на сервер, контролируемый злоумышленником. Это позволяет злоумышленнику перехватывать действительные ответы SAML и повторно использовать их для получения несанкционированного доступа к экземпляру Airflow жертвы — или повторно использовать токены между различными экземплярами Airflow с разными контролями доступа.

Затронутые версии

ПакетЗатронутыеИсправлено
apache-airflow-providers-amazon8.0.0 – 9.21.x9.22.0

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

CVE-2026-25604: Ошибка проверки источника в AWS Auth Manager (CWE-346)

В AWS Auth Manager источник аутентификации SAML использовался так, как его предоставил клиент, и не проверялся на соответствие фактическому URL экземпляра. Это позволяло получать доступ к разным экземплярам с потенциально разными контролями доступа путем повторного использования ответа SAML от других экземпляров.

— NVD

Ссылки

ИсточникСсылка
NVDhttps://nvd.nist.gov/vuln/detail/CVE-2026-25604
Fix PRhttps://github.com/apache/airflow/pull/61368
Fix Commit1a86aec

Краткое описание уязвимости

AWS Auth Manager Apache Airflow использует SAML 2.0 через AWS IAM Identity Center для аутентификации. При построении запроса аутентификации SAML метод _prepare_flask_request() считывает заголовок Host непосредственно из входящего HTTP-запроса для формирования URL обратного вызова ACS:

# Vulnerable code in aws_auth_manager.py
def _prepare_flask_request(req):
    host = req.headers.get("Host", req.host)  # <-- Attacker-controlled
    
    if ":" in host:
        hostname, port = host.rsplit(":", 1)
    else:
        hostname = host
        port = "443" if req.scheme == "https" else "80"
    
    return {
        "http_host": hostname,    # Used to build ACS URL
        "server_port": port,
        ...
    }

Полученные http_host и server_port используются для построения URL AssertionConsumerService SAML. Поскольку поставщик удостоверений (IdP) доверяет этому URL, он перенаправляет аутентифицированного пользователя — вместе с подписанным ответом SAML — туда, куда указывает заголовок Host.

Схема атаки

┌──────────┐         ┌──────────────┐         ┌─────────────┐
│ Attacker │         │ Victim       │         │ AWS IAM     │
│          │         │ Airflow      │         │ Identity    │
│          │         │ Instance     │         │ Center      │
└────┬─────┘         └──────┬───────┘         └──────┬──────┘
     │                      │                        │
     │ 1. GET /login        │                        │
     │ Host: evil.com:8080  │                        │
     │─────────────────────>│                        │
     │                      │                        │
     │                      │ 2. SAML AuthnRequest   │
     │                      │    ACS URL =           │
     │                      │    evil.com:8080/       │
     │                      │    login_callback       │
     │                      │───────────────────────>│
     │                      │                        │
     │                      │ 3. User authenticates  │
     │                      │    at IdP login page   │
     │                      │                        │
     │ 4. IdP redirects     │                        │
     │    SAMLResponse to   │<───────────────────────│
     │    evil.com:8080     │                        │
     │<─────────────────────│                        │
     │                      │                        │
     │ 5. Attacker captures │                        │
     │    valid SAMLResponse│                        │
     │                      │                        │
     │ 6. Replay to victim  │                        │
     │    POST /login_callback                       │
     │    with captured     │                        │
     │    SAMLResponse      │                        │
     │─────────────────────>│                        │
     │                      │                        │
     │ 7. Authenticated!    │                        │
     │<─────────────────────│                        │
     └──────────────────────┴────────────────────────┘

Два сценария эксплуатации

Сценарий A — Кража токена через фишинг: Злоумышленник отправляет легитимному пользователю специально созданную ссылку для входа (с поддельным заголовком Host через обратный прокси). После того как пользователь проходит аутентификацию в IAM Identity Center, ответ SAML перенаправляется на сервер злоумышленника. Злоумышленник воспроизводит его против реального экземпляра Airflow.

Сценарий B — Повторное использование токена между экземплярами: В мультитенантных средах Airflow или средах с несколькими экземплярами действительный ответ SAML от экземпляра A может быть воспроизведен для экземпляра B. Поскольку источник никогда не проверяется на соответствие фактическому URL экземпляра, разные контроли доступа на экземпляре B обходятся.

Структура репозитория

CVE-2026-25604-PoC/
├── README.md           # This file
└── mock_airflow.py     # Mock vulnerable Airflow server

Предварительные требования

  • Python 3.8+
  • AWS IAM Identity Center (ранее AWS SSO) с настроенным приложением SAML 2.0
  • Экземпляр EC2 или локальная среда, которая может получить доступ к URL метаданных SAML IAM Identity Center

Зависимости

pip install flask python3-saml

Шаги по воспроизведению

1. Настройка AWS IAM Identity Center

Настройте приложение SAML 2.0 в AWS IAM Identity Center, следуя документации AWS Auth Manager Airflow:

  • URL ACS приложения: http://<airflow-host>:<port>/login_callback
  • Аудитория SAML приложения: aws-auth-manager-saml-client
  • Скопируйте URL метаданных SAML из консоли Identity Center.

2. Запуск имитации уязвимого сервера Airflow

python mock_airflow.py <SAML_METADATA_URL> [PORT]

Например:

python mock_airflow.py https://portal.sso.us-east-1.amazonaws.com/saml/metadata/XXXX 8080

3. Отправка запроса входа с поддельным заголовком Host

В отдельном терминале инициируйте вход SAML с измененным заголовком Host:

curl -v -H "Host: attacker.com:9090" http://127.0.0.1:8080/login

4. Наблюдение за перенаправлением

Сервер отвечает 302 Redirect на страницу входа AWS IAM Identity Center. Проверьте SAML AuthnRequest — URL AssertionConsumerService будет указывать на attacker.com:9090/login_callback вместо легитимного сервера.

5. Ожидаемый вывод

На консоли имитации сервера Airflow:

[LOGIN] Host header: attacker.com:9090
[DEBUG] http_host=attacker.com, server_port=9090

SAML AuthnRequest теперь предписывает IdP доставить аутентифицированный ответ SAML на attacker.com:9090, предоставляя злоумышленнику действительный токен для повторного использования.

Уязвимый код

airflow/providers/amazon/aws/auth_manager/aws_auth_manager.py — метод _prepare_flask_request():

host = request.headers.get("Host", request.host)

Эта строка доверяет заголовку Host, предоставленному клиентом, без проверки на соответствие настроенному базовому URL Airflow (AIRFLOW__API__BASE_URL).

Исправление

Исправление (PR #61368, объединено 3 февраля 2026 г.) заменяет хост, полученный из запроса, значением из конфигурации Airflow:

Скачать инструмент