CVE-2026-47103: Eval Injection in python-statemachine SCXML Processing
Vulnerability Overview
CVE-2026-47103 is a critical eval injection vulnerability (CWE-95) in the python-statemachine library. When processing SCXML documents, the library passes expressions found in <data expr=...> elements directly to Python's built-in eval() function without sanitisation. Any attacker who can supply or influence SCXML input — whether through file upload, API parameter, or any other user-controlled channel — can execute arbitrary Python code inside the application process. The vulnerability carries a CVSS score of 9.8 (Critical).
Affected Software
- Package: python-statemachine (pip)
- Vulnerable versions: >= 3.0.0 and < 3.2.0
Applications that parse SCXML from any untrusted source while running an affected version are exposed. No authentication is required for exploitation when SCXML input is reachable from an external interface.
Exploitation Status
A public proof-of-concept (PoC) is available as of the disclosure date (2026-06-18). No patch has been released at the time of writing. The combination of a public PoC, a zero-authentication attack path, and a CVSS 9.8 score makes this a high-priority exposure for any Python application stack that has adopted python-statemachine 3.x. Defenders should treat this as actively exploitable and act on detection signals immediately rather than waiting for confirmed in-the-wild abuse.
How Our Detection Catches It
The df00tech detection pack ships coverage across seven SIEM platforms for CVE-2026-47103:
- Microsoft Sentinel (KQL)
- Splunk (SPL)
- Elastic (EQL)
- IBM QRadar (AQL)
- Sumo Logic
- Google Chronicle (YARA-L)
- CrowdStrike (CQL)
Detection logic focuses on two complementary angles. At the process level, rules surface Python interpreter child processes spawned from web or service workers that carry SCXML-related artefacts in their command-line arguments or environment — a strong indicator of successful eval injection leading to code execution. At the file and network level, rules correlate unexpected outbound connections, credential file access, or new executable drops originating from the same process tree, covering post-exploitation activity that follows a successful payload execution. Together these layers catch both the exploitation attempt and its downstream effects.
Recommended Action
Upgrade python-statemachine to version 3.2.0 or later as soon as a patch is available. In the interim, validate and reject any SCXML input that contains expr attributes before it reaches the library, and restrict network egress from application processes to limit blast radius.
Full detection queries, atomic test cases, and purple-team guidance are available on the CVE-2026-47103 detection page.