CVE-2026-47103
Python StateMachine 3.0.0 < 3.2.0 RCE via SCXML eval() Injection
Python StateMachine versions 3.0.0 before 3.2.0 contains a remote code execution vulnerability that allows attackers to execute arbitrary code by supplying malicious SCXML documents containing crafted <data expr="..."> attributes evaluated unsafely. The SCXMLProcessor passes attacker-controlled expression strings through a call chain ending in Python's built-in eval() without sandboxing, enabling arbitrary code execution in the context of the hosting process.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
9.3
Python StateMachine 3.0.0 < 3.2.0 RCE via SCXML eval() Injection
Python StateMachine versions 3.0.0 before 3.2.0 contains a remote code execution vulnerability that allows attackers to execute arbitrary code by supplying malicious SCXML documents containing crafted <data expr="..."> attributes evaluated unsafely. The SCXMLProcessor passes attacker-controlled expression strings through a call chain ending in Python's built-in eval() without sandboxing, enabling arbitrary code execution in the context of the hosting process.
- Record
CVE-2026-47103- CVSS 4.0
- 9.3 Critical
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 - CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-95
- Updated
- 2026-11-08
EUVDEUVD-2026-37730
9.3
Python StateMachine versions 3.0.0 before 3.2.0 contains a remote code execution vulnerability that allows attackers to execute arbitrary code by supplying malicious SCXML documents containing crafted <data expr="..."> attributes evaluated unsafely. The SCXMLProcessor passes attacker-controlled expression strings through a call chain ending in Python's built-in eval() without sandboxing, enabling arbitrary code execution in the context of the hosting process.
- Record
EUVD-2026-37730- CVSS 4.0
- 9.3 Critical
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 - Updated
- 2026-11-08
GitHub AdvisoriesGHSA-v4jc-pm6r-3vj8
9.3
python-statemachine SCXML <data expr> Eval Injection
Summary
python-statemachine 3.1.2 evaluates <data expr="..."> attributes in SCXML documents using Python's eval(). Any application that passes attacker-controlled SCXML content to SCXMLProcessor is vulnerable to arbitrary code execution in the context of the hosting process.
Details
SCXMLProcessor.parse_scxml_file() processes SCXML documents and evaluates <data> element expr attributes via the following call chain:
SCXMLProcessor.parse_scxml_file()
SCXMLProcessor.process_definition()
create_datamodel_action_callable()
_create_dataitem_callable()
_eval()
eval()
_eval() calls Python's built-in eval() directly on the expression string without sandboxing or restriction.
PoC
1. Install:
pip install python-statemachine==3.1.2
2. Create an SCXML file containing:
<data id="x" expr="__import__('pathlib').Path('marker.txt').write_text('pwned')"/>
3. Run:
SCXMLProcessor.parse_scxml_file(DATA_EXPR_CHART)
SCXMLProcessor.start()
4. During start(), <data expr> reaches _eval(), which calls eval().
5. Result:
data_marker_before_start: False
data_marker_after_start: True
success: True
Impact
This is an eval injection vulnerability (CWE-95). Remote or local code execution depending on whether the consuming application accepts SCXML content from remote users, uploaded files, configuration, plugins, or other untrusted sources.
- Record
GHSA-v4jc-pm6r-3vj8- CVSS 4.0
- 9.3 Critical
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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-95
- Updated
- 2026-11-02
NVD
9.3
Python StateMachine versions 3.0.0 before 3.2.0 contains a remote code execution vulnerability that allows attackers to execute arbitrary code by supplying malicious SCXML documents containing crafted <data expr="..."> attributes evaluated unsafely. The SCXMLProcessor passes attacker-controlled expression strings through a call chain ending in Python's built-in eval() without sandboxing, enabling arbitrary code execution in the context of the hosting process.
- Record
CVE-2026-47103- CVSS 4.0
- 9.3 Critical
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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-95, CWE-94
- Updated
- 2026-11-02
OSV
9.3
Python StateMachine 3.0.0 < 3.2.0 RCE via SCXML eval() Injection
Python StateMachine versions 3.0.0 before 3.2.0 contains a remote code execution vulnerability that allows attackers to execute arbitrary code by supplying malicious SCXML documents containing crafted <data expr="..."> attributes evaluated unsafely. The SCXMLProcessor passes attacker-controlled expression strings through a call chain ending in Python's built-in eval() without sandboxing, enabling arbitrary code execution in the context of the hosting process.
- Record
CVE-2026-47103- CVSS 4.0
- 9.3 Critical
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 - Weakness
- CWE-95
- Updated
- 2026-11-09
OSVGHSA-v4jc-pm6r-3vj8
9.3
python-statemachine SCXML <data expr> Eval Injection
Summary
python-statemachine 3.1.2 evaluates <data expr="..."> attributes in SCXML documents using Python's eval(). Any application that passes attacker-controlled SCXML content to SCXMLProcessor is vulnerable to arbitrary code execution in the context of the hosting process.
Details
SCXMLProcessor.parse_scxml_file() processes SCXML documents and evaluates <data> element expr attributes via the following call chain:
SCXMLProcessor.parse_scxml_file()
SCXMLProcessor.process_definition()
create_datamodel_action_callable()
_create_dataitem_callable()
_eval()
eval()
_eval() calls Python's built-in eval() directly on the expression string without sandboxing or restriction.
PoC
1. Install:
pip install python-statemachine==3.1.2
2. Create an SCXML file containing:
<data id="x" expr="__import__('pathlib').Path('marker.txt').write_text('pwned')"/>
3. Run:
SCXMLProcessor.parse_scxml_file(DATA_EXPR_CHART)
SCXMLProcessor.start()
4. During start(), <data expr> reaches _eval(), which calls eval().
5. Result:
data_marker_before_start: False
data_marker_after_start: True
success: True
Impact
This is an eval injection vulnerability (CWE-95). Remote or local code execution depending on whether the consuming application accepts SCXML content from remote users, uploaded files, configuration, plugins, or other untrusted sources.
- Record
GHSA-v4jc-pm6r-3vj8- CVSS 4.0
- 9.3 Critical
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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-95
- Updated
- 2026-11-02
OSVPYSEC-2026-506
9.3
python-statemachine SCXML <data expr> Eval Injection
Summary
python-statemachine 3.1.2 evaluates <data expr="..."> attributes in SCXML documents using Python's eval(). Any application that passes attacker-controlled SCXML content to SCXMLProcessor is vulnerable to arbitrary code execution in the context of the hosting process.
Details
SCXMLProcessor.parse_scxml_file() processes SCXML documents and evaluates <data> element expr attributes via the following call chain:
SCXMLProcessor.parse_scxml_file()
SCXMLProcessor.process_definition()
create_datamodel_action_callable()
_create_dataitem_callable()
_eval()
eval()
_eval() calls Python's built-in eval() directly on the expression string without sandboxing or restriction.
PoC
1. Install:
pip install python-statemachine==3.1.2
2. Create an SCXML file containing:
<data id="x" expr="__import__('pathlib').Path('marker.txt').write_text('pwned')"/>
3. Run:
SCXMLProcessor.parse_scxml_file(DATA_EXPR_CHART)
SCXMLProcessor.start()
4. During start(), <data expr> reaches _eval(), which calls eval().
5. Result:
data_marker_before_start: False
data_marker_after_start: True
success: True
Impact
This is an eval injection vulnerability (CWE-95). Remote or local code execution depending on whether the consuming application accepts SCXML content from remote users, uploaded files, configuration, plugins, or other untrusted sources.
- Record
PYSEC-2026-506- CVSS 4.0
- 9.3 Critical
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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
python-statemachinePyPI |
3.0.0 up to 3.2.0 | 3.2.0 |
python-statemachinePyPI |
3.0.0 up to 3.2.0, plus listed versions 3.1.03.1.13.1.2 |
3.2.0 |
Public exploits
Links only. Every CVE stores no exploit code.
| Source | Link | Date |
|---|---|---|
| PoC in GitHub | SaiTeja-Erukude/CVE-2026-47103-python-statemachine-rce | 2026-08-15 |
History
| Recorded | Changed | Sources |
|---|---|---|
| facts | EUVD | |
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV, PoC in GitHub |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-47103 is a critical vulnerability (CVSS 9.3) in Fgmacedo Python Statemachine, published June 17, 2026. Public exploit code exists. EPSS puts the chance of exploitation in the next 30 days at 1.36%, the 72nd percentile. Fixed in python-statemachine 3.2.0.
References
github.com/SaiTeja-Erukude/CVE-2026-47103-python-statemachine-rce
github.com/fgmacedo/python-statemachine/releases/tag/v3.2.0
github.com/fgmacedo/python-statemachine/security/advisories/GHSA-v4jc-pm6r-3vj8
vulncheck.com/advisories/python-statemachine-rce-via-scxml-eval-injection
nvd.nist.gov/vuln/detail/CVE-2026-47103
github.com/advisories/GHSA-v4jc-pm6r-3vj8
github.com/CVEProject/cvelistV5/tree/main/cves/2026/47xxx/CVE-2026-47103.json
github.com/fgmacedo/python-statemachine
pypi.org/project/python-statemachine