
Apache Traffic Server 10.2.0 – Hoch – Remote – Absturz – Cripts From/To URL UAF
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · ats-cripts-rri-uaf
Klasse: Absturz Reichweite: Remote
Apache Traffic Server 10.2.0 (b1df7334) - Apache Software Foundation
Cripts Remap::From / To URL lesen weiterhin den Stack TSRemapRequestInfo erneut, nachdem TSRemapDoRemap zurückkehrt. RemapPlugins allokiert rri auf dem Stack. Der Kontext behält den Zeiger. reset() verwirft die unique_ptrs; später speist Get() / Host::GetSV die tote RRI in TSUrlHostGet ein. Fatal: sdk_sanity_check_mbuffer, dann SIGABRT.
Client::URL wurde gepatcht, um dies nicht zu tun. Lua hat rri nach dem Remap geleert. Cripts From/To taten dies nicht. Standardmäßig ist ENABLE_CRIPTS aus. Keine Cripts bei Standard-Remap.
| ID | noch keine CVE |
| Klasse | Absturz (UAF der Stack-RRI) |
| Reichweite | Remote (unauthentifiziertes HTTP über ein From/To-Post-Remap-Cript) |
| CWE | CWE-416 |
| CVSS | Hoch: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H |
| Produkt | Apache Traffic Server |
| Betroffen | 10.2.0 (b1df7334b39a878971c376da849e8da4984918b6) Cripts From/To URL nach DoRemap |
| Auth | keine |
| Lizenz | GNU Affero GPL v3.0 |
| Labor | nur 127.0.0.1:18780 |
Ich habe das öffentliche Tag 10.2.0 festgelegt, Peel b1df7334. Das Labor ist ein RelWithDebInfo-Quellbuild mit aktivierten Cripts. CONTROL Client::URL 200, Prozess blieb aktiv. POC Host ats-poc SIGABRT Exit 134.
Ein Remap-Cript treffen, das die From/To-URL nach do_remap berührt (do_send_response im Labor). Ein unauthentifiziertes GET reicht aus.
| Methode | Senke | Berechtigung |
|---|---|---|
Unauthentifiziertes GET Host ats-poc durch ein do_send_response-Cript, das Remap::From::URL::Get / To::URL::Get aufruft | Stack TSRemapRequestInfo (RemapPlugins.cc:41-65); rriValid() Deref (Context.hpp:70-73); _initialize (Urls.cc:525-561) | Verfügbarkeit (im Labor nachgewiesen): SIGABRT, Exit 134, Verbindungsreset. traffic_server stirbt. |
| Gleich | SDK Fatal Abort | Integrität: keine RIP-Kontrolle. Klasse bleibt Absturz. Labor. |
Im Labor nachgewiesen vs. abgeleitet: Prozessende ist Labor (RelWithDebInfo SIGABRT). Speicherkorruption bis RIP wird nicht behauptet.
Erfordert: Cripts gebaut (ENABLE_CRIPTS=ON) und ein Remap-Cript, das die From/To-URL nach DoRemap berührt. Standard: nein.
| Oberfläche | Labor |
|---|---|
| CONTROL nur Client::URL | 200, Prozess blieb aktiv |
| File::Path::Rebase Jail | geschlossen bei diesem Pin (CVE-2026-58177 Issue 32) |
| Geo IPEndpoint sockaddr | geschlossen |
| Query-Key-Abbruch | geschlossen (fehlender Hash übersprungen) |
| Globale Cripts | rri == nullptr; rriValid() schlägt ohne Deref fehl-schließend fehl |
| Instanz-OOB / DoRemap-after-Release | geschlossen (CVE-2026-58177) |
Standard-Remap / ENABLE_CRIPTS aus | Rest gilt nicht |
Nicht CVE-2026-58177 wie offengelegt. Lua hat rri nach dem Remap geleert; Cripts From/To taten dies nicht.
python3 ats-cripts-rri-uaf-Abraxas-Labs.py
oder
cd lab
./run.sh
Loopback 127.0.0.1:18780. Compose-Projekt ats-cripts-rri-uaf. RelWithDebInfo-Image. Witness ATS-CRIPTS-RRI-UAF-WITNESS. Letzte Zeile:
SUCCESS ats-cripts-rri-uaf control-http=200 control-alive=yes poc-crash=sigabrt poc-http=None reset=1 ATS-CRIPTS-RRI-UAF-WITNESS
Setzen Sie den Context rri auf null, wenn TSRemapDoRemap zurückkehrt, so wie es Lua tut. Oder behandeln Sie From/To URL wie Client::URL: Initialisieren Sie sie bei späteren Hooks nicht erneut aus RRI. rriValid() darf keine tote Struktur dereferenzieren. Kopieren Sie mapFromUrl / mapToUrl während do_remap in eigene MLocs, falls From/To nach dem Remap eine Funktion ist.
Bis dahin werten Sie %{FROM-URL:...} / %{TO-URL:...} (oder das Ausleihen dieser URL-Objekte) nicht in do_post_remap / do_send_request / do_read_response / do_send_response / do_cache_lookup aus.
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-Abbruch, Client::URL MLoc