
Apache Airflow <1.10.11 में उदाहरण DAGs की RCE भेद्यता का शोषण करने के तरीके का PoC
विवरण: यह भेद्यता तब RCE की अनुमति देती है जब Airflow के उदाहरण DAGs लोड होते हैं, संभावित रूप से CVE-2020-13927 के साथ अप्रमाणित
CVE क्रेडिट: DtDream security के xuxiang
प्रभावित संस्करण: <1.10.11
प्रकटीकरण लिंक: https://lists.apache.org/thread.html/r7255cf0be3566f23a768e2a04b40fb09e52fcd1872695428ba9afe91%40%3Cusers.airflow.apache.org%3E
NIST CVE लिंक: https://nvd.nist.gov/vuln/detail/CVE-2020-11978
यह उदाहरण DAG का शोषण करता है जो कमांड इंजेक्शन के लिए कमजोर है, साथ ही प्रायोगिक REST API का उपयोग करता है जो डिफ़ॉल्ट रूप से सार्वजनिक है, भले ही वेब इंटरफ़ेस में प्रमाणीकरण सेट हो।
python CVE-2020-11978.py <url> <command>
यदि example_trigger_target_dag लोड नहीं है और आपको विशिष्ट DAG का ज्ञान है जिसे आप ट्रिगर करना चाहते हैं, तो आप उस विशिष्ट DAG को ट्रिगर करने के तरीके के टेम्पलेट के रूप में CVE-2020-11978-min.py का उपयोग कर सकते हैं।
यदि आप पहले से ही कॉन्फ़िग में load_examples=False सेट करके उदाहरणों को अक्षम कर चुके हैं, तो आप कमजोर नहीं हैं।
आप >=1.10.11 में अपडेट कर सकते हैं या <1.10.11 के लिए कमजोर DAG को example_trigger_target_dag हटा सकते हैं।
यदि आप >=1.10.11 का उपयोग करके एक नया Airflow इंस्टेंस शुरू करते हैं, तो airflow.cfg में auth_backend के लिए deny_all डिफ़ॉल्ट रूप से पहले से सेट है।
[api]
auth_backend = airflow.api.auth.backend.deny_all
ध्यान दें कि airflow.api.auth.backend.default अभी भी >=1.10.11 के लिए भी API में अप्रमाणित अनुरोधों की अनुमति देता है। इसलिए यदि आपके पास एक मौजूदा Airflow इंस्टेंस है जिसमें auth_backend = airflow.api.auth.backend.default है, तो >=1.10.11 में अपग्रेड करने के बाद भी REST API सार्वजनिक रहेगा।
>=2.0.0 के लिए, प्रायोगिक API अक्षम है लेकिन इसमें अधिक शक्तिशाली स्थिर API है।