
Apache Traffic Server 10.2.0 - عالية - عن بُعد - SSRF - ESI unix recvport
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · ats-esi-unix-recvport
الفئة: SSRF الوصول: عن بُعد
Apache Traffic Server 10.2.0 (b1df7334) - مؤسسة Apache للبرمجيات
يُبلّغ ESI FetchSM PluginVC عن منفذ الوجهة 0. يعامل الـ remap المنفذ 0 كـ UDS ويعيد كتابة مخطط التضمين إلى http+unix بحيث يطابق قواعد map_with_recv_port http+unix:// المخصصة فقط لمستمعي UDS. عندها يصل esi:include الظاهر للعموم مثل http://www.example.com/secret إلى أصل مقبس يونكس. يبقى GET /secret عبر TCP على خريطة TCP. أما CONTROL بدون خريطة منفذ استقبال يونكس فيضمّن أصل TCP مباشرةً (دون شاهد). مخطط التضمين http+unix نفسه يُعد BAD_SCHEME في مدقّق يوليو 2026.
esi.so النموذجي مع map واحدة لا يصل إلى هذا. يتطلب ESI بالإضافة إلى سطر واحد على الأقل من map_with_recv_port http+unix://. الإعداد الافتراضي remap_required: 1 و number_of_redirections: 0.
هذه ليست CVE-2026-58178 (القيم الحرفية الخاصة، file://، التعليقات المتداخلة، حد العمق مغلق).
| المعرّف | لا يوجد CVE بعد |
| الفئة | SSRF |
| الوصول | عن بُعد (HTTP غير مصادَق إلى مضيف ESI افتراضي) |
| CWE | CWE-918 |
| CVSS | عالٍ: 8.6 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N |
| المنتج | Apache Traffic Server |
| المتأثر | 10.2.0 (b1df7334b39a878971c376da849e8da4984918b6) ESI مع map_with_recv_port http+unix |
| المصادقة | لا شيء. إضافة ESI. خريطة يونكس لمنفذ الاستقبال. |
| الترخيص | GNU Affero GPL v3.0 |
| المختبر | 127.0.0.1:18750 / 18751 فقط. الصورة ats-10.2.0-lab:local. |
ثبّتُت الوسم 10.2.0، الالتزام b1df7334b39a878971c376da849e8da4984918b6. صورة مبنية من المصدر.
HTTP غير مصادَق إلى مضيف ESI افتراضي يحتوي remap الخاص به على map_with_recv_port http+unix://. تضمين src يمكن للمهاجم التأثير عليه (أصل مخترق، أو ESI مخزّن، أو $(HTTP_HEADER{...})).
| الطريقة | الهدف | الامتياز |
|---|---|---|
GET /page غير مصادَق مع ESI include http://www.example.com/secret | منفذ وجهة FetchSM 0 يطابق map_with_recv_port http+unix://www.example.com/ (RemapProcessor.cc:87-114، PluginVC.h:274-278) | استطلاع / SSRF (مُثبت مختبريًا): ضُمّن جسم العميل ATS-ESI-UNIX-RECVPORT-WITNESS من أصل UDS. |
| نفسه | كتابة من الدرجة الأولى / shell | السلامة: لا شيء. لا كتابة من الدرجة الأولى. لا shell. |
CONTROL GET /page بدون خريطة منفذ استقبال يونكس | تضمين أصل TCP | مغلق (مُثبت مختبريًا): يضمّن TCP-ORIGIN-OK، دون شاهد. |
عميل TCP GET /secret على مضيف poc الافتراضي | خريطة TCP | مغلق (مُثبت مختبريًا): TCP-ORIGIN-OK، دون شاهد. |
مُثبت مختبريًا مقابل مُستنتج: التحكم دون شاهد، صفحة poc مع شاهد، poc TCP /secret دون شاهد: مختبري. التأثير على src عبر ESI مخزّن أو توسيع الترويسة هو نموذج ثقة ESI الموثّق، ولم يُعَد إثباته هنا. تضمين المختبر هو http://www.example.com/secret ثابت على /page.
يتطلب: إضافة ESI مع map_with_recv_port http+unix. الافتراضي remap_required: 1. number_of_redirections: 0.
| السطح | المختبر |
|---|---|
| CONTROL بدون خريطة recv-port لـ unix | control-no-witness=yes، يُضمّن TCP-ORIGIN-OK |
عميل TCP GET /secret | poc-tcp-secret-no-witness=yes |
تضمين المخطط http+unix | المدقق BAD_SCHEME |
file://، والقيم الحرفية الخاصة، والتعليقات المتداخلة، وحد العمق | CVE-2026-58178 مغلق |
| قائمة حظر أسماء المضيفين بدون DNS | موثّق؛ معطّل عند remap_required: 1 |
إخفاق remap_required: 1 | 404 |
number_of_redirections: 0 | متابعة Location معطّلة |
PluginVCCore يصفّر passive_addr_struct. PluginHttpConnectInternal يضبط active_addr فقط (العميل الأصلي). يعمل HttpSM الخاص بـ FetchSM على PluginVC السلبي. ينسخ attach_client_session قيمة netvc->get_local_addr() إلى client_info.dst_addr. العنوان المحلي السلبي هو البنية المصفّرة. host_order_port() يساوي 0.
بحث إعادة التعيين (RemapProcessor.cc:87-114): المنفذ 0 يعني UDS. يُعاد كتابة المخطط http -> http+unix بحيث يطابق map_with_recv_port http+unix://. يوثّق اختبار الوحدة test_RemapRules.cc:237-240 ذلك.
مدقق يوليو يرفض تضمين المخطط http+unix. لكنه لا يرفض تضمين http:// أصبحت قفزته الداخلية في إعادة التعيين unix لأن منفذ الوجهة كان 0.
مسارات خاطئة: التعامل مع esi.so النموذجي + map واحدة على أنها هذه البقايا (CONTROL يثبت أنها ليست كذلك)؛ الإبلاغ عن قائمة حظر أسماء المضيفين بدون DNS (موثّق، معطّل عند remap_required=1)؛ الادعاء بأن file:// لا يزال يعمل؛ توقع أن يتبع TCP /secret خريطة unix.
مسرحية: صدفة عكسية. الأوراكل هو شاهد مُضمّن من أصل UDS، مع بقاء TCP /secret على TCP.
python3 ats-esi-unix-recvport-Abraxas-Labs.py
أو
cd lab
./run.sh
Loopback poc 127.0.0.1:18750، control 127.0.0.1:18751. مشروع Compose ats-esi-unix-recvport. الصورة ats-10.2.0-lab:local. الشاهد ATS-ESI-UNIX-RECVPORT-WITNESS. السطر الأخير:
SUCCESS ats-esi-unix-recvport control-no-witness=yes poc-page-witness=yes poc-tcp-secret-no-witness=yes ATS-ESI-UNIX-RECVPORT-WITNESS
لا تتعامل مع منفذ وجهة FetchSM PluginVC بالقيمة 0 على أنه تطابق منفذ استقبال UDS. أبقِ map_with_recv_port http+unix:// لمستمعي UDS الحقيقيين. يجب أن تبقى تضمينات ESI لـ http://host/ على خريطة TCP حتى عند وجود قاعدة منفذ استقبال http+unix لذلك المضيف.
b1df7334b39a878971c376da849e8da4984918b6)PluginVC.h عنوان سلبي مُصفَّرPluginHttpConnect.ccRemapProcessor.cc المنفذ 0 -> http+unixtest_RemapRules.cc