
CVE-2026-32794: TLS Certificate Verification Bypass in Apache Airflow Databricks Provider
Mots-clés : TLS, vérification de certificat, MITM, Kubernetes, Databricks, OAuth, CWE-295, Apache Airflow
Le paquet apache-airflow-providers-databricks désactive la vérification du certificat TLS lors de la communication avec le serveur API Kubernetes pendant l'échange de jetons fédérés. Les deux chemins de code, synchrone et asynchrone, utilisent verify=False / ssl=False, permettant à tout attaquant ayant un accès réseau au sein du cluster K8s d'effectuer une attaque MITM sur la connexion et de voler à la fois le JWT du compte de service in-cluster et le jeton OAuth Databricks.
Les commentaires du code indiquent que « K8s in-cluster uses self-signed certs », mais ceci est incorrect. Kubernetes fournit un bundle CA à /var/run/secrets/kubernetes.io/serviceaccount/ca.crt spécifiquement à cette fin.
Ligne 699 (chemin synchrone) - _get_k8s_token_request_api():
resp = requests.post(
token_request_url,
headers={
"Authorization": f"Bearer {in_cluster_token}",
"Content-Type": "application/json",
},
json=self._build_k8s_token_request_payload(audience, expiration_seconds),
verify=False, # K8s in-cluster uses self-signed certs
timeout=self.token_timeout_seconds,
)
Ligne 764 (chemin asynchrone) - _a_get_k8s_token_request_api():
async with self._session.post(
token_request_url,
...
ssl=False, # K8s in-cluster uses self-signed certs
)
Le commentaire indique que « K8s in-cluster uses self-signed certs », mais Kubernetes fournit un bundle CA de confiance à un chemin bien connu. L'approche correcte consiste à utiliser ce bundle CA pour la vérification plutôt que de désactiver complètement TLS.
K8S_CA_CERT_PATH = "/var/run/secrets/kubernetes.io/serviceaccount/ca.crt"
# Sync
resp = requests.post(token_request_url, ..., verify=K8S_CA_CERT_PATH)
# Async
ssl_ctx = ssl.create_default_context(cafile=K8S_CA_CERT_PATH)
async with self._session.post(token_request_url, ..., ssl=ssl_ctx)
+----------------------------------------------------------+
| 1. L'ATTAQUANT OBTIENT L'ACCÈS À UN POD |
| Accès à un conteneur compromis ou à un espace |
| de noms réseau |
+---------------------------+------------------------------+
|
v
+----------------------------------------------------------+
| 2. MITM L'ÉCHANGE DE JETONS |
| Spoofing ARP / détournement DNS dans le réseau du |
| cluster |
| Fournir un certificat auto-signé (accepté à cause de |
| verify=False) |
+---------------------------+------------------------------+
|
v
+----------------------------------------------------------+
| 3. INTERCEPTION DES IDENTIFIANTS |
| - JWT du compte de service K8s (en-tête Authorization)|
| - Jeton OAuth Databricks (corps de la réponse) |
+---------------------------+------------------------------+
|
v
+----------------------------------------------------------+
| 4. MOUVEMENT LATÉRAL |
| Utiliser les jetons volés pour accéder à l'API K8s |
| et à l'espace de travail Databricks |
+----------------------------------------------------------+
PR de correction : apache/airflow#63704
Le correctif remplace verify=False par verify=K8S_CA_CERT_PATH en utilisant le bundle CA standard Kubernetes in-cluster, et remplace ssl=False par un contexte SSL correctement configuré.
| Date | Événement |
|---|---|
| 2026-03-15 | Vulnérabilité signalée à [email protected] |
| 2026-03-15 | Jarek Potiuk (contributeur Airflow) a accusé réception du rapport |
| 2026-03-16 | CVE-2026-32794 allouée ; PR de correction #63704 ouverte |
Cet avis est publié à des fins éducatives et défensives conformément aux principes de divulgation responsable. Les informations fournies visent à aider les développeurs et les équipes de sécurité à comprendre et corriger la vulnérabilité. N'utilisez pas ces informations pour des tests non autorisés ou des activités malveillantes.
La rédaction complète de ce projet, la méthodologie et les recherches associées se trouvent sur :
Créé par Kai Aizen — chercheur indépendant en sécurité offensive.
snailsploit.com · Recherche · Frameworks · GitHub · LinkedIn · ResearchGate · X/Twitter
Même attaque. Substrat différent.
| Champ | Valeur |
|---|
| CVE | CVE-2026-32794 |
| CWE | CWE-295: Improper Certificate Validation |
| Paquet | apache-airflow-providers-databricks (pip) |
| Versions affectées | Toutes les versions avec échange de jetons K8s |
| Version corrigée | En attente (PR #63704) |
| Composant | providers/databricks/src/airflow/providers/databricks/hooks/databricks_base.py |
| Aspect | Description |
|---|
| Impact direct | Interception MITM des JWT K8s et des jetons OAuth Databricks |
| Surface d'attaque | Tout pod au sein du même réseau de cluster |
| Vol d'identifiants | Les jetons du compte de service K8s et ceux de Databricks exposés |
| Mouvement latéral | Les jetons volés permettent d'accéder à la fois à l'API K8s et à l'espace de travail Databricks |
| Utilisateurs concernés | Tout déploiement Airflow utilisant le fournisseur Databricks avec échange de jetons K8s |