
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 Alcance: Remoto
Apache Traffic Server 10.2.0 (b1df7334) - Apache Software Foundation
Cripts Remap::From / To URL ainda relê a pilha TSRemapRequestInfo após TSRemapDoRemap retornar. RemapPlugins aloca rri na pilha. O contexto mantém o ponteiro. reset() descarta os unique_ptrs; depois Get() / Host::GetSV alimenta o RRI morto em TSUrlHostGet. Fatal: sdk_sanity_check_mbuffer e então SIGABRT.
Client::URL foi corrigido para não fazer isso. Lua limpou rri após o remap. Cripts From/To não. O padrão ENABLE_CRIPTS está desligado. Sem cripts no remap padrão.
| ID | ainda sem CVE |
| Classe | Crash (UAF de RRI na pilha) |
| Alcance | Remoto (HTTP não autenticado através de um cript From/To pós-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 |
| Produto | Apache Traffic Server |
| Afetado | 10.2.0 (b1df7334b39a878971c376da849e8da4984918b6) Cripts From/To URL após DoRemap |
| Autenticação | nenhuma |
| Licença | GNU Affero GPL v3.0 |
| Laboratório | apenas 127.0.0.1:18780 |
Fixe a tag pública 10.2.0 peel b1df7334. O laboratório é uma compilação de código-fonte RelWithDebInfo com Cripts ativado. CONTROL Client::URL 200, processo permaneceu ativo. POC Host ats-poc SIGABRT saída 134.
Atingir um cript de remap que acessa a URL From/To após do_remap (do_send_response no laboratório). Um GET não autenticado é suficiente.
| Método | Sink | Privilégio |
|---|---|---|
GET não autenticado Host ats-poc através de um cript do_send_response que chama Remap::From::URL::Get / To::URL::Get | pilha TSRemapRequestInfo (RemapPlugins.cc:41-65); desreferência rriValid() (Context.hpp:70-73); _initialize (Urls.cc:525-561) | Disponibilidade (comprovado em laboratório): SIGABRT, saída 134, conexão redefinida. traffic_server morre. |
| O mesmo | Abort Fatal do SDK | Integridade: sem controle de RIP. A classe permanece Crash. Laboratório. |
Comprovado em laboratório vs inferido: a morte do processo é de laboratório (RelWithDebInfo SIGABRT). Corrupção de memória até RIP não é alegada.
Requer: Cripts compilado (ENABLE_CRIPTS=ON) e um cript de remap que acessa a URL From/To após DoRemap. Padrão: não.
| Superfície | Laboratório |
|---|---|
| Apenas CONTROL Client::URL | 200, processo permaneceu ativo |
| Jail File::Path::Rebase | fechado neste pin (CVE-2026-58177 issue 32) |
| sockaddr Geo IPEndpoint | fechado |
| abort de chave de consulta | fechado (hash ausente ignorado) |
| cripts globais | rri == nullptr; rriValid() falha de forma segura sem desreferência |
| OOB de instância / DoRemap-após-Release | fechado (CVE-2026-58177) |
remap padrão / ENABLE_CRIPTS desligado | o resíduo não se aplica |
Não é CVE-2026-58177 conforme divulgado. Lua limpou rri após o remap; Cripts From/To não.
python3 ats-cripts-rri-uaf-Abraxas-Labs.py
ou
cd lab
./run.sh
Loopback 127.0.0.1:18780. Projeto Compose ats-cripts-rri-uaf. Imagem RelWithDebInfo. Testemunha ATS-CRIPTS-RRI-UAF-WITNESS. Última linha:
SUCCESS ats-cripts-rri-uaf control-http=200 control-alive=yes poc-crash=sigabrt poc-http=None reset=1 ATS-CRIPTS-RRI-UAF-WITNESS
Anule o Context rri quando TSRemapDoRemap retornar, da mesma forma que o Lua faz. Ou trate From/To URL como Client::URL: não reinicialize a partir do RRI em hooks posteriores. rriValid() não deve desreferenciar uma struct morta. Copie mapFromUrl / mapToUrl para MLocs próprios durante do_remap se o From/To pós-remap for um recurso.
Até então, não avalie %{FROM-URL:...} / %{TO-URL:...} (nem empreste esses objetos URL) em 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, aborto de query-key, Client::URL MLoc