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_ptr を破棄し、その後の 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 | High: 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 の後に From/To URL に触れるリマップ cript(ラボでは do_send_response)を踏ませます。未認証の GET で十分です。
| 手法 | シンク | 権限 |
|---|---|---|
Remap::From::URL::Get / To::URL::Get を呼ぶ do_send_response cript を経由した、Host ats-poc への未認証 GET | スタック上の 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 と同様に null にする。または From/To URL を Client::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