
DefaultParameterFormatter के माध्यम से PyAthena में SQL इंजेक्शन (CVE-2026-65321)
गंभीरता: क्रिटिकल, CVSS v4.0 9.3 / CVSS v3.1 9.8 (VulnCheck, CNA द्वारा निर्धारित)
वेक्टर (v4.0): CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
वेक्टर (v3.1): CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
प्रभावित: PyAthena <= 3.35.3 (3.35.3 तक के सभी संस्करण)
समाधान: 3.35.4 में
CWE: CWE-89 (SQL कमांड में प्रयुक्त विशेष तत्वों का अनुचित न्यूट्रलाइज़ेशन, 'SQL इंजेक्शन')
रिपोर्टकर्ता: Rahul Karne
CNA: VulnCheck
प्रकाशित: 3 अगस्त, 2026
PyAthena ने अविश्वसनीय इनपुट को SELECT क्वेरीज़ में सही ढंग से और
DELETE क्वेरीज़ में गलत तरीके से एस्केप किया।
PyAthena, Amazon Athena के लिए व्यापक रूप से उपयोग किया जाने वाला Python DB-API क्लाइंट,
अपनी स्ट्रिंग-एस्केपिंग रूटीन का चयन स्टेटमेंट के प्रारंभिक कीवर्ड से करता है।
SELECT, WITH, INSERT, UPDATE, या MERGE से शुरू होने वाले स्टेटमेंट्स को
Trino-सही एस्केपिंग मिलती है, जिसमें एकल कोट को दोगुना करके ('') न्यूट्रलाइज़
किया जाता है। हर दूसरा स्टेटमेंट, जिसमें सबसे आम DELETE या CREATE TABLE … AS SELECT (CTAS) है, Hive-शैली बैकस्लैश एस्केपिंग (\') में चला जाता है।
Athena का इंजन Trino है, जो एकल-कोटेड स्ट्रिंग के अंदर बैकस्लैश को
सामान्य वर्ण मानता है, इसलिए बैकस्लैश एस्केपिंग कुछ भी न्यूट्रलाइज़ नहीं करती। एक हमलावर
जो ऐसे स्टेटमेंट में स्ट्रिंग पैरामीटर को प्रभावित कर सकता है, वह लिटरल को
समाप्त कर सकता है और मनमाना SQL इंजेक्ट कर सकता है, बिना किसी प्रमाणीकरण और बिना किसी उपयोगकर्ता
इंटरैक्शन के।
यह दोष इसलिए रीड पथ (read path) से अनुपस्थित है और ठीक उन्हीं विनाशकारी स्टेटमेंट प्रकारों में मौजूद है जहाँ यह सबसे अधिक नुकसान पहुँचाता है। यह पैकेज प्रति माह 22.3 मिलियन बार डाउनलोड किया जाता है।
PyAthena Amazon Athena के लिए एक तृतीय-पक्ष सामुदायिक क्लाइंट लाइब्रेरी है। यह AWS उत्पाद नहीं है, और यह AWS या Athena में ही कोई भेद्यता नहीं है।
एक हमलावर जो किसी भेद्य स्टेटमेंट को पारित स्ट्रिंग पैरामीटर को नियंत्रित करता है, वह
इच्छित स्ट्रिंग लिटरल से बाहर निकलकर स्टेटमेंट के तर्क को बदल सकता है। सबसे
प्रत्यक्ष और विश्वसनीय रूप से प्रदर्शित किया जा सकने वाला प्रभाव अनधिकृत डेटा विलोपन है:
DELETE … WHERE token = %(token)s क्वेरी में missing' OR 1=1 -- जैसा पेलोड
WHERE प्रेडिकेट को न्यूट्रलाइज़ कर देता है और उन सभी पंक्तियों को हटा देता है जिन्हें Athena
वर्कग्रुप की IAM भूमिका हटाने की अनुमति रखती है (उदाहरण के लिए, Iceberg तालिका की सभी पंक्तियाँ)।
स्टेटमेंट प्रकार और भूमिका की अनुमतियों के आधार पर, एक हमलावर
CTAS इंजेक्शन के माध्यम से हमलावर-परिभाषित तालिकाएँ भी बना सकता है और, जहाँ
वह बाद में परिणामी तालिका को पढ़ सकता है, भूमिका द्वारा एक्सेस की जा सकने वाली अन्य
तालिकाओं से डेटा एक्सफ़िलट्रेट कर सकता है।
सभी प्रभाव Athena वर्कग्रुप / IAM भूमिका की अनुमतियों से सीमित है जिसका उपयोग क्लाइंट करता है। यह Athena के SQL इंजन में डेटा-प्लेन इंजेक्शन है; यह PyAthena चलाने वाले होस्ट पर कोड निष्पादन नहीं कराता, न ही AWS की स्वयं से समझौता करता है।
कौन प्रभावित है: ऐसे अनुप्रयोग जो डिफ़ॉल्ट DefaultParameterFormatter के साथ
PyAthena < 3.35.4 का उपयोग करते हैं (क्लाइंट-साइड pyformat / named पैरामीटर
प्रतिस्थापन) और (1) ऐसा स्टेटमेंट बनाते हैं जो
SELECT/WITH/INSERT/UPDATE/MERGE से शुरू नहीं होता — व्यवहार में DELETE, CTAS,
CREATE VIEW, DROP, या ALTER — और (2) हमलावर-प्रभावित डेटा को
उस स्टेटमेंट में स्ट्रिंग पैरामीटर के रूप में पास करते हैं।
कौन प्रभावित नहीं है:
3.35.4 या उसके बाद के संस्करण का उपयोग करने वाले सभी।SELECT/WITH/INSERT/UPDATE/MERGE से शुरू होते हैं; ये सुरक्षित
कोट-डबलिंग एस्केपर की ओर जाते हैं।