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。上下文保留该指针。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 的 peel b1df7334。实验环境是启用 Cripts 的 RelWithDebInfo 源码构建。CONTROL Client::URL 返回 200,进程保持运行。POC Host ats-poc SIGABRT 退出码 134。
访问一个在 do_remap 之后(实验环境中为 do_send_response)触碰 From/To URL 的重映射 cript。未认证 GET 即可。
| 方法 | 汇聚点 | 权限 |
|---|---|---|
通过调用 Remap::From::URL::Get / To::URL::Get 的 do_send_response cript,以未认证 GET 访问 Host ats-poc | 栈上 TSRemapRequestInfo(RemapPlugins.cc:41-65);rriValid() 解引用(Context.hpp:70-73);_initialize(Urls.cc:525-561) | 可用性(实验环境已证实): SIGABRT,退出码 134,连接重置。traffic_server 死亡。 |
| 同上 | SDK Fatal 中止 | 完整性: 非 RIP 控制。类别仍为崩溃。实验环境。 |
实验环境已证实 vs 推断: 进程死亡为实验环境(RelWithDebInfo SIGABRT)。未声称内存损坏可导致 RIP 控制。
前提条件: 构建 Cripts(ENABLE_CRIPTS=ON)且存在在 DoRemap 之后触碰 From/To URL 的重映射 cript。默认:无。
| 攻击面 | 实验环境 |
|---|---|
| 仅 CONTROL Client::URL | 200,进程保持运行 |
| File::Path::Rebase 沙箱 | 在此固定版本上关闭(CVE-2026-58177 issue 32) |
| Geo IPEndpoint sockaddr | 关闭 |
| Query-key 中止 | 关闭(缺失哈希被跳过) |
| 全局 cripts | rri == nullptr;rriValid() 失败关闭且不解引用 |
| 实例 OOB / Release 后 DoRemap | 关闭(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
回环地址 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 置空,就像 Lua 所做的那样。或者像 Client::URL 那样处理 From/To URL:在后续钩子中不要从 RRI 重新初始化。rriValid() 不得解引用已失效的结构体。如果重映射后的 From/To 是一项功能,则在 do_remap 期间将 mapFromUrl / mapToUrl 复制到自有的 MLoc 中。
在此之前,不要在 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、查询键中止、Client::URL MLoc