
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 Software Foundation
Cripts Remap::From / To URL अभी भी TSRemapDoRemap के लौटने के बाद स्टैक TSRemapRequestInfo को फिर से पढ़ते हैं। RemapPlugins स्टैक पर rri आवंटित करता है। Context उस पॉइंटर को रखता है। reset() unique_ptrs को छोड़ देता है; बाद में Get() / Host::GetSV मृत RRI को TSUrlHostGet में भेजता है। Fatal: sdk_sanity_check_mbuffer फिर SIGABRT।
Client::URL को ऐसा न करने के लिए पैच किया गया था। Lua ने रीमैप के बाद rri साफ़ किया। Cripts From/To ने नहीं किया। डिफ़ॉल्ट ENABLE_CRIPTS बंद है। स्टॉक रीमैप पर कोई cripts नहीं।
| ID | अभी तक कोई CVE नहीं |
| वर्ग | क्रैश (स्टैक RRI का UAF) |
| पहुँच | रिमोट (From/To पोस्ट-रीमैप cript के माध्यम से अनऑथ HTTP) |
| 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) DoRemap के बाद Cripts From/To URL |
| प्रमाणीकरण | कोई नहीं |
| लाइसेंस | GNU Affero GPL v3.0 |
| लैब | केवल 127.0.0.1:18780 |
मैंने सार्वजनिक टैग 10.2.0 को पिन किया और b1df7334 निकाला। लैब Cripts चालू के साथ RelWithDebInfo स्रोत बिल्ड है। CONTROL Client::URL 200, प्रक्रिया चालू रही। POC Host ats-poc SIGABRT exit 134।
ऐसे रीमैप cript को हिट करें जो do_remap के बाद From/To URL को छूता है (लैब में do_send_response)। अनऑथ GET पर्याप्त है।
| विधि | सिंक | विशेषाधिकार |
|---|---|---|
do_send_response cript के माध्यम से अनऑथ GET Host ats-poc जो Remap::From::URL::Get / To::URL::Get कॉल करता है | स्टैक TSRemapRequestInfo (RemapPlugins.cc:41-65); rriValid() डीरेफ (Context.hpp:70-73); _initialize (Urls.cc:525-561) | उपलब्धता (लैब-प्रमाणित): SIGABRT, exit 134, कनेक्शन रीसेट। traffic_server मर जाता है। |
| वही | SDK Fatal abort | अखंडता: RIP नियंत्रण नहीं। वर्ग क्रैश ही रहता है। लैब। |
लैब-प्रमाणित बनाम अनुमानित: प्रक्रिया मृत्यु लैब है (RelWithDebInfo SIGABRT)। RIP तक मेमोरी करप्शन का दावा नहीं किया गया है।
आवश्यक: Cripts बिल्ड (ENABLE_CRIPTS=ON) और एक रीमैप cript जो DoRemap के बाद From/To URL को छूता है। डिफ़ॉल्ट: नहीं।
| सतह | लैब |
|---|---|
| केवल CONTROL Client::URL | 200, प्रक्रिया चालू रही |
| File::Path::Rebase जेल | इस पिन पर बंद (CVE-2026-58177 issue 32) |
| Geo IPEndpoint sockaddr | बंद |
| Query-key abort | बंद (गुम हैश छोड़ा गया) |
| ग्लोबल cripts | rri == nullptr; rriValid() डीरेफ के बिना fail-closes |
| 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
जब TSRemapDoRemap लौटता है तो Context rri को null कर दें, जैसे Lua करता है। या From/To URL को Client::URL की तरह व्यवहार करें: बाद के hooks पर RRI से पुनः-आरंभ न करें। rriValid() को किसी मृत struct को dereference नहीं करना चाहिए। यदि post-remap From/To कोई सुविधा है, तो do_remap के दौरान mapFromUrl / mapToUrl को स्वामित्व वाले MLocs में कॉपी करें।
तब तक, do_post_remap / do_send_request / do_read_response / do_send_response / do_cache_lookup पर %{FROM-URL:...} / %{TO-URL:...} का मूल्यांकन न करें (या उन URL ऑब्जेक्ट्स को उधार न लें)।
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