-
-
[分享]AI智能体安全:smolagents存在沙箱逃逸漏洞(CVE-2025-5120)
-
发表于: 6小时前 72
-
| 漏洞名称 | smolagents存在沙箱逃逸漏洞 |
| 产品名称 | smolagents |
| 产品简介 | smolagents是Hugging Face开源的一个轻量级AI智能体开发库,应用非常广泛 |
| 影响版本 | v1.17.0之前的全部版本 |
| 漏洞编号 | CVE-2025-5120 |
| 漏洞成因 | LocalPythonExecutor的安全机制存在缺陷,导致攻击者能够绕过 |
| 危害等级 | 高危 |
| 利用条件 | smolagents版本低于1.17.0 |
| 漏洞危害 | 攻击者能够绕过smolagents的安全机制,实现未经授权的远程代码执行、获取系统敏感信息,甚至控制系统所在主机 |
| 安全建议 | 1.安全自查;2.及时升级smolagents版本到最新 |
01组件概述
smolagents是Hugging Face开源的一个轻量级AI智能体开发库,专门为开发者提供快速构建和部署高效智能体应用的解决方案。
smolagents以“代码驱动”为核心,组件精简且适配场景广泛。其具备简洁易用、支持多种LLM模型的特点,具备强大的工具集成能力,常见的应用场景有构建检索型智能体、代码型智能体。

(图 smolagents GithubBenchmark)
02漏洞描述
Hugging Face 的 smolagents 框架存在沙箱逃逸漏洞(CVE-2025-5120),该漏洞源于 local_python_executor.py 模块的沙箱防护机制存在可被绕过的缺陷。
尽管程序构建的 Python 沙箱环境通过静态(白名单限制模块 / 函数导入、AST 解析修改代码阻断危险函数)和动态(AST 节点运行时评估检测有害结果)相结合的方式保障安全,但因 Python 的内省特性与灵活性,攻击者可利用白名单模块及规避黑名单限制,绕过保护实现沙箱逃逸,执行任意代码。
03漏洞危害
攻击者通过实施沙箱逃逸漏洞(CVE-2025-5120)的攻击,可能导致的危害如下:
1. 实现未授权的代码执行;
2. 非法访问系统敏感数据,包括用户信息、配置文件等;
3. 劫持计算资源,将设备纳入僵尸网络用于挖矿等恶意活动;
4. 破坏系统正常功能,如删除关键模块文件、触发系统崩溃等。
04漏洞成因剖析
本例中分析的组件源码版本为v1.16.0。
在local_python_executor.py代码中,安全机制代码主要体现在以下几个方面:
1. 模块白名单
程序从util文件中导入 BASE_BUILTIN_MODULES,在之后的代码检查过程中,只允许导入在 authorized_imports(通常是 BASE_BUILTIN_MODULES)白名单中的模块。

2. 内置函数检查
如果程序返回的值是一个函数,则会启用内置函数检查来判断是否存在危险函数和未授权模块的访问。具体的内置函数和模块如下。

3. 装饰器保护
对执行表达式的主函数用 safer_eval 装饰器包裹,返回之前做上述检查。只要返回值涉及未授权模块或危险函数,立即阻断执行。

4. 工具白名单
只有在 static_tools 或 custom_tools 里声明过的工具函数才能被正常返回和调用。如果名字不在白名单里,或不在允许的模块和函数范围内,同样会被拦截。
static_tools或 custom_tools声明的工具是通过BASE_PYTHON_TOOLS来定义。BASE_PYTHON_TOOLS定义的内容如下。

基于前面的分析,我们可以通过利用其白名单模块和逃避黑名单功能的方法来实现安全机制的绕过。
首先,我们可以利用函数动态链接调用的方法来绕过模块白名单的检查。具体代码如下,从re模块开始,通过getattr()得到open_keys中的属性,最终程序实现的方法为<built-in function open>,即绕过沙箱环境限制获得builtins模块,方法open()。

之后我们利用该方法实现在根目录下创建一个random.py文件,也可能是其他文件,但是文件名需要符合模块白名单,后面会用到。同时需要在random.py文件中写入恶意代码。

再次重复前面的逻辑绕过模块白名单的检查,具体代码如下,从collections开始,实现间接访问内置函数检查的sys.modules模块。

在能够使用sys.modules模块之后,我们可以从内存中删除原始的readom依赖包。

最后,由于根目录下存在random.py文件(之前创建的),因此根据python依赖文件加载顺序,当我们再次import random时,就会加载我们之前创建的random.py并执行文件中的恶意代码。
漏洞利用效果如下,其中我的恶意命令为:


07安全建议
基于上述分析,我们建议相关企业应立即采取以下措施:
首先,开展全面自查,确保自身的smolagents 框架不受到该漏洞影响;
其次,及时升级smolagents 组件,确保其版本不低于1.17.0。
08参考资料
b5aK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6Z5N6h3N6Y4K9h3&6Y4k6X3q4U0k6g2)9J5c8Y4y4E0L8$3I4S2k6$3g2F1N6s2x3`.
CVE-2025-5120 : A sandbox escape vulnerability was identified in huggingface/smolagents version
结语
CVE-2025-5120 沙箱逃逸漏洞,暴露了代码型智能体的安全短板,也凸显其业务与价值实现中的核心矛盾。
业务上,代码型智能体本为解决自动化、逻辑推演等效率痛点,通过动态执行代码降低人机协同门槛,在企业工作流、决策支持等领域肩负提升效率的使命。但漏洞可能将“高效赋能” 异化为 “风险放大器”,导致数据窃取、流程篡改,威胁业务稳定与用户信任。
价值层面,其核心在于“可控的智能”,但安全机制若跟不上业务复杂度,技术能力可能沦为攻击工具,形成技术投入与风险损失的负循环。这提醒行业,需将安全嵌入技术底座,构建 “功能创新 - 安全可控” 的平衡。
此漏洞是技术与安全博弈的缩影,代码型智能体唯有以安全为前提,才能释放价值,筑牢行业信任基石。