
Apache Traffic Server 10.2.0 - Alta - Remoto - Crash - Cripts From/To URL UAF
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · ats-cripts-rri-uaf
Classe: Crash Portata: Remota
Apache Traffic Server 10.2.0 (b1df7334) - Apache Software Foundation
Cripts Remap::From / To URL rilegge ancora lo stack TSRemapRequestInfo dopo che TSRemapDoRemap è ritornato. RemapPlugins alloca rri sullo stack. Il contesto ne conserva il puntatore. reset() elimina gli unique_ptr; successivamente Get() / Host::GetSV passa l'RRI morto a TSUrlHostGet. Fatal: sdk_sanity_check_mbuffer quindi SIGABRT.
Client::URL è stato corretto per non farlo. Lua azzerava rri dopo il remap. Cripts From/To non lo faceva. Il valore predefinito di ENABLE_CRIPTS è disattivato. Nessun cripts sul remap standard.
| ID | nessuna CVE al momento |
| Classe | Crash (UAF di RRI sullo stack) |
| Portata | Remota (HTTP non autenticato tramite un cript From/To post-remap) |
| CWE | CWE-416 |
| CVSS | Alto: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H |
| Prodotto | Apache Traffic Server |
| Affetto | 10.2.0 (b1df7334b39a878971c376da849e8da4984918b6) Cripts From/To URL dopo DoRemap |
| Autenticazione | nessuna |
| Licenza | GNU Affero GPL v3.0 |
| Lab | solo 127.0.0.1:18780 |
Ho fissato il tag pubblico 10.2.0 peel b1df7334. Il lab è una build da sorgente RelWithDebInfo con Cripts attivo. CONTROL Client::URL 200, il processo è rimasto attivo. POC Host ats-poc SIGABRT uscita 134.
Colpire un cript di remap che accede all'URL From/To dopo do_remap (do_send_response nel lab). Basta una GET non autenticata.
| Metodo | Sink | Privilegio |
|---|---|---|
GET non autenticata Host ats-poc tramite un cript do_send_response che chiama Remap::From::URL::Get / To::URL::Get | stack TSRemapRequestInfo (RemapPlugins.cc:41-65); deref di rriValid() (Context.hpp:70-73); _initialize (Urls.cc:525-561) | Disponibilità (dimostrata nel lab): SIGABRT, uscita 134, connessione resettata. traffic_server termina. |
| Idem | Abort Fatal dell'SDK | Integrità: nessun controllo di RIP. La classe resta Crash. Lab. |
Dimostrato nel lab vs dedotto: la morte del processo è dimostrata nel lab (RelWithDebInfo SIGABRT). Non si rivendica corruzione di memoria fino al controllo di RIP.
Richiede: Cripts compilato (ENABLE_CRIPTS=ON) e un cript di remap che accede all'URL From/To dopo DoRemap. Predefinito: no.
| Superficie | Lab |
|---|---|
| Solo CONTROL Client::URL | 200, processo rimasto attivo |
| Jail di File::Path::Rebase | chiusa su questo pin (CVE-2026-58177 issue 32) |
| sockaddr di Geo IPEndpoint | chiusa |
| Abort su chiave di query | chiusa (hash mancante saltato) |
| Cripts globali | rri == nullptr; rriValid() fallisce in modo sicuro senza deref |
| OOB di istanza / DoRemap-after-Release | chiusa (CVE-2026-58177) |
Remap standard / ENABLE_CRIPTS disattivato | il residuo non si applica |
Non è CVE-2026-58177 come divulgata. Lua azzerava rri dopo il remap; Cripts From/To non lo faceva.
python3 ats-cripts-rri-uaf-Abraxas-Labs.py
o
cd lab
./run.sh
Loopback 127.0.0.1:18780. Progetto Compose ats-cripts-rri-uaf. Immagine RelWithDebInfo. Witness ATS-CRIPTS-RRI-UAF-WITNESS. Ultima riga:
SUCCESS ats-cripts-rri-uaf control-http=200 control-alive=yes poc-crash=sigabrt poc-http=None reset=1 ATS-CRIPTS-RRI-UAF-WITNESS
Impostare a null il rri del Context quando TSRemapDoRemap ritorna, come fa Lua. Oppure trattare From/To URL come Client::URL: non reinizializzare da RRI negli hook successivi. rriValid() non deve dereferenziare una struct morta. Copiare mapFromUrl / mapToUrl in MLoc di proprietà durante do_remap se il From/To post-remap è una funzionalità.
Fino ad allora, non valutare %{FROM-URL:...} / %{TO-URL:...} (né prendere in prestito quegli oggetti URL) su 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, abort della query-key, Client::URL MLoc