返回资讯中心
外部精选
软件工程
#开发实践#Programming Languages, Python, Security

RunSybil称CPython内存安全漏洞可让恶意AI模型模板逃逸沙箱

来源标题:CPython flaw exposes AI inference servers to sandbox escape attacks

RunSybil安全研究人员发现CPython存在内存安全漏洞,恶意AI模型模板可借此绕过Jinja沙箱保护,在推理服务器内执行任意代码。攻击者可能因此进入处理海量用户请求的服务器,甚至触及底层云基础设施。Python安全响应团队则对该演示的安全影响提出异议。

InfoWorld2026/11/6 · 今天14 分钟阅读

以下正文由 AI 翻译自 InfoWorld(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

RunSybil 的安全研究人员表示,CPython 中存在一个内存安全漏洞,可让恶意 AI 模型模板逃逸代码沙箱,并在推理服务器内执行任意代码。

RunSybil 安全研究员 Darius Houle 在博客文章中写道:“攻击者利用这一漏洞,可以在负责处理数百万用户请求的服务器中获得立足点。他们还可以直接攻击承载这些工作负载的底层云基础设施。”

研究人员演示了一个精心构造的模型如何利用该漏洞绕过 Jinja 的沙箱保护,并在模型服务过程中执行代码。Jinja 是一个基于 Python 的模板引擎,用于组织用户与 LLM 之间的交互。文章补充说,该攻击可能波及允许客户上传并运行自有模型的 AI 托管服务商,使攻击者有可能在处理多个客户请求的基础设施中获得立足点。

然而,负责处理涉及 CPython 安全报告的 Python 安全响应团队(PSRT)在回应 CSO 时对此次演示的安全影响提出异议。该团队表示:“我们认可 RunSybil 报告的底层 CPython 缺陷,并感谢他们为修复该问题所做的贡献。但是,我们不认为所演示的沙箱逃逸属于 CPython 安全漏洞。”

分歧的核心在于解释器是否应负责防止沙箱逃逸。RunSybil 认为该缺陷给 AI 推理基础设施带来了风险,而 PSRT 则表示,在沙箱内执行不受信任的 Python 代码不在 CPython 的安全威胁模型范围内。

利用 Python 的类型处理机制

Houle 写道:“我们发现的这个缺陷滥用了 CPython 对泛型类型的处理方式来实现逃逸。我们利用沙箱在每个模板中都会提供的对象来触发它,即使是在空的沙箱上下文中也是如此。”

研究人员发现,即使对象已通过回调被修改,CPython 仍可能使用缓存的参数列表。当解释器随后在原始列表中查找新引入的参数时,可能得到一个无效索引。一个用于捕获该情况的断言在正常发布版本中被禁用,使得解释器可以访问预期边界之外的内存。

RunSybil 利用这一行为获取了沙箱本应无法访问的 Python 对象引用。

Houle 写道:“无效地址通常会导致解释器崩溃,但指向有用的存活 Python 对象的地址则会让我们的回调获得对该对象的引用(即使沙箱从未打算暴露它)。”

研究人员随后利用恢复的对象引用来访问构建可执行代码所需的 Python 类和函数。

恶意模型模板实现代码执行

为了演示该攻击,RunSybil 修改了 Qwen2.5-0.5B-Instruct 模型,插入了一个带有后门的 chat_template.jinja 文件。当该模型通过 vLLM 等推理服务引擎加载和使用时,该模板使得在服务进程中执行任意代码成为可能。

Houle 写道:“突破聊天模板沙箱并执行代码构成了一种供应链风险,危及推理服务商、库开发者和模型用户。”

研究人员表示,他们已与多家支持自带模型(BYOM)功能的推理服务商分享了概念验证漏洞利用代码。该功能允许客户上传来自外部来源的模型。

Python 对漏洞分类提出异议

RunSybil 向 CPython、维护 Jinja 的 Pallets Project 以及 Hugging Face 披露了该问题。研究人员表示,他们在应由哪个项目解决底层问题上遇到了相互矛盾的观点。

CPython 坚持认为,解释器不支持将沙箱化不受信任的 Python 代码作为安全边界。在回应 CSO 时,PSRT 引用了该项目的安全政策,其中规定沙箱逃逸应由受影响沙箱软件的维护者处理。

该团队表示:“因此,从此类沙箱中逃逸不在我们的安全威胁模型范围内,应由受影响沙箱软件的维护者处理。”

该团队还对 RunSybil 关于缺乏协调修复流程的说法提出异议。他们表示,研究人员是通过电子邮件提交报告的,而非通过 CPython 指定的 GitHub 私密漏洞报告渠道。

修复已回溯移植到三个 Python 分支

RunSybil 向 CPython 提交了一个补丁,该补丁于 8 月 14 日合并到主开发分支。据 PSRT 称,该修复还作为常规缺陷修复而非安全修复回溯移植到了 3.13、3.14 和 3.15 分支。

这一区别很重要,因为 RunSybil 曾担心该修复无法覆盖所有受支持的 Python 版本。

研究人员表示,未回溯移植到 Python 3.12 可能会延迟该修复在 AI 基础设施部署中的采用。

Houle 写道:“由于 AI 生态系统的很大一部分仍然坚定地使用 Python 3.12,我们可能要到 2028 年底——即其生命周期结束日期——才能看到我们的内存安全修复被自然采用。”研究人员建议 AI 托管服务商将沙箱化代码、模板引擎和表达式求值器视为尽力而为的安全控制措施,而不是依赖它们作为独立的安全边界。

本文最初发表于 CSO。

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →