
CVE-2026-32794: تجاوز التحقق من شهادة TLS في موفّر Apache Airflow Databricks
الكلمات المفتاحية: TLS، التحقق من الشهادة، MITM، Kubernetes، Databricks، OAuth، CWE-295، Apache Airflow
حزمة apache-airflow-providers-databricks تُعطّل التحقق من شهادة TLS عند التواصل مع خادم Kubernetes API أثناء تبادل الرموز المميزة المُوحّد. يستخدم كلٌّ من المسار البرمجي المتزامن وغير المتزامن verify=False / ssl=False، مما يسمح لأي مهاجم يملك وصولاً إلى الشبكة داخل مجموعة K8s بتنفيذ هجوم رجل-في-المنتصف (MITM) وسرقة كلٍّ من JWT لحساب الخدمة داخل المجموعة ورموز OAuth الخاصة بـ Databricks.
تزعم التعليقات البرمجية أن "K8s داخل المجموعة يستخدم شهادات موقّعة ذاتيًا"، لكن هذا غير صحيح. توفر Kubernetes حزمة شهادات CA على المسار /var/run/secrets/kubernetes.io/serviceaccount/ca.crt خصيصًا لهذا الغرض.
| الحقل | القيمة |
|---|---|
| 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 |
السطر 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 داخل المجموعة يستخدم شهادات موقّعة ذاتيًا"، لكن Kubernetes توفر حزمة CA موثوقة في مسار معروف. النهج الصحيح هو استخدام حزمة CA هذه للتحقق بدلاً من تعطيل 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. 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 |
+----------------------------------------------------------+
| الجانب | الوصف |
|---|---|
| الأثر المباشر | اعتراض MITM لرموز K8s JWT ورموز Databricks OAuth |
| سطح الهجوم | أي Pod داخل شبكة المجموعة نفسها |
| سرقة البيانات الاعتمادية | كشف كلٍّ من رموز حساب خدمة K8s ورموز Databricks |
| الحركة الجانبية | الرموز المسروقة تتيح الوصول إلى كلٍّ من K8s API ومساحة عمل Databricks |
| المستخدمون المتأثرون | أي نشر لـ Airflow يستخدم موفّر Databricks مع تبادل رموز K8s |
PR الإصلاحي: apache/airflow#63704
يستبدل الإصلاح verify=False بـ verify=K8S_CA_CERT_PATH باستخدام حزمة CA القياسية داخل مجموعة Kubernetes، ويستبدل ssl=False بسياق SSL مُهيأ بشكل صحيح.
| التاريخ | الحدث |
|---|---|
| 2026-03-15 | تم الإبلاغ عن الثغرة إلى [email protected] |
| 2026-03-15 | أكّد Jarek Potiuk (أحد المساهمين في Airflow) استلام التقرير |
| 2026-03-16 | تم تخصيص CVE-2026-32794؛ وفتح PR الإصلاح #63704 |
يُنشر هذا التقرير لأغراض تعليمية ودفاعية وفق مبادئ الإفصاح المسؤول. تهدف المعلومات المقدمة إلى مساعدة المطورين وفرق الأمن على فهم الثغرة ومعالجتها. لا تستخدم هذه المعلومات لإجراء اختبارات غير مصرح بها أو لأغراض خبيثة.
الشرح الكامل لهذا المشروع، والمنهجية، والأبحاث ذات الصلة متاحة على:
أنشأه Kai Aizen — باحث أمني هجومي مستقل.
snailsploit.com · Research · Frameworks · GitHub · LinkedIn · ResearchGate · X/Twitter
الهجوم نفسه. ركيزة مختلفة.