
Apache Traffic Server 10.2.0 — высокий уровень — удалённо — SSRF — перенаправление 0.0.0.0/8
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. Loopback — это только 127.0.0.0/8 и ::1. Запрет назначения CONNECT по умолчанию и ESI IncludeUrlValidator уже отклоняют 0.0.0.0/8. Следование редиректам вновь открывает его.
Значение по умолчанию number_of_redirections равно 0, поэтому карта не вычисляется, пока не включено следование. Загруженный плагин, вызывающий TSHttpTxnRedirectUrlSet, всё равно принудительно выполняет один переход, даже когда счётчик равен 0 (сброс счётчика CVE-2026-58189 закрыт).
| ID | CVE пока нет |
| Класс | SSRF (следование редиректам пропускает 0.0.0.0/8) |
| Доступ | Удалённый (origin Location после включения следования) |
| CWE | CWE-918 |
| CVSS | Высокий: 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 |
| Аутентификация | нет. Следование должно быть включено (number_of_redirections=1 в лаборатории). |
| Лицензия | GNU Affero GPL v3.0 |
| Лаборатория | только 127.0.0.1:18790 |
Я зафиксировал публичный тег 10.2.0 peel b1df7334. Лаборатория — это собранный из исходников обратный прокси ats-10.2.0-lab:local на loopback. Loopback RETURN. 0.0.0.0 400. 0.0.0.1 FOLLOW. Remap пропускается на переходе следования.
Заставить ATS проследовать на Location: http://0.0.0.1/ после number_of_redirections=1 (или после плагина TSHttpTxnRedirectUrlSet). В Linux 0.0.0.1 является локальным.
| Метод | Приёмник | Привилегия |
|---|---|---|
Неаутентифицированный GET; origin 302 Location: http://0.0.0.1:18080/w с number_of_redirections=1 | заполнение ROUTABLE в parse_redirect_actions (HttpConfig.cc:1782-1787); карта действий OSDNSLookup | Разведка / SSRF (доказано в лаборатории): ATS следует как ROUTABLE. Тело клиента ATS-REDIRECT-ZERO-NET-WITNESS. Remap пропускается на переходе следования. |
Тот же переход; копируются Authorization / Cookie | HttpSM::redirect_request | Целостность (предположительно): эти заголовки не удаляются на переходе следования. Не проверялось как запись. |
IPv4-mapped ::ffff:0:0/96 | то же заполнение ::/0 | Разведка (предположительно): аналог запрета назначения CONNECT. Не проверялось. |
Доказано в лаборатории vs предположительно: следование на 0.0.0.1, loopback RETURN, routable FOLLOW, INADDR_ANY 400 — это лаборатория. IPv4-mapped и пересылка учётных данных — предположительно.
Требуется: redirect.actions routable:follow (скомпилированное значение по умолчанию) и number_of_redirections > 0, либо плагин, устанавливающий URL редиректа. Счётчик по умолчанию равен 0.
| Поверхность | Лаборатория |
|---|---|
Loopback 127.0.0.1 | RETURN. Клиент так и не увидел LOOPBACK-ONLY-SECRET. Осталось 302. |
0.0.0.0 INADDR_ANY | 400 до карты действий |
По умолчанию number_of_redirections=0 | routable:follow не вычисляется |
RFC1918 / CGNAT / link-local / ::1 | RETURN через заполнение DEFAULT |
Запрет назначения CONNECT 0.0.0.0/8 | уже в ip_allow.yaml по умолчанию |
Валидатор включения ESI 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
Loopback 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
Помечайте 0.0.0.0/8 и IPv4-mapped ::ffff:0:0/96 так же, как это уже делают запрет назначения CONNECT по умолчанию и ESI IncludeUrlValidator. Loopback — это не только 127/8. Отклонения 0.0.0.0 функцией ats_is_ip_any недостаточно.
До тех пор оставляйте number_of_redirections равным 0 или настраивайте redirect.actions так, чтобы routable было RETURN. Плагин TSHttpTxnRedirectUrlSet всё равно принудительно выполняет один переход.
b1df7334b39a878971c376da849e8da4984918b6)src/proxy/http/HttpConfig.cc parse_redirect_actionssrc/records/RecordsConfig.cc number_of_redirections / redirect.actionssrc/api/InkAPI.cc TSHttpTxnRedirectUrlSet one-hop bumpconfigs/ip_allow.yaml.defaultIncludeUrlValidator 0.0.0.0/8 private (CVE-2026-58178)