
Apache Traffic Server 10.2.0 - 높음 - 원격 - SSRF - redirect 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로 분류합니다. 루프백은 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을 놓침) |
| 도달 범위 | 원격 (팔로우가 켜진 후 오리진 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의 커밋 b1df7334를 고정했습니다. 랩은 루프백에서 소스 빌드된 ats-10.2.0-lab:local 리버스 프록시입니다. 루프백은 RETURN. 0.0.0.0은 400. 0.0.0.1은 FOLLOW. 팔로우 홉에서는 리맵이 건너뛰어집니다.
number_of_redirections=1 이후(또는 플러그인 TSHttpTxnRedirectUrlSet 이후) ATS가 Location: http://0.0.0.1/을 팔로우하게 만듭니다. 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로 팔로우. 클라이언트 본문 ATS-REDIRECT-ZERO-NET-WITNESS. 팔로우 홉에서는 리맵이 건너뛰어짐. |
동일 홉; Authorization / Cookie 복사됨 | HttpSM::redirect_request | 무결성 (추정): 해당 헤더들은 팔로우 홉에서 제거되지 않음. 쓰기로는 검증하지 않음. |
IPv4 매핑 ::ffff:0:0/96 | ::/0의 동일한 채우기 | 정찰 (추정): CONNECT 대상 거부의 형제. 검증하지 않음. |
랩 입증 vs 추정: 0.0.0.1 팔로우, 루프백 RETURN, 라우터블 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. Witness 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은 여전히 한 번의 홉을 강제합니다.
b1df7334b39a878971c376da849e8da4984918b6)src/proxy/http/HttpConfig.cc parse_redirect_actionssrc/records/RecordsConfig.cc number_of_redirections / redirect.actionssrc/api/InkAPI.cc TSHttpTxnRedirectUrlSet 한 번의 홉 증가configs/ip_allow.yaml.defaultIncludeUrlValidator 0.0.0.0/8 프라이빗 (CVE-2026-58178)