
CVE-2026-32794: Apache Airflow Databricks Provider में TLS प्रमाणपत्र सत्यापन बायपास
कीवर्ड: TLS, सर्टिफिकेट सत्यापन, MITM, Kubernetes, Databricks, OAuth, CWE-295, Apache Airflow
apache-airflow-providers-databricks पैकेज federated टोकन एक्सचेंज के दौरान Kubernetes API सर्वर के साथ संवाद करते समय TLS सर्टिफिकेट सत्यापन अक्षम कर देता है। सिंक्रोनस और एसिंक्रोनस दोनों कोड पथ verify=False / ssl=False का उपयोग करते हैं, जिससे K8s क्लस्टर के भीतर नेटवर्क एक्सेस रखने वाला कोई भी हमलावर कनेक्शन के साथ MITM कर सकता है और इन-क्लस्टर सेवा खाते के JWT और Databricks OAuth टोकन दोनों चुरा सकता है।
कोड टिप्पणियाँ दावा करती हैं "K8s in-cluster self-signed certs का उपयोग करता है," लेकिन यह गलत है। Kubernetes इस उद्देश्य के लिए विशेष रूप से /var/run/secrets/kubernetes.io/serviceaccount/ca.crt पर एक CA बंडल प्रदान करता है।
लाइन 699 (सिंक पथ) - _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,
)
लाइन 764 (एसिंक पथ) - _a_get_k8s_token_request_api():
async with self._session.post(
token_request_url,
...
ssl=False, # K8s in-cluster uses self-signed certs
)
टिप्पणी कहती है "K8s in-cluster self-signed certs का उपयोग करता है" लेकिन Kubernetes एक जाने-पहचाने पथ पर एक विश्वसनीय CA बंडल प्रदान करता है। सही तरीका TLS को पूरी तरह से अक्षम करने के बजाय सत्यापन के लिए उस CA बंडल का उपयोग करना है।
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. ATTACKER GAINS POD ACCESS |
| Compromised container or network namespace access |
+---------------------------+------------------------------+
|
v
+----------------------------------------------------------+
| 2. MITM THE TOKEN EXCHANGE |
| ARP spoof / DNS hijack within cluster network |
| Serve self-signed cert (accepted due to verify=False) |
+---------------------------+------------------------------+
|
v
+----------------------------------------------------------+
| 3. INTERCEPT CREDENTIALS |
| - K8s service account JWT (Authorization header) |
| - Databricks OAuth token (response body) |
+---------------------------+------------------------------+
|
v
+----------------------------------------------------------+
| 4. LATERAL MOVEMENT |
| Use stolen tokens for K8s API + Databricks access |
+----------------------------------------------------------+
फिक्स PR: apache/airflow#63704
फिक्स verify=False को मानक Kubernetes in-cluster CA बंडल का उपयोग करके verify=K8S_CA_CERT_PATH से प्रतिस्थापित करता है, और ssl=False को उचित रूप से कॉन्फ़िगर किए गए SSL कॉन्टेक्स्ट से प्रतिस्थापित करता है।
| तिथि | घटना |
|---|---|
| 2026-03-15 | [email protected] पर भेद्यता की रिपोर्ट की गई |
| 2026-03-15 | जारेक पोटियुक (Airflow कमिटर) ने रिपोर्ट स्वीकार की |
| 2026-03-16 | CVE-2026-32794 आवंटित; फिक्स PR #63704 खोला गया |
यह एडवाइजरी जिम्मेदार प्रकटीकरण (responsible disclosure) सिद्धांतों के तहत शैक्षिक और रक्षात्मक उद्देश्यों के लिए प्रकाशित की गई है। दी गई जानकारी डेवलपर्स और सुरक्षा टीमों को भेद्यता को समझने और उसका निवारण करने में मदद करने के लिए है। इस जानकारी का उपयोग अनधिकृत परीक्षण या दुर्भावनापूर्ण उद्देश्यों के लिए न करें।
इस प्रोजेक्ट का पूरा लेख, कार्यप्रणाली और संबंधित शोध यहाँ उपलब्ध है:
Kai Aizen — स्वतंत्र आक्रामक सुरक्षा शोधकर्ता द्वारा निर्मित।
snailsploit.com · शोध · फ्रेमवर्क · GitHub · LinkedIn · ResearchGate · X/Twitter
वही हमला। अलग सब्सट्रेट।
| फ़ील्ड | मान |
|---|
| CVE | CVE-2026-32794 |
| CWE | CWE-295: अनुचित सर्टिफिकेट सत्यापन |
| पैकेज | apache-airflow-providers-databricks (pip) |
| प्रभावित संस्करण | K8s टोकन एक्सचेंज वाले सभी संस्करण |
| पैच किया गया संस्करण | लंबित (PR #63704) |
| घटक | providers/databricks/src/airflow/providers/databricks/hooks/databricks_base.py |
| पहलू | विवरण |
|---|
| प्रत्यक्ष प्रभाव | K8s JWT और Databricks OAuth टोकनों का MITM अवरोधन |
| हमले की सतह | उसी क्लस्टर नेटवर्क के भीतर कोई भी pod |
| क्रेडेंशियल चोरी | K8s सेवा खाता और Databricks दोनों टोकन उजागर |
| पार्श्व गति | चुराए गए टोकन K8s API और Databricks वर्कस्पेस दोनों तक पहुंच सक्षम करते हैं |
| प्रभावित उपयोगकर्ता | K8s टोकन एक्सचेंज के साथ Databricks प्रोवाइडर का उपयोग करने वाली कोई भी Airflow तैनाती |