Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
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.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-33186 — Bypass de Política de Autorização RBAC do gRPC-Go via Ausência da Barra em `:path` (Auth Bypass) | Kitploit
Ferramentas/GitHubGitHub/johanneslks/cve-2026-33186
Autenticação e AutorizaçãoExploraçãoExploração de Aplicações WebTestes de PenetraçãoAprendizado e EducaçãoSegurança de API
GitHubjohanneslks/cve-2026-33186

CVE-2026-33186

Bypass de Política de Autorização RBAC do gRPC-Go via Ausência da Barra em `:path` (Auth Bypass)

Ver Repositório
15há 2 mesesAinda não revisado

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

CVE-2026-33186

Bypass da Política de Autorização RBAC do gRPC-Go via Barra :path Ausente (Auth Bypass)

Descrição

O pacote authz em google.golang.org/grpc implementa autorização RBAC no nível do SDK usando regras de negação e permissão correspondidas contra o pseudo-cabeçalho :path.

O transporte do servidor HTTP/2 armazena o valor bruto de :path do cliente sem validar que ele começa com /.

A camada de roteamento (handleStream) normaliza o caminho antes do despacho, mas o mecanismo RBAC lê o valor pré-normalização do contexto via grpc.Method(ctx).

Regras de negação são escritas como /Service/Method (com barra inicial). Enviar :path = "Service/Method" (sem barra) faz com que a regra de negação erre na comparação do primeiro caractere. A permissão padrão é acionada e o método protegido é executado.

Qualquer servidor gRPC que use authz.NewStatic() ou authz.NewFileWatcher() com regras de negação está vulnerável. Um cliente HTTP/2 bruto (Python h2, curl --http2 ou qualquer escritor de quadros personalizado) é suficiente para explorar isso — sem credenciais, sem estado anterior.

Verificação ao vivo contra grpc-go v1.71.0 retornou status gRPC 0 (OK) em um AdminMethod listado como negado quando a barra inicial foi omitida, enquanto a chamada idêntica com a barra canônica retornou status 7 (PermissionDenied).

Afetado: google.golang.org/grpc < v1.79.3. Corrigido na v1.79.3 (PR #8981).

Uso

root@kitploit:~
# Install the Python HTTP/2 dependency:
pip install h2

# Against an existing vulnerable gRPC server:
python3 poc.py --host <HOST> --port <PORT>
python3 poc.py --host <HOST> --port <PORT> --service MyService --method SecretMethod

# When TCP destination and HTTP/2 authority differ:
python3 poc.py --host <VHOST> --connect-host <IP> --port 80 \
  --service MyService --method SecretMethod

# Canonical upstream malformed path:
python3 poc.py --host <HOST> --port <PORT> --path-mode no-slash

# Reverse-proxy deployments that preserve a double slash before grpc_pass:
python3 poc.py --host <VHOST> --connect-host <IP> --port 80 \
  --path-mode double-slash --service MyService --method SecretMethod

# Literal :path value when you already know the backend path shape:
python3 poc.py --host <VHOST> --connect-host <IP> --path-mode custom \
  --attack-path '//MyService/SecretMethod'

# Save a decoded successful attack response for follow-on manual use:
python3 poc.py --host <HOST> --port <PORT> --output-response /tmp/grpc-response.txt

--host controla o host :authority HTTP/2 a menos que --authority seja definido. --connect-host controla o destino TCP. Isso é útil para configurações de host virtual ou proxy reverso onde o IP acessível é diferente da autoridade do backend roteado.

O problema canônico do grpc-go é --path-mode no-slash. double-slash e custom são auxiliares genéricos para ambientes onde um proxy encaminha uma forma de caminho malformado diferente para o backend vulnerável.

Requisitos

  • Atacante: Python 3.8+, h2 (pip install h2)
  • Alvo: servidor gRPC-Go usando pacote authz com regras de negação

Arquivos

ArquivoDescrição
poc.pyPoC em Python — envia 3 chamadas HTTP/2 brutas (linha de base/ataque/controle) para provar o bypass
README.mdDetalhes da vulnerabilidade, exemplos de uso e referências
LICENSELicença GPLv3

Referências

  • https://github.com/grpc/grpc-go/security/advisories/GHSA-p77j-4mvh-x3m3
  • https://github.com/grpc/grpc-go/pull/8981

Aviso Legal

Este projeto é lançado sob a GNU GPLv3.

É fornecido para pesquisa de segurança defensiva, educação e testes autorizados. Não use este código contra sistemas ou serviços sem permissão explícita do proprietário.

O uso não autorizado pode violar a lei aplicável. Os autores não concedem permissão para testar sistemas de terceiros e não são responsáveis pelo uso indevido.

Consulte o arquivo LICENSE para termos de garantia e responsabilidade.

Baixar ferramenta