Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-47103-python-statemachine-rce — Python StateMachine 3.0.0 < 3.2.0 通过不安全的 SCXML <data expr> 求值和 Python eval() 注入实现 RCE。 | Kitploit
工具/GitHubGitHub/saiteja-erukude/cve-2026-47103-python-statemachine-rce
Payload生成漏洞分析漏洞利用渗透测试
GitHubsaiteja-erukude/cve-2026-47103-python-statemachine-rce

CVE-2026-47103-python-statemachine-rce

Python StateMachine 3.0.0 < 3.2.0 通过不安全的 SCXML <data expr> 求值和 Python eval() 注入实现 RCE。

查看仓库

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
289天前尚未审核

CVE-2026-47103:Python StateMachine 通过 SCXML eval() 注入实现远程代码执行

严重程度: 严重,CVSS 4.0 9.3,CVSS 3.1 9.8(由 CNA 机构 VulnCheck 分配)

向量(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

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

受影响版本: Python StateMachine >= 3.0.0, < 3.2.0

修复版本: 3.2.0

CWE: CWE-95(动态求值代码中指令中和不当,Eval 注入);同时对应 CWE-94(代码生成控制不当,代码注入)

发现并报告者: Sai Teja Erukude

发布日期: 2026 年 6 月 17 日


摘要

Python StateMachine 3.0.0 至 3.2.0 之前的版本在 SCXML 处理路径中存在远程代码执行漏洞。

SCXMLProcessor 接受 SCXML 文档,并保留诸如 <data expr="..."> 之类的表达式属性。在受影响版本中,这些表达式字符串会经过 SCXML 数据模型处理路径,最终在未经沙箱隔离的情况下到达 Python 内置的 eval()。

能够提供或影响 SCXML 文档的攻击者可以将 Python 代码放入 <data expr="..."> 属性中。当使用该库的应用程序解析 SCXML 文件并启动处理器时,该表达式将在承载该应用程序的 Python 进程上下文中被求值。

影响

如果存在漏洞的应用程序处理攻击者控制的 SCXML 内容,攻击者可能执行任意 Python 代码。

暴露面可能是远程的,也可能是本地的,具体取决于使用该库的应用程序如何接收 SCXML 文档。有风险的输入路径包括:

  • 上传的 SCXML 文件。
  • 用户控制的工作流或状态机定义。
  • 从不受信任位置加载的配置文件。
  • 由插件、扩展或集成提供的 SCXML 内容。
  • 任何接受用户输入或根据用户输入生成 SCXML 的网络功能。

成功利用可导致:

  • 读取或修改承载进程可访问的文件。
  • 访问环境变量和应用程序机密。
  • 调用可从主机访问的内部服务。
  • 干扰或替换应用程序行为。

受影响路径

向 VulnCheck 报告的易受攻击调用链为:

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

该问题在处理器启动期间对已解析的 SCXML 数据模型项进行求值时被触发。

技术细节

存在漏洞的控制流有两处信任边界失效:

  1. SCXML 处理器接受来自 SCXML 文档的表达式文本。
  2. 该表达式文本通过原生 Python eval() 进行求值。

PoC 使用 <data expr="..."> 属性,因为该路径会在 SCXMLProcessor.start() 期间执行。向 eval() 传入空的 globals 字典并不会禁用 Python 内置函数;Python 仍可将可用的内置函数注入求值上下文。因此,表达式可以访问 __import__ 并执行 Python 代码。

一个无害的验证载荷会写入本地标记文件:

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

标记仅在 SCXML 文档被解析且 start() 求值 datamodel 表达式之后才会创建。

概念验证

package_builder.py 会在 malicious-charts/data_expr_start.scxml 生成一个由本地攻击者控制的 SCXML 文件。生成的文件包含一个良性的 <data expr> 载荷,该载荷会在此 PoC 目录中写入 marker.txt。

run_poc.py 不安装任何钩子,也不修改目标包。它会导入已发布的 python-statemachine==3.1.2 包,使用 SCXMLProcessor.parse_scxml_file(...) 解析生成的 SCXML 文件,启动处理器,并打印标记存在前后的证据。

仅在本地测试环境中运行:

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

在易受攻击版本上预期的证据:

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

关键行为在于:marker.txt 在 start() 之前不存在,之后存在,这证明 SCXML 表达式在承载它的 Python 进程内部执行了。

该载荷被有意设计为无害的。它只写入这个本地标记字符串:

python_statemachine_scxml_data_expr_eval_triggered

它不会启动 shell、连接网络服务、读取机密、删除数据,也不会修改 PoC 目录之外的文件。

修复建议

升级到 Python StateMachine 3.2.0 或更高版本。

持久性的修复应避免使用原生 Python eval() 来求值攻击者可控的 SCXML 表达式文本。更安全的方案包括:

  • 用受限的表达式求值器替换原生 eval()。
  • 将完整的 Python 表达式求值视为显式的可信输入模式。
  • 对来自不可信来源的 SCXML 默认禁用 Python 求值。
  • 在处理前拒绝或净化危险的 SCXML 表达式属性。

如果无法立即升级:

  • 不要处理来自不可信用户的 SCXML 文档。
  • 不要向未认证客户端暴露 SCXML 上传或工作流定义功能。
  • 在 SCXML 文件到达 SCXMLProcessor 之前对其进行校验。
  • 在权限最小化的受限隔离环境中运行 SCXML 处理。

披露时间线

日期事件
2026 年 5 月 22 日漏洞提交至 VulnCheck
2026 年 5 月 26 日VulnCheck 启动披露流程;CVE-2026-47103 获临时分配
2026 年 6 月 17 日CVE-2026-47103 正式发布

致谢

由 Sai Teja Erukude 发现并报告。

披露工作通过 VulnCheck 协调完成。

参考资料

  • CVE 记录:https://www.cve.org/CVERecord?id=CVE-2026-47103
  • NVD:https://nvd.nist.gov/vuln/detail/CVE-2026-47103
  • VulnCheck 公告:https://www.vulncheck.com/advisories/python-statemachine-rce-via-scxml-eval-injection
  • GitHub 公告:https://github.com/fgmacedo/python-statemachine/security/advisories/GHSA-v4jc-pm6r-3vj8
  • Python StateMachine 3.2.0 发布说明:https://github.com/fgmacedo/python-statemachine/releases/tag/v3.2.0
  • Python StateMachine 项目:https://github.com/fgmacedo/python-statemachine
下载工具