Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
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-47103-python-statemachine-rce — Python StateMachine 3.0.0 < 3.2.0 RCE via une évaluation non sécurisée de SCXML <data expr> et une injection Python eval(). | Kitploit
Outils/GitHubGitHub/saiteja-erukude/cve-2026-47103-python-statemachine-rce
Génération de PayloadsAnalyse des VulnérabilitésExploitationTests d'Intrusion
GitHubsaiteja-erukude/cve-2026-47103-python-statemachine-rce

CVE-2026-47103-python-statemachine-rce

Python StateMachine 3.0.0 < 3.2.0 RCE via une évaluation non sécurisée de SCXML <data expr> et une injection Python eval().

Voir le dépôt

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
il y a 4 joursPas encore vérifié

CVE-2026-47103 : Exécution de code à distance dans Python StateMachine via injection eval() SCXML

Sévérité : Critique, CVSS 4.0 9.3, CVSS 3.1 9.8 (attribués par VulnCheck, la CNA)

Vecteur (v4.0) : CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/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:N/S:U/C:H/I:H/A:H

Versions affectées : Python StateMachine >= 3.0.0, < 3.2.0

Corrigé dans : 3.2.0

CWE : CWE-95 (Neutralisation inappropriée des directives dans le code évalué dynamiquement, injection eval) ; correspond également à CWE-94 (Contrôle inapproprié de la génération de code, injection de code)

Signalé par : Sai Teja Erukude

CNA : VulnCheck

Publié : 17 juin 2026


Résumé

Les versions 3.0.0 antérieures à 3.2.0 de Python StateMachine contiennent une vulnérabilité d'exécution de code à distance dans le chemin de traitement SCXML.

Le SCXMLProcessor accepte les documents SCXML et conserve les attributs d'expression tels que <data expr="...">. Dans les versions vulnérables, ces chaînes d'expression passent par le chemin de traitement du modèle de données SCXML et atteignent finalement la fonction eval() intégrée de Python sans sandboxing.

Un attaquant capable de fournir ou d'influencer un document SCXML peut placer du code Python dans un attribut <data expr="...">. Lorsque l'application consommatrice analyse le fichier SCXML et démarre le processeur, l'expression est évaluée dans le contexte du processus Python hôte.

Impact

Un attaquant peut exécuter du code Python arbitraire si une application vulnérable traite du contenu SCXML contrôlé par l'attaquant.

L'exposition peut être distante ou locale selon la façon dont l'application consommatrice reçoit les documents SCXML. Les chemins d'entrée à risque comprennent :

  • Fichiers SCXML téléversés.
  • Définitions de flux de travail ou de machine à états contrôlées par l'utilisateur.
  • Fichiers de configuration chargés depuis des emplacements non fiables.
  • Contenu SCXML fourni par des plugins, des extensions ou des intégrations.
  • Toute fonctionnalité exposée au réseau qui accepte ou génère du SCXML à partir d'une entrée utilisateur.

Une exploitation réussie peut permettre :

  • Lire ou modifier des fichiers accessibles au processus hôte.
  • Accéder aux variables d'environnement et aux secrets de l'application.
  • Appeler des services internes accessibles depuis l'hôte.
  • Perturber ou remplacer le comportement de l'application.

Chemin affecté

La chaîne d'appels vulnérable signalée à VulnCheck est :

root@kitploit:~
SCXMLProcessor.parse_scxml_file()
SCXMLProcessor.process_definition()
create_datamodel_action_callable()
_create_dataitem_callable()
_eval()
eval()

Le problème est déclenché lorsqu'un élément du modèle de données SCXML analysé est évalué lors du démarrage du processeur.

Détail technique

Le flux de contrôle vulnérable présente deux défaillances de frontière de confiance :

  1. Le processeur SCXML accepte le texte d'expression d'un document SCXML.
  2. Le texte d'expression est évalué avec eval() Python brut.

La preuve de concept utilise un attribut <data expr="..."> car ce chemin s'exécute pendant SCXMLProcessor.start(). Passer un dictionnaire globals vide à eval() ne désactive pas les fonctions intégrées de Python ; Python peut toujours injecter des fonctions intégrées utilisables dans le contexte d'évaluation. Par conséquent, une expression peut accéder à __import__ et exécuter du code Python.

Une charge utile de preuve inoffensive écrit un fichier marqueur local :

root@kitploit:~
<data id="x" expr="__import__('pathlib').Path(...).write_text(...)"/>

Le marqueur n'est créé qu'après l'analyse du document SCXML et l'évaluation de l'expression du modèle de données par start().

Preuve de concept

package_builder.py génère un fichier SCXML local contrôlé par l'attaquant à l'emplacement malicious-charts/data_expr_start.scxml. Le fichier généré contient une charge utile <data expr> bénigne qui écrit marker.txt dans le répertoire de cette preuve de concept.

run_poc.py n'installe aucun hook et ne modifie pas le package cible. Il importe le package publié python-statemachine==3.1.2, analyse le fichier SCXML généré avec SCXMLProcessor.parse_scxml_file(...), démarre le processeur et affiche les preuves du marqueur avant/après.

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

root@kitploit:~
python -m venv .venv
.venv\Scripts\activate
python -m pip install -r requirements.txt
python run_poc.py

Preuves attendues sur les versions vulnérables :

root@kitploit:~
statemachine_version: 3.1.2
installed_package: True
data_marker_before_start: False
data_marker_after_start: True
marker_contents:
python_statemachine_scxml_data_expr_eval_triggered
success: True

Le comportement important est que marker.txt n'existe pas avant start(), puis existe ensuite, ce qui prouve que l'expression SCXML s'est exécutée dans le processus Python hôte.

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

root@kitploit:~
python_statemachine_scxml_data_expr_eval_triggered

Elle ne lance pas de shell, ne se connecte pas à un service réseau, ne lit pas de secrets, ne supprime pas de données et ne modifie pas de fichiers en dehors du répertoire de la preuve de concept.

Remédiation

Mettez à niveau vers Python StateMachine 3.2.0 ou une version ultérieure.

Un correctif durable devrait éviter d'évaluer le texte d'expression SCXML contrôlé par l'attaquant avec la fonction Python eval() brute. Les approches plus sûres incluent :

  • Remplacer eval() brut par un évaluateur d'expressions contraint.
  • Traiter l'évaluation complète des expressions Python comme un mode explicite d'entrée de confiance.
  • Désactiver par défaut l'évaluation Python pour le SCXML provenant de sources non fiables.
  • Rejeter ou assainir les attributs d'expression SCXML dangereux avant le traitement.

Si une mise à niveau immédiate n'est pas possible :

  • Ne traitez pas les documents SCXML provenant d'utilisateurs non fiables.
  • N'exposez pas les fonctionnalités de téléversement SCXML ou de définition de flux de travail à des clients non authentifiés.
  • Validez les fichiers SCXML avant qu'ils n'atteignent SCXMLProcessor.
  • Exécutez le traitement SCXML dans un environnement restreint et isolé avec des privilèges minimaux.

Chronologie de divulgation

DateÉvénement
22 mai 2026Vulnérabilité soumise à VulnCheck
26 mai 2026VulnCheck a initié la divulgation ; CVE-2026-47103 provisoirement attribué
17 juin 2026CVE-2026-47103 publié

Crédit

Découverte et signalée par Sai Teja Erukude, coordonnée via VulnCheck.

Références

  • Fiche CVE : https://www.cve.org/CVERecord?id=CVE-2026-47103
  • NVD : https://nvd.nist.gov/vuln/detail/CVE-2026-47103
  • Avis VulnCheck : https://www.vulncheck.com/advisories/python-statemachine-rce-via-scxml-eval-injection
  • Avis GitHub : https://github.com/fgmacedo/python-statemachine/security/advisories/GHSA-v4jc-pm6r-3vj8
  • Notes de version de Python StateMachine 3.2.0 : https://github.com/fgmacedo/python-statemachine/releases/tag/v3.2.0
  • Projet Python StateMachine : https://github.com/fgmacedo/python-statemachine
Télécharger l’outil