
CVE-2026-13233 (Drupal OpenAI Provider, SA-CONTRIB-2026-053): response-URL SSRF / स्थानीय फ़ाइल पठन। अविश्वसनीय अपस्ट्रीम, प्रॉम्प्ट नहीं। सुरक्षित रीप्रोड्यूसर + डिटेक्शन। 1.1.1/1.2.2 में ठीक किया गया।
अविश्वसनीय अपस्ट्रीम: वह प्रदाता जिसने वह URL लाया जिसे उसकी प्रतिक्रिया ने लाने को कहा।
Drupal OpenAI Provider (ai_provider_openai) · SSRF (CWE-918) · CVE-2026-13233 · SA-CONTRIB-2026-053
स्थिति: समन्वित प्रकटीकरण पूर्ण (2026-07-10)। Drupal सुरक्षा टीम को निजी तौर पर रिपोर्ट किया गया, सुधारा गया, और CVE-2026-13233 / एडवाइज़री SA-CONTRIB-2026-053 (रेटेड मध्यम रूप से महत्वपूर्ण) के रूप में प्रकाशित। लेखक को खोजकर्ता और सुधार डेवलपर के रूप में श्रेय दिया गया।
एक AI "कनेक्शन बिंदु" पर क्लासिक प्राधिकरण / इनपुट-सत्यापन दोष का अध्ययन: एक
AI छवि-निर्माण प्रदाता ने बिना किसी स्कीम अनुमति-सूची वाले सामान्य-उद्देश्य फ़ंक्शन का उपयोग करके अपस्ट्रीम API प्रतिक्रिया में निहित URL लाया।
उन परिनियोजनों पर जहाँ कॉन्फ़िगर किया गया अपस्ट्रीम विश्वसनीय डिफ़ॉल्ट नहीं है (bring-your-own-endpoint / प्रॉक्सी / self-hosted गेटवे / समझौता किया गया
रिले), प्रतिक्रिया सर्वर को file:// या किसी आंतरिक पते की ओर इंगित कर सकती है।
सिंक तक पहुँचने वाला अविश्वसनीय इनपुट अपस्ट्रीम प्रतिक्रिया URL है — न कि उपयोगकर्ता का प्रॉम्प्ट।
file:// स्थानीय फ़ाइल पठन शामिल था; लेखक के
आंतरिक विश्लेषण ने इसे CWE-73 / CWE-441 से भी मैप किया।3.1 / सशर्त 5.3
(Medium); पिछले 6.5 / 7.4 वापस लिए गए, और मध्य रेटिंग ने उसे सही ठहराया।ai_provider_openai) < 1.1.1 और 1.2.0–1.2.1 (1.2.1 का ऑडिट किया गया)सभी सत्यापन एक स्वामित्व वाले, नेटवर्क-पृथक सैंडबॉक्स में एक मॉक अपस्ट्रीम के विरुद्ध चले। असली OpenAI API को कभी कॉल नहीं किया गया। लीक ओरेकल केवल सिंथेटिक थे।
पुष्टि की गई (गतिशील रूप से प्रदर्शित):
settings.php पठन sha256 बाइट-मिलान (35,182 B) द्वारा पुष्ट — सामग्री कभी मुद्रित नहीं; इसलिए DB क्रेडेंशियल दायरे में हैं।असत्यापित (स्पष्ट रूप से दावा नहीं किया गया):
प्रभावित नहीं: TLS पर डिफ़ॉल्ट api.openai.com। host सेटिंग व्यवस्थापक / config-sync / डिप्लॉय
नियंत्रित है — एक रनटाइम गैर-व्यवस्थापक हमलावर इसे बदल नहीं सकता।
प्रतिक्रिया URL को एक सामान्य-उद्देश्य फ़ेच को पारित किया गया जो प्रत्येक पंजीकृत PHP स्ट्रीम
रैपर (file, php, http, data, phar, …) का सम्मान करता है। response_format डिफ़ॉल्ट रूप से url है, इसलिए कमजोर
शाखा डिफ़ॉल्ट पथ है। file:// PHP का डिफ़ॉल्ट फ़ाइलसिस्टम रैपर है और
allow_url_fopen द्वारा गेटेड नहीं है (पहले का "allow_url_fopen आवश्यक है" दावा गलत था और वापस ले लिया गया है)।
प्रिमिटिव को ठीक करें, केवल कॉल साइट को नहीं:
http/https है; रीडायरेक्ट अक्षम करें (एक 30x file:// पर उछल सकता है)।file://…, http://169.254.169.254/…, और एक 302→file://
रीडायरेक्ट — सभी अस्वीकार किए जाने चाहिए।पूर्ण दिशा: docs/fix-direction.md।
.
├── README.md # this file (English, canonical)
├── README_ja.md # Japanese mirror
├── SECURITY.md # reporting policy + responsible-disclosure disclaimer
├── .gitignore # blocks secrets / primary evidence from being committed
├── docs/
│ └── fix-direction.md # root-cause fix + variant hunt + minimal-diff sketch (EN)
├── reproducer/ # SAFE reproducer only (sandbox, mock upstream, benign oracle)
│ ├── README.md # how to stand up the network-isolated sandbox
│ ├── verdict.md # what "success" means: raw-byte match + 200-vs-403 + exit codes
│ ├── mock-openai-server.py # benign mock; default happy-path PNG, ssrf_demo → file:///etc/hostname only
│ └── docker-compose.yml # TEMPLATE: isolated Drupal sandbox + mock (you add the vulnerable target)
├── detections/
│ ├── README.md
│ ├── sigma/web-egress-to-internal-after-imagegen.yml
│ ├── sigma/php-sensitive-file-open.yml
│ ├── sentinel/imagegen-egress-correlation.kql
│ └── splunk/imagegen-content-type-mismatch.spl
└── timeline.md # disclosure timeline (single source of truth)
दस्तावेज़ वर्तमान में जापानी में हैं (
.ja.md); अंग्रेज़ी विहित अनुवाद एक TODO है। इस रिपॉजिटरी से रोके गए: आर्मिंग पेलोड और कोई भी टर्नकी फ़ाइल-पठन PoC। सार्वजनिकreproducer/एक एकल बेनाइन ओरेकल (/etc/hostname) का उपयोग करके मॉक के विरुद्ध दोष तंत्र प्रदर्शित करता है — कोई मनमाना-पथ पठन नहीं, कोईsettings.phpप्राप्ति नहीं, कोई IMDS नहीं। यह लाइव साइटों के विरुद्ध हथियार नहीं है। 1.1.1 / 1.2.2 पर अपडेट करें।
लक्ष्य: किसी शोधकर्ता को लाइव-लक्ष्य शोषण प्रदान किए बिना या रहस्य उजागर किए बिना दोष वर्ग की पुष्टि करने देना। सब कुछ ऑफ़लाइन चलता है।