
Apache Traffic Server 10.2.0 - عالية - عن بُعد - انهيار - Cripts From/To URL UAF
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · ats-cripts-rri-uaf
الفئة: انهيار الوصول: عن بُعد
Apache Traffic Server 10.2.0 (b1df7334) - مؤسسة Apache البرمجية
لا يزال Cripts Remap::From / To URL يعيد قراءة TSRemapRequestInfo من المكدس بعد عودة TSRemapDoRemap. يخصص RemapPlugins المتغير rri على المكدس. يحتفظ السياق بالمؤشر. يُسقط reset() مؤشرات unique_ptr؛ ثم يُغذي Get() / Host::GetSV اللاحقان الـ RRI الميت في TSUrlHostGet. ثم Fatal: sdk_sanity_check_mbuffer ثم SIGABRT.
تم تصحيح Client::URL كي لا يفعل ذلك. مسح Lua المتغير rri بعد إعادة التعيين. لم يفعل Cripts From/To ذلك. الإعداد الافتراضي ENABLE_CRIPTS معطّل. لا توجد cripts على إعادة التعيين القياسية.
| المعرّف | لا يوجد CVE بعد |
| الفئة | انهيار (UAF لـ RRI على المكدس) |
| الوصول | عن بُعد (HTTP غير مصادق عبر cript من نوع From/To بعد إعادة التعيين) |
| CWE | CWE-416 |
| CVSS | مرتفع: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H |
| المنتج | Apache Traffic Server |
| المتأثر | 10.2.0 (b1df7334b39a878971c376da849e8da4984918b6) Cripts From/To URL بعد DoRemap |
| المصادقة | لا شيء |
| الترخيص | GNU Affero GPL v3.0 |
| المختبر | 127.0.0.1:18780 فقط |
ثبّتت وسمًا عامًا 10.2.0 peel b1df7334. المختبر عبارة عن بناء من المصدر بنمط RelWithDebInfo مع تفعيل Cripts. CONTROL Client::URL أعاد 200، وبقي العملية قائمة. POC Host ats-poc أعاد SIGABRT بخروج 134.
استهداف cript إعادة تعيين يلمس From/To URL بعد do_remap (do_send_response في المختبر). يكفي GET غير مصادق.
| الطريقة | المصب | الامتياز |
|---|---|---|
GET غير مصادق مع Host ats-poc عبر cript من نوع do_send_response يستدعي Remap::From::URL::Get / To::URL::Get | TSRemapRequestInfo على المكدس (RemapPlugins.cc:41-65)؛ إلغاء مرجع rriValid() (Context.hpp:70-73)؛ _initialize (Urls.cc:525-561) | التوافر (مُثبت مختبريًا): SIGABRT، خروج 134، إعادة تعيين الاتصال. يموت traffic_server. |
| نفسه | إجهاض Fatal في SDK | السلامة: ليس تحكمًا في RIP. تبقى الفئة انهيار. المختبر. |
مُثبت مختبريًا مقابل مستنتج: موت العملية مختبري (RelWithDebInfo SIGABRT). لا يُدّعى تلف الذاكرة المؤدي إلى RIP.
يتطلب: بناء Cripts (ENABLE_CRIPTS=ON) وcript إعادة تعيين يلمس From/To URL بعد DoRemap. افتراضيًا: لا.
| السطح | المختبر |
|---|---|
| CONTROL Client::URL فقط | 200، بقيت العملية قائمة |
| سجن File::Path::Rebase | مغلق على هذا التثبيت (CVE-2026-58177 issue 32) |
| Geo IPEndpoint sockaddr | مغلق |
| إجهاض مفتاح الاستعلام | مغلق (تخطي التجزئة المفقودة) |
| Cripts العامة | rri == nullptr؛ يفشل rriValid() مغلقًا دون إلغاء مرجع |
| Instance OOB / DoRemap-after-Release | مغلق (CVE-2026-58177) |
إعادة التعيين القياسية / ENABLE_CRIPTS معطّل | لا ينطبق المتبقي |
ليس CVE-2026-58177 كما أُفصح عنه. مسح Lua المتغير rri بعد إعادة التعيين؛ لم يفعل Cripts From/To ذلك.
python3 ats-cripts-rri-uaf-Abraxas-Labs.py
أو
cd lab
./run.sh
Loopback 127.0.0.1:18780. مشروع Compose ats-cripts-rri-uaf. صورة RelWithDebInfo. الشاهد ATS-CRIPTS-RRI-UAF-WITNESS. السطر الأخير:
SUCCESS ats-cripts-rri-uaf control-http=200 control-alive=yes poc-crash=sigabrt poc-http=None reset=1 ATS-CRIPTS-RRI-UAF-WITNESS
اجعل rri في Context فارغًا (null) عند عودة TSRemapDoRemap، بالطريقة التي تفعلها Lua. أو تعامل مع From/To URL مثل Client::URL: لا تُعِد التهيئة من RRI في الخطافات (hooks) اللاحقة. يجب ألا يقوم rriValid() بإلغاء الإشارة إلى بنية (struct) ميتة. انسخ mapFromUrl / mapToUrl إلى MLocs مملوكة أثناء do_remap إذا كان From/To بعد إعادة التعيين (post-remap) ميزة مطلوبة.
حتى ذلك الحين، لا تُقيّم %{FROM-URL:...} / %{TO-URL:...} (أو تستعير كائنات URL تلك) في do_post_remap / do_send_request / do_read_response / do_send_response / do_cache_lookup.
b1df7334b39a878971c376da849e8da4984918b6)src/proxy/http/remap/RemapPlugins.ccinclude/cripts/Epilogue.hppsrc/cripts/Urls.cc Remap::From::URL / To::URLinclude/cripts/Context.hpp rriValid../، Geo sockaddr، إحباط مفتاح الاستعلام (query-key abort)، Client::URL MLoc