Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-47103-python-statemachine-rce — Python StateMachine 3.0.0 < 3.2.0 RCE durch unsichere Auswertung von SCXML-<data-expr> und Injektion in Python eval(). | Kitploit
Tools/GitHubGitHub/saiteja-erukude/cve-2026-47103-python-statemachine-rce
Payload-GenerierungSchwachstellenanalyseExploitationPenetrationstests
GitHubsaiteja-erukude/cve-2026-47103-python-statemachine-rce

CVE-2026-47103-python-statemachine-rce

Python StateMachine 3.0.0 < 3.2.0 RCE durch unsichere Auswertung von SCXML-<data-expr> und Injektion in Python eval().

Repository anzeigen

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
19vor 1 MonatNoch nicht geprüft
Teilen

CVE-2026-47103: Python StateMachine Remotecodeausführung über SCXML-eval()-Injection

Schweregrad: Kritisch, CVSS 4.0 9.3, CVSS 3.1 9.8 (vergeben von VulnCheck, der CNA)

Vektor (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

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

Betroffen: Python StateMachine >= 3.0.0, < 3.2.0

Behoben in: 3.2.0

CWE: CWE-95 (Unzureichende Neutralisierung von Direktiven in dynamisch ausgewertetem Code, Eval Injection); bildet ebenfalls auf CWE-94 ab (Unzureichende Kontrolle der Codegenerierung, Code Injection)

Gemeldet von: Sai Teja Erukude

CNA: VulnCheck

Veröffentlicht: 17. Juni 2026


Zusammenfassung

Python StateMachine-Versionen 3.0.0 vor 3.2.0 enthalten eine Schwachstelle zur Remotecodeausführung im SCXML-Verarbeitungspfad.

Der SCXMLProcessor akzeptiert SCXML-Dokumente und bewahrt Ausdrucksattribute wie <data expr="...">. In anfälligen Versionen durchlaufen diese Ausdruckszeichenfolgen den Verarbeitungspfad des SCXML-Datenmodells und erreichen schließlich ohne Sandboxing Pythons eingebaute eval()-Funktion.

Ein Angreifer, der ein SCXML-Dokument bereitstellen oder beeinflussen kann, kann Python-Code in einem <data expr="...">-Attribut platzieren. Wenn die konsumierende Anwendung die SCXML-Datei parst und den Prozessor startet, wird der Ausdruck im Kontext des hostenden Python-Prozesses ausgewertet.

Auswirkungen

Ein Angreifer kann beliebigen Python-Code ausführen, wenn eine anfällige Anwendung angreiferkontrollierte SCXML-Inhalte verarbeitet.

Die Ausnutzbarkeit kann remote oder lokal sein, je nachdem, wie die konsumierende Anwendung SCXML-Dokumente erhält. Zu den riskanten Eingabepfaden gehören:

  • Hochgeladene SCXML-Dateien.
  • Benutzergesteuerte Workflow- oder State-Machine-Definitionen.
  • Konfigurationsdateien, die aus nicht vertrauenswürdigen Speicherorten geladen werden.
  • SCXML-Inhalte, die von Plugins, Erweiterungen oder Integrationen bereitgestellt werden.
  • Jede netzwerkzugewandte Funktion, die SCXML aus Benutzereingaben akzeptiert oder erzeugt.

Eine erfolgreiche Ausnutzung kann Folgendes ermöglichen:

  • Lesen oder Ändern von Dateien, auf die der hostende Prozess zugreifen kann.
  • Zugriff auf Umgebungsvariablen und Anwendungsgeheimnisse.
  • Aufrufen interner Dienste, die vom Host aus erreichbar sind.
  • Stören oder Ersetzen des Anwendungsverhaltens.

Betroffener Pfad

Die an VulnCheck gemeldete anfällige Aufrufkette lautet:

SCXMLProcessor.parse_scxml_file()
SCXMLProcessor.process_definition()
create_datamodel_action_callable()
_create_dataitem_callable()
_eval()
eval()

Das Problem wird ausgelöst, wenn ein geparstes SCXML-Datenmodellelement beim Start des Prozessors ausgewertet wird.

Technische Details

Der anfällige Kontrollfluss weist zwei Verstöße gegen Vertrauensgrenzen auf:

  1. Der SCXML-Prozessor akzeptiert Ausdruckstext aus einem SCXML-Dokument.
  2. Der Ausdruckstext wird mit der rohen Python-Funktion eval() ausgewertet.

Der PoC verwendet ein <data expr="...">-Attribut, da dieser Pfad während SCXMLProcessor.start() ausgeführt wird. Die Übergabe eines leeren globals-Wörterbuchs an eval() deaktiviert die eingebauten Funktionen von Python nicht; Python kann weiterhin nutzbare eingebaute Funktionen in den Auswertungskontext injizieren. Dadurch kann ein Ausdruck auf __import__ zugreifen und Python-Code ausführen.

Ein harmloses Proof-of-Concept-Payload schreibt eine lokale Markierungsdatei:

<data id="x" expr="__import__('pathlib').Path(...).write_text(...)"/>

Die Markierung wird erst erstellt, nachdem das SCXML-Dokument geparst wurde und start() den Datenmodellausdruck ausgewertet hat.

Proof of Concept

package_builder.py erzeugt eine lokale, angreiferkontrollierte SCXML-Datei unter malicious-charts/data_expr_start.scxml. Die erzeugte Datei enthält ein harmloses <data expr>-Payload, das marker.txt in diesem PoC-Verzeichnis schreibt.

run_poc.py installiert keine Hooks und modifiziert das Zielpaket nicht. Es importiert das veröffentlichte Paket python-statemachine==3.1.2, parst die erzeugte SCXML-Datei mit SCXMLProcessor.parse_scxml_file(...), startet den Prozessor und gibt die Marker-Nachweise vorher/nachher aus.

Nur in einer lokalen Testumgebung ausführen:

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

Erwartete Nachweise bei anfälligen Versionen:

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

Das wesentliche Verhalten ist, dass marker.txt vor start() nicht existiert und danach existiert, was beweist, dass der SCXML-Ausdruck innerhalb des hostenden Python-Prozesses ausgeführt wurde.

Das Payload ist absichtlich harmlos. Es schreibt nur diese lokale Markierungszeichenfolge:

python_statemachine_scxml_data_expr_eval_triggered

Es startet keine Shell, verbindet sich nicht mit einem Netzwerkdienst, liest keine Geheimnisse, löscht keine Daten und ändert keine Dateien außerhalb des PoC-Verzeichnisses.

Abhilfe

Aktualisieren Sie auf Python StateMachine 3.2.0 oder neuer.

Ein dauerhafter Fix sollte vermeiden, angreiferkontrollierten SCXML-Ausdruckstext mit der rohen Python-Funktion eval() auszuwerten. Sicherere Ansätze sind:

  • Ersetzen von rohem eval() durch einen eingeschränkten Ausdrucks-Evaluator.
  • Die Auswertung vollständiger Python-Ausdrücke als expliziten Modus für vertrauenswürdige Eingaben behandeln.
  • Die Python-Auswertung für SCXML aus nicht vertrauenswürdigen Quellen standardmäßig deaktivieren.
  • Gefährliche SCXML-Ausdrucksattribute vor der Verarbeitung ablehnen oder bereinigen.

Falls eine sofortige Aktualisierung nicht möglich ist:

  • Verarbeiten Sie keine SCXML-Dokumente von nicht vertrauenswürdigen Benutzern.
  • Machen Sie SCXML-Upload- oder Workflow-Definitionsfunktionen nicht für nicht authentifizierte Clients verfügbar.
  • Validieren Sie SCXML-Dateien, bevor sie den SCXMLProcessor erreichen.
  • Führen Sie die SCXML-Verarbeitung in einer eingeschränkten, isolierten Umgebung mit minimalen Rechten aus.

Zeitplan der Offenlegung

DatumEreignis
22. Mai 2026Schwachstelle bei VulnCheck eingereicht
26. Mai 2026VulnCheck hat die Offenlegung eingeleitet; CVE-2026-47103 vorläufig vergeben
17. Juni 2026CVE-2026-47103 veröffentlicht

Danksagung

Entdeckt und gemeldet von Sai Teja Erukude, koordiniert über VulnCheck.

Referenzen

  • CVE-Eintrag: https://www.cve.org/CVERecord?id=CVE-2026-47103
  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-47103
  • VulnCheck-Advisory: https://www.vulncheck.com/advisories/python-statemachine-rce-via-scxml-eval-injection
  • GitHub-Advisory: https://github.com/fgmacedo/python-statemachine/security/advisories/GHSA-v4jc-pm6r-3vj8
  • Versionshinweise zu Python StateMachine 3.2.0: https://github.com/fgmacedo/python-statemachine/releases/tag/v3.2.0
  • Python-StateMachine-Projekt: https://github.com/fgmacedo/python-statemachine
Tool herunterladen