Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

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

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。

查看仓库

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

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

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

CNA: VulnCheck

发布时间: 2026 年 6 月 17 日


摘要

Python StateMachine 的 3.0.0 至 3.2.0(不含)版本在 SCXML 处理路径中存在一个远程代码执行漏洞。

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

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

影响

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

根据使用方应用程序接收 SCXML 文档的方式,该风险可能来自远程或本地。存在风险的输入路径包括:

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

成功利用可能允许:

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

受影响路径

报告给 VulnCheck 的漏洞调用链为:

root@kitploit:~
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 代码。

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

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

只有在 SCXML 文档被解析且 start() 对数据模型表达式求值之后,才会创建该标记文件。

概念验证

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 文件,启动处理器,并打印标记文件的前后对比证据。

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

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

在受影响版本上预期看到的证据:

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

关键行为在于 marker.txt 在 start() 之前并不存在,之后才出现,从而证明 SCXML 表达式已在宿主 Python 进程内执行。

该载荷是有意保持无害的。它只会写入以下本地标记字符串:

root@kitploit:~
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
下载工具