
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · ats-redirect-zero-net
クラス: SSRF 到達範囲: リモート
Apache Traffic Server 10.2.0 (b1df7334) - Apache Software Foundation
redirect.actions のデフォルト routable:follow は 0.0.0.0/8(INADDR_ANY を除く)を FOLLOW に分類します。ループバックは 127.0.0.0/8 と ::1 のみです。デフォルトの CONNECT 宛先拒否と ESI IncludeUrlValidator はすでに 0.0.0.0/8 を拒否しています。しかし follow-redirect がこれを再び開放します。
デフォルトの number_of_redirections は 0 であるため、follow が有効になるまでマップは評価されません。TSHttpTxnRedirectUrlSet を呼び出すロード済みプラグインは、カウンタが 0 であっても 1 ホップを強制します(CVE-2026-58189 のカウンタリセットは修正済みです)。
| ID | CVE 未割当 |
| クラス | SSRF(follow-redirect が 0.0.0.0/8 を検出できない) |
| 到達範囲 | リモート(follow 有効化後のオリジン Location) |
| CWE | CWE-918 |
| CVSS | High: 8.6 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N |
| 製品 | Apache Traffic Server |
| 影響対象 | 10.2.0 (b1df7334b39a878971c376da849e8da4984918b6) redirect.actions の routable フィル |
| 認証 | なし。follow が有効である必要があります(ラボでは number_of_redirections=1)。 |
| ライセンス | GNU Affero GPL v3.0 |
| ラボ | 127.0.0.1:18790 のみ |
公開タグ 10.2.0 のピール b1df7334 に固定しました。ラボはループバック上のソースビルドによる ats-10.2.0-lab:local リバースプロキシです。ループバックは RETURN。0.0.0.0 は 400。0.0.0.1 は FOLLOW。follow ホップではリマップがスキップされます。
number_of_redirections=1 の後(またはプラグインの TSHttpTxnRedirectUrlSet の後)に、ATS に Location: http://0.0.0.1/ を follow させます。Linux では 0.0.0.1 はローカルです。
| 手法 | シンク | 権限 |
|---|---|---|
未認証 GET、オリジンが 302 Location: http://0.0.0.1:18080/w を返し number_of_redirections=1 | parse_redirect_actions の ROUTABLE フィル(HttpConfig.cc:1782-1787)、OSDNSLookup アクションマップ | 偵察 / SSRF(ラボ実証済み): ATS は ROUTABLE として follow します。クライアントボディは ATS-REDIRECT-ZERO-NET-WITNESS。follow ホップではリマップがスキップされます。 |
同一ホップ、Authorization / Cookie がコピーされる | HttpSM::redirect_request | 完全性(推測): これらのヘッダは follow ホップで除去されません。書き込みとしては検証していません。 |
IPv4 マップド ::ffff:0:0/96 | ::/0 の同じフィル | 偵察(推測): CONNECT 宛先拒否の類似ケース。検証していません。 |
ラボ実証済みと推測の区別: 0.0.0.1 の follow、ループバックの RETURN、routable の FOLLOW、INADDR_ANY の 400 はラボで確認済みです。IPv4 マップドと認証情報の転送は推測です。
必要条件: redirect.actions の routable:follow(コンパイル時のデフォルト)と number_of_redirections > 0、またはリダイレクト URL を設定するプラグイン。デフォルトのカウンタは 0 です。
| 面 | ラボ |
|---|---|
ループバック 127.0.0.1 | RETURN。クライアントは LOOPBACK-ONLY-SECRET を一度も見ませんでした。302 のまま。 |
0.0.0.0 INADDR_ANY | アクションマップの前に 400 |
デフォルト number_of_redirections=0 | routable:follow は評価されない |
RFC1918 / CGNAT / リンクローカル / ::1 | DEFAULT フィルにより RETURN |
CONNECT 宛先拒否 0.0.0.0/8 | デフォルトの ip_allow.yaml にすでに存在 |
ESI include バリデータ 0.0.0.0/8 | すでにプライベート(CVE-2026-58178) |
| プラグインリダイレクトのカウンタリセット | 修正済み(CVE-2026-58189) |
CVE-2026-58189ではない。CVE-2026-58178でもない。これらの範囲はCONNECTとESIで言及されていた。Follow-redirectはそれらを取得していない。
python3 ats-redirect-zero-net-Abraxas-Labs.py
または
cd lab
./run.sh
ループバック 127.0.0.1:18790。Compose プロジェクト ats-redirect-zero-net。イメージ ats-10.2.0-lab:local。ウィットネス ATS-REDIRECT-ZERO-NET-WITNESS。最終行:
SUCCESS ats-redirect-zero-net follow-0.0.0.1=yes loopback-return=yes routable-follow=yes inaddr-any=400 remap_required=1 ATS-REDIRECT-ZERO-NET-WITNESS
デフォルトの CONNECT 宛先拒否と ESI の IncludeUrlValidator がすでに行っているのと同じ方法で、0.0.0.0/8 と IPv4 マップド ::ffff:0:0/96 をマークしてください。ループバックは 127/8 だけではありません。ats_is_ip_any が 0.0.0.0 を拒否するだけでは不十分です。
それまでの間は、number_of_redirections を 0 のままにするか、ルーティング可能なものが RETURN になるように redirect.actions を設定してください。プラグインの TSHttpTxnRedirectUrlSet は依然として 1 ホップを強制します。
b1df7334b39a878971c376da849e8da4984918b6)src/proxy/http/HttpConfig.cc parse_redirect_actionssrc/records/RecordsConfig.cc number_of_redirections / redirect.actionssrc/api/InkAPI.cc TSHttpTxnRedirectUrlSet の 1 ホップ増加configs/ip_allow.yaml.defaultIncludeUrlValidator の 0.0.0.0/8 プライベート (CVE-2026-58178)