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é.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-57836-Confluent_Kafka — Vérification du certificat TLS désactivée pour HashiCorp Vault KMS dans confluent-kafka | Kitploit
Outils/GitHubGitHub/rahulreddykarne/cve-2026-57836-confluent_kafka
Outils DéfensifsAnalyse des VulnérabilitésVirtualisation de SécuritéSécurité WebCryptographieSécurité CloudApprentissage et Éducation
GitHubrahulreddykarne/cve-2026-57836-confluent_kafka

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 →

CVE-2026-57836-Confluent_Kafka

Vérification du certificat TLS désactivée pour HashiCorp Vault KMS dans confluent-kafka

Voir le dépôt
il y a 1 jourPas encore vérifié
Partager

CVE-2026-57836 : Vérification du certificat TLS désactivée pour HashiCorp Vault KMS dans confluent-kafka

Sévérité : Élevée, CVSS 3.1 7.4

Vecteur (v3.1) : CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N

Affecté : confluent-kafka >= 2.8.0, <= 2.14.2

Corrigé dans : 2.15.0

CWE : CWE-295 (Validation de certificat incorrecte)

Composant : confluent_kafka/schema_registry/rules/encryption/hcvault/hcvault_client.py

Rapporté par : Rahul Karne

CNA : VulnCheck


Résumé

Le client HashiCorp Vault KMS dans confluent-kafka code en dur verify=False lors de la construction de son , désactivant la vérification du certificat TLS pour les connexions HTTPS à Vault effectuées via les règles de chiffrement de champs du Schema Registry.

hvac.Client

Le code vulnérable se trouve dans :

root@kitploit:~
confluent_kafka/schema_registry/rules/encryption/hcvault/hcvault_client.py

Le client affecté est initialisé comme suit :

root@kitploit:~
self._client = hvac.Client(
    url=vault_url,
    token=token,
    namespace=ns,
    verify=False
)

Comme verify=False est inconditionnel, le client accepte les certificats TLS non fiables, y compris les certificats auto-signés ou contrôlés par un attaquant.

Un attaquant positionné sur le réseau, capable d'intercepter ou de rediriger le trafic Vault de l'application, peut usurper l'identité du serveur Vault, capturer les identifiants d'authentification Vault et renvoyer des réponses Vault/KMS falsifiées.

L'intégration HCVault affectée expose la configuration pour les jetons Vault, les espaces de noms et les identifiants AppRole, mais les versions affectées ne fournissent aucune configuration prise en charge de bundle CA ni mécanisme équivalent pour restaurer la vérification des certificats.


Impact

Un attaquant disposant d'une position d'homme du milieu sur le réseau entre l'application et HashiCorp Vault peut :

  1. Présenter un certificat TLS contrôlé par l'attaquant ou auto-signé.
  2. Faire accepter ce certificat car la vérification est désactivée.
  3. Capturer le matériel d'authentification Vault, notamment :
    • X-Vault-Token
    • AppRole role_id
    • AppRole secret_id
  4. Injecter des réponses Vault falsifiées.
  5. Interférer avec les opérations d'encapsulation ou de désencapsulation de clés KMS utilisées par les règles de chiffrement du Schema Registry.

Cela peut compromettre la confidentialité et l'intégrité des données protégées par le flux de travail KMS adossé à Vault.


Portée

confluent-kafka est le client Python officiel de Confluent pour Apache Kafka.

La vulnérabilité affecte spécifiquement les déploiements utilisant :

root@kitploit:~
Règles de chiffrement du Schema Registry
        ↓
Intégration HCVault KMS
        ↓
URI de clé hcvault://

La population affectée est donc plus restreinte que l'ensemble des utilisateurs de confluent-kafka.

Cependant, la fonctionnalité affectée est sensible en matière de sécurité, car ces déploiements reposent sur HashiCorp Vault pour la gestion des clés cryptographiques et le chiffrement au niveau des champs.


Détail technique

HcVaultKmsClient.__init__() analyse une URI de clé hcvault://, détermine l'URL de base de Vault et crée un hvac.Client.

Dans les versions affectées, y compris 2.14.2, le code pertinent est :

root@kitploit:~
self._client = hvac.Client(
    url=vault_url,
    token=token,
    namespace=ns,
    verify=False
)

if role_id and secret_id and self._client is not None:
    self._client.auth.approle.login(
        role_id=role_id,
        secret_id=secret_id
    )

La bibliothèque hvac s'appuie en fin de compte sur la pile TLS de requests de Python.

Définir :

root@kitploit:~
verify=False

indique au client de ne pas valider le certificat TLS du serveur distant.

Par conséquent, des certificats qui seraient normalement rejetés peuvent être acceptés, y compris les certificats qui sont :

  • Auto-signés
  • Expirés
  • Émis pour un nom d'hôte incorrect
  • Signés par une autorité non fiable
  • Générés par un attaquant

Cela affecte les deux chemins d'authentification pris en charge.

Authentification par jeton

Lorsque l'authentification par jeton est utilisée, le jeton Vault est envoyé via l'en-tête HTTP :

root@kitploit:~
X-Vault-Token

Si un attaquant réussit à usurper le point de terminaison Vault, le serveur contrôlé par l'attaquant peut recevoir ce jeton.

Authentification AppRole

Lorsque l'authentification AppRole est utilisée, le client envoie :

root@kitploit:~
role_id
secret_id

à :

root@kitploit:~
/v1/auth/approle/login

Un MITM réussi peut donc capturer les deux identifiants AppRole.


Configuration TLS manquante

Le pilote HCVault affecté lit la configuration, notamment :

root@kitploit:~
token.id
namespace
approle.role.id
approle.secret.id

ainsi que les variables d'environnement VAULT_* pertinentes.

Cependant, les versions affectées n'exposent pas de configuration permettant aux opérateurs de :

  • Fournir un bundle CA personnalisé.
  • Restaurer la vérification du certificat serveur.
  • Configurer des racines PKI privées de confiance.
  • Configurer un comportement équivalent de vérification TLS sécurisée.

Par conséquent, les applications utilisant l'intégration affectée ne peuvent pas restaurer la vérification TLS via la configuration normale du paquet.


Cause racine

Le paquet désactive explicitement la vérification du certificat serveur TLS au lieu de s'appuyer sur la valeur par défaut sécurisée.

La construction vulnérable est effectivement :

root@kitploit:~
hvac.Client(..., verify=False)

plutôt que :

root@kitploit:~
hvac.Client(..., verify=True)

ou simplement :

root@kitploit:~
hvac.Client(...)

où la vérification est activée par défaut.

La désactivation de la vérification des certificats supprime l'authentification du serveur de la connexion TLS.

Bien que la connexion reste chiffrée, le client ne dispose d'aucun mécanisme fiable pour déterminer s'il communique avec le serveur Vault légitime.

Cela crée la condition nécessaire à une attaque par homme du milieu sur le réseau.


Conditions préalables à l'exploitation

Une exploitation réussie nécessite :

  1. L'application utilise une version affectée de confluent-kafka :

    • 2.8.0 à 2.14.2.
  2. L'application utilise les règles de chiffrement du Schema Registry avec l'intégration HCVault KMS.

  3. La clé KMS configurée utilise le schéma :

root@kitploit:~
hcvault://
  1. L'attaquant obtient une position réseau capable d'intercepter, rediriger ou usurper le trafic entre l'application et Vault.

Les exemples possibles incluent :

  • Usurpation DNS
  • Usurpation ARP
  • Infrastructure réseau compromise
  • Infrastructure Wi-Fi ou routeur malveillant
  • Manipulation de routes/BGP
  • Proxy de sortie malveillant
  • Segment réseau compromis

Aucun privilège au niveau de l'application ni interaction de la victime n'est requis une fois la position MITM nécessaire obtenue.


Preuve de concept

poc_confluent_kafka.py démontre le problème contre une wheel confluent-kafka 2.14.2 décompressée localement.

La PoC utilise :

  • Un serveur HTTPS auto-signé local simulant HashiCorp Vault.
  • Des identifiants Vault factices.
  • L'implémentation réelle vulnérable de HcVaultKmsClient.
  • Aucune infrastructure Kafka réelle.
  • Aucune infrastructure Vault réelle.
  • Aucun identifiant de production.

La preuve de concept contient cinq modes.

ModeDescription
certGénère un certificat auto-signé et une clé pour le Vault simulé local.
serverDémarre le Vault HTTPS simulé sur https://localhost:8443 et affiche les requêtes reçues.
controlContrôle sécurisé utilisant verify=True ; doit rejeter le certificat auto-signé avec CERTIFICATE_VERIFY_FAILED.
tokenCharge le HcVaultKmsClient vulnérable et démontre qu'il accepte le certificat non fiable.
approleExerce le chemin d'authentification AppRole vulnérable et démontre l'exposition de role_id et secret_id.

Configuration

Installez les dépendances de la PoC :

root@kitploit:~
pip install hvac cryptography

Placez la wheel vulnérable décompressée à côté de la PoC :

root@kitploit:~
confluent_kafka-2.14.2-cp310-cp310-win_amd64/
└── confluent_kafka/
    └── schema_registry/
        └── ...

La PoC importe HcVaultKmsClient directement depuis le paquet 2.14.2 décompressé.

Elle remplace les dépendances non liées telles que tink, permettant de tester la construction vulnérable du client Vault sans nécessiter un environnement Kafka ou KMS complet.


Exécution

Utilisez deux terminaux.

Terminal 1 — Démarrer le Vault simulé

root@kitploit:~
python poc_confluent_kafka.py server

Le Vault HTTPS simulé écoute sur :

root@kitploit:~
https://localhost:8443

en utilisant un certificat auto-signé.

Terminal 2 — Contrôle sécurisé

Démontrez d'abord qu'une validation correcte du certificat rejette le serveur auto-signé :

root@kitploit:~
python poc_confluent_kafka.py control

Résultat attendu :

root@kitploit:~
EXPECTED TLS failure: CERTIFICATE_VERIFY_FAILED
-> verify=True correctly rejected the self-signed cert

Chemin de jeton vulnérable

Exécutez :

root@kitploit:~
python poc_confluent_kafka.py token

Le HcVaultKmsClient vulnérable se connecte malgré le fait que le serveur présente un certificat non fiable.

Le serveur simulé peut observer le jeton Vault :

root@kitploit:~
GET /v1/auth/token/lookup-self
X-Vault-Token: CNA-DEMO-VAULT-TOKEN
X-Vault-Namespace: cna-demo-namespace

Chemin AppRole vulnérable

Exécutez :

root@kitploit:~
python poc_confluent_kafka.py approle

Le Vault simulé reçoit :

root@kitploit:~
POST /v1/auth/approle/login
{"role_id": "CNA-DEMO-ROLE-ID", "secret_id": "CNA-DEMO-SECRET-ID"}

Le contraste entre le mode control sécurisé et les modes token / approle vulnérables démontre que le comportement résulte du :

root@kitploit:~
verify=False

codé en dur, plutôt que de l'environnement de test.


Remédiation

Le correctif sécurisé de base consiste à permettre à hvac d'effectuer la vérification du certificat :

root@kitploit:~
hvac.Client(
    url=vault_url,
    token=token,
    namespace=ns
)

Comme la vérification TLS est activée par défaut, la désactiver explicitement est inutile.

Une implémentation robuste devrait :

  1. Activer la vérification du certificat TLS par défaut.

  2. Prendre en charge un bundle CA configurable, par exemple :

root@kitploit:~
ssl.ca.location
  1. Prendre en charge une configuration CA spécifique à Vault telle que :
root@kitploit:~
VAULT_CACERT
  1. Prendre en charge les certificats clients pour les environnements utilisant TLS mutuel.

  2. Empêcher une valeur de configuration vide ou falsy de désactiver silencieusement la vérification du certificat.

  3. Ajouter des tests de régression confirmant que les certificats auto-signés et autrement non fiables sont rejetés par défaut.


Version corrigée

La vulnérabilité est corrigée dans :

root@kitploit:~
confluent-kafka 2.15.0

Les versions affectées sont :

root@kitploit:~
2.8.0
à
2.14.2

Dans 2.15.0, le comportement du client Vault a été modifié afin que la vérification TLS soit activée par défaut.

L'implémentation mise à jour introduit également une configuration liée à TLS, notamment :

root@kitploit:~
ssl.ca.location
VAULT_CACERT
ssl.certificate.location
ssl.key.location

Cela permet aux déploiements utilisant une infrastructure PKI privée de fournir une configuration CA de confiance et de certificat client sans désactiver la vérification du certificat.


CVSS

La vulnérabilité est notée :

root@kitploit:~
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N

Score CVSS 3.1 : 7.4 — Élevée

Détail du vecteur

AV:N — Réseau

La communication Vault vulnérable se produit sur une connexion réseau.

AC:H — Complexité d'attaque élevée

L'attaquant doit obtenir une position MITM sur le réseau ou rediriger autrement la connexion Vault.

Il s'agit d'un prérequis important, ce qui explique pourquoi la vulnérabilité est classée Élevée plutôt que Critique.

PR:N — Aucun privilège requis

L'attaquant n'a pas besoin de privilèges au sein de l'application affectée.

UI:N — Aucune interaction utilisateur

Aucune interaction utilisateur n'est requise après que l'attaquant a obtenu la position réseau nécessaire.

S:U — Portée inchangée

L'impact reste dans le périmètre de sécurité de l'application affectée et de son interaction avec Vault.

C:H — Impact élevé sur la confidentialité

Les jetons Vault ou les identifiants AppRole peuvent être exposés à l'attaquant.

I:H — Impact élevé sur l'intégrité

L'attaquant peut usurper l'identité de Vault et renvoyer des réponses Vault/KMS falsifiées.

A:N — Aucun impact sur la disponibilité

Aucun impact direct sur la disponibilité n'a été démontré.


Statut

  • Affecté : 2.8.0 à 2.14.2
  • Corrigé : 2.15.0
  • CWE : CWE-295
  • CVE : En attente / pas encore attribué

Le verify=False codé en dur existait depuis l'introduction de l'intégration HCVault jusqu'à la version 2.14.2.

Le comportement de sécurité a été corrigé dans 2.15.0.


Chronologie de divulgation

  • YYYY-MM-DD — Signalé à Confluent.
  • 2026-06-26 — Correctif de vérification TLS sécurisée fusionné en amont.
  • Version corrigée publiée sous 2.15.0.
  • Attribution CVE en attente.

Crédit

Découvert et rapporté par Rahul Karne.


Références

  • confluent-kafka-python
    https://github.com/confluentinc/confluent-kafka-python

  • confluent-kafka sur PyPI
    https://pypi.org/project/confluent-kafka/

  • Client Python hvac de HashiCorp
    https://hvac.readthedocs.io/

  • Authentification AppRole de HashiCorp Vault
    https://developer.hashicorp.com/vault/api-docs/auth/approle

  • CWE-295 — Validation de certificat incorrecte
    https://cwe.mitre.org/data/definitions/295.html

  • Documentation Python TLS / vérification de certificat
    https://docs.python.org/3/library/ssl.html#ssl-security


À propos

Ce dépôt documente une découverte de sécurité en divulgation coordonnée et fournit une preuve de concept inoffensive et autonome.

La PoC opère entièrement contre un serveur Vault simulé local utilisant des identifiants factices.

Elle n'interagit pas avec un véritable HashiCorp Vault, Kafka, Schema Registry, une infrastructure de production ou de véritables identifiants.

Le matériel est fourni à des fins de recherche défensive en sécurité et d'éducation.


Presse

Demandes des médias : [email protected]. PoC complète (serveur attaquant, archive de traversée, application victime) et détails techniques supplémentaires disponibles sur demande.

Télécharger l’outil