Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-33186 — Bypass de la política de autorización RBAC en gRPC-Go mediante la barra `:path` faltante (Bypass de autenticación) | Kitploit
Herramientas/GitHubGitHub/johanneslks/cve-2026-33186
Autenticación y AutorizaciónExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y EducaciónSeguridad de APIs
GitHubjohanneslks/cve-2026-33186

CVE-2026-33186

Bypass de la política de autorización RBAC en gRPC-Go mediante la barra `:path` faltante (Bypass de autenticación)

Ver Repositorio
112hace 3 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2026-33186

Bypass de la política de autorización RBAC de gRPC-Go mediante la ausencia de la barra inicial en :path (Bypass de autenticación)

Descripción

El paquete authz de google.golang.org/grpc implementa la autorización RBAC a nivel de SDK mediante reglas de denegación y de permiso que se comparan con la pseudo-cabecera :path. El transporte del servidor HTTP/2 almacena el valor bruto de :path procedente del cliente sin validar que comience con /. La capa de enrutamiento (handleStream) normaliza la ruta antes del despacho, pero el motor RBAC lee el valor previo a la normalización desde el contexto mediante grpc.Method(ctx).

Las reglas de denegación se escriben como /Service/Method (con barra inicial). Enviar :path = "Service/Method" (sin barra) provoca que la regla de denegación no coincida en la comparación del primer carácter. Se activa la regla de permiso por defecto y el método protegido se ejecuta.

Cualquier servidor gRPC que utilice authz.NewStatic() o authz.NewFileWatcher() con reglas de denegación es vulnerable. Un cliente HTTP/2 bruto (Python h2, curl --http2 o cualquier escritor de tramas personalizado) es suficiente para explotarlo: no se necesitan credenciales ni estado previo.

La verificación en vivo contra grpc-go v1.71.0 devolvió el estado gRPC 0 (OK) en un AdminMethod incluido en la lista de denegación cuando se omitió la barra inicial, mientras que la llamada idéntica con la barra canónica devolvió el estado 7 (PermissionDenied).

Versiones afectadas: google.golang.org/grpc < v1.79.3. Corregido en v1.79.3 (PR #8981).

Uso

# 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 el host :authority de HTTP/2 a menos que se especifique --authority. --connect-host controla el destino TCP. Esto es útil para configuraciones de host virtual o proxy inverso donde la IP accesible es diferente de la autoridad del backend enrutado.

El caso canónico de grpc-go es --path-mode no-slash. double-slash y custom son utilidades genéricas para entornos en los que un proxy reenvía una forma de ruta malformada distinta al backend vulnerable.

Requisitos

  • Atacante: Python 3.8+, h2 (pip install h2)
  • Objetivo: servidor gRPC-Go que utilice el paquete authz con reglas de denegación

Archivos

ArchivoDescripción
poc.pyPoC en Python: envía 3 llamadas HTTP/2 brutas (baseline/attack/control) para demostrar el bypass
README.mdDetalles de la vulnerabilidad, ejemplos de uso y referencias
LICENSELicencia GPLv3

Referencias

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

Aviso legal

Este proyecto se publica bajo la GNU GPLv3.

Se proporciona para investigación de seguridad defensiva, educación y pruebas autorizadas. No utilice este código contra sistemas o servicios sin el permiso explícito del propietario.

El uso no autorizado puede infringir la legislación aplicable. Los autores no otorgan permiso para probar sistemas de terceros y no se hacen responsables del mal uso.

Consulte el archivo LICENSE para conocer los términos de garantía y responsabilidad.

Descargar herramienta