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-10036-speechbrain-rce — SpeechBrain < 1.1.1 exécution de code à distance (RCE) via les métadonnées de point de contrôle, due à un analyseur PyYAML non sécurisé de CKPT.yaml. | Kitploit
Outils/GitHubGitHub/saiteja-erukude/cve-2026-10036-speechbrain-rce
Analyse des VulnérabilitésAnalyse de CodeExploitationArticles et RechercheApprentissage et Éducation
GitHubsaiteja-erukude/cve-2026-10036-speechbrain-rce

CVE-2026-10036-speechbrain-rce

SpeechBrain < 1.1.1 exécution de code à distance (RCE) via les métadonnées de point de contrôle, due à un analyseur PyYAML non sécurisé de CKPT.yaml.

Voir le dépôt
44il y a 19 joursPas 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-10036 : Exécution de code arbitraire dans SpeechBrain via l'analyse de CKPT.yaml

Sévérité : Élevée, CVSS 4.0 8.7, CVSS 3.1 8.8 (attribuée par VulnCheck, le CNA)

Vecteur (v4.0) : CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

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

Affecté : SpeechBrain < 1.1.1

Corrigé dans : 1.1.1 / commit 22a6166

CWE : CWE-502 (Désérialisation de données non fiables)

Découvert et signalé par : Sai Teja Erukude

Publié : 27 août 2026


Résumé

SpeechBrain avant 1.1.1 utilise le chargeur non sécurisé de PyYAML lors de l'analyse des métadonnées de point de contrôle CKPT.yaml pendant la récupération de point de contrôle.

Un attaquant capable de fournir ou de modifier un répertoire de point de contrôle SpeechBrain peut placer un fichier CKPT.yaml malveillant à l'intérieur d'un répertoire de point de contrôle CKPT*. Lorsqu'une victime appelle Checkpointer.recover_if_possible(), SpeechBrain liste les points de contrôle candidats et analyse chaque fichier de métadonnées candidat avec :

yaml.load(fi, Loader=yaml.Loader)

Parce que yaml.Loader prend en charge les balises de construction d'objets Python telles que !!python/object/apply, des métadonnées de checkpoint contrôlées par un attaquant peuvent exécuter du code Python lors de la découverte des checkpoints.

Le checkpoint malveillant n'a pas besoin d'être sélectionné ou restauré. L'exécution de code se produit pendant que SpeechBrain énumère les checkpoints candidats.

Impact

Un attaquant peut exécuter du code Python arbitraire dans le contexte du processus Python exécutant SpeechBrain.

Cela peut affecter les flux de travail où les utilisateurs téléchargent, décompressent, reprennent ou exécutent un entraînement/une inférence à partir de répertoires de checkpoints, d'artefacts de modèles ou d'archives non fiables.

Selon le processus hôte, cela peut permettre :

  • La lecture ou la modification de fichiers accessibles au processus.
  • L'accès aux variables d'environnement et aux secrets applicatifs.
  • L'appel à des services internes joignables depuis l'hôte.
  • La perturbation des tâches d'entraînement, d'inférence ou d'automatisation.

Détail technique

Le composant affecté est le flux de récupération/listage des checkpoints de SpeechBrain :

Checkpointer.recover_if_possible()
  -> list_checkpoints()
  -> _construct_checkpoint_objects()

Lors du listage des checkpoints, SpeechBrain parcourt les répertoires enfants nommés CKPT* qui contiennent CKPT.yaml. Chaque fichier de métadonnées candidat est analysé avant la sélection finale du checkpoint.

L'analyse non sécurisée se produit dans speechbrain.utils.checkpoints.checkpoints.py :

meta = yaml.load(fi, Loader=yaml.Loader)

Le PoC crée deux checkpoints :

  • CKPT+poisoned-metadata : un checkpoint malveillant plus ancien dont le CKPT.yaml contient une charge utile d'application d'objet PyYAML.
  • CKPT+benign-newer : un checkpoint bénin plus récent qui devrait être sélectionné par ancienneté.

Le checkpoint bénin est sélectionné, mais les métadonnées du checkpoint malveillant s'exécutent tout de même lors du listage des candidats. Cela démontre une exécution de code au moment de l'analyse des métadonnées, indépendamment de la restauration du checkpoint.

Preuve de concept

package_builder.py crée la disposition de checkpoint contrôlée par l'attaquant.

run_poc.py exécute la validation, appelle Checkpointer.recover_if_possible(), et affiche les preuves d'exécution.

À exécuter uniquement dans un environnement de test local :

python -m venv .venv
.venv\Scripts\activate
python -m pip install -r requirements.txt
python -B run_poc.py

Preuves attendues sur les versions vulnérables :

speechbrain_version: 1.1.0
installed_package: True
recovery_error: None
benign_checkpoint_selected: True
marker_before_recovery: False
marker_after_recovery: True
marker_contents:
speechbrain_checkpoint_yaml_loader_rce_triggered
success: True

L'élément de preuve important est que benign_checkpoint_selected: True et marker_after_recovery: True apparaissent ensemble. Cela montre que l'ancien checkpoint malveillant n'a pas été sélectionné pour la récupération, mais que ses métadonnées ont tout de même été analysées et exécutées pendant que SpeechBrain listait les checkpoints candidats.

La charge utile est intentionnellement inoffensive. Elle écrit uniquement cette chaîne de marqueur locale :

speechbrain_checkpoint_yaml_loader_rce_triggered

Il ne lance pas de shell, ne se connecte à aucun service réseau, ne lit aucun secret, ne supprime aucune donnée et ne modifie aucun fichier en dehors du répertoire PoC.

Remédiation

Mettez à niveau vers SpeechBrain 1.1.1 ou une version ultérieure.

Le correctif durable dans le code consiste à utiliser le chargeur sécurisé de PyYAML pour les métadonnées de point de contrôle :

yaml.safe_load(fi)

ou :

yaml.load(fi, Loader=yaml.SafeLoader)

Les métadonnées de point de contrôle n'ont besoin que de valeurs scalaires telles que unixtime et end-of-epoch, donc la construction d'objets Python ne devrait pas être activée pour ce chemin d'analyse.

Si un correctif ou une mise à niveau immédiate n'est pas disponible :

  • N'utilisez pas de répertoires de points de contrôle, d'artefacts de modèles ou d'archives provenant de sources non fiables.
  • Isolez les tâches d'entraînement et d'inférence SpeechBrain avec des privilèges minimaux.
  • Validez ou rejetez les balises et champs inattendus dans CKPT.yaml.
  • Évitez de reprendre automatiquement à partir de répertoires de points de contrôle fournis en externe.

Crédit

Découvert et signalé par Sai Teja Erukude.

La divulgation a été coordonnée via VulnCheck.

Références

  • Enregistrement CVE : https://www.cve.org/CVERecord?id=CVE-2026-10036
  • Avis VulnCheck : https://www.vulncheck.com/advisories/speechbrain-arbitrary-code-execution-via-ckpt-yaml-parsing
  • Notes de version : https://github.com/speechbrain/speechbrain/releases/tag/v1.1.1
  • Pull request : https://github.com/speechbrain/speechbrain/pull/3067
  • Commit du correctif : https://github.com/speechbrain/speechbrain/commit/22a616646a493871401461f80b2d5cf564cb2850
  • Documentation PyYAML : https://pyyaml.org/wiki/PyYAMLDocumentation
  • Procédure pas à pas locale : exploit_walkthrough.md
Télécharger l’outil