1. 代码执行风险
smolagents 的核心特性是让大语言模型生成并执行 Python 代码,这带来了固有的安全风险:
- 任意代码执行:模型可能生成包含危险操作的代码,如文件写入、网络请求或系统命令
- 资源耗尽:模型可能生成无限循环或大量文件操作,导致系统资源被耗尽
- 数据泄露:模型可能通过生成的代码将敏感数据发送到外部服务器
- 提示注入:恶意输入可能诱导模型生成有害代码
2. 本地执行器的局限性
默认的 LocalPythonExecutor 虽然提供了导入白名单、危险模块阻止和操作数量限制等防护,但官方明确声明其不能作为安全边界使用。经过对抗性微调的模型仍可能绕过这些限制,对用户环境造成损害。
3. 生产环境的安全建议
对于处理不可信输入的生产系统,建议采取以下措施:
- 使用远程沙箱:选择 E2B、Modal、Docker 或 WASM 执行器,实现进程级隔离
- 资源限制:配置执行超时、内存上限和磁盘配额
- 网络隔离:限制沙箱的网络访问权限,防止数据外泄
- 最小权限原则:仅授予完成任务所必需的工具和导入权限
- 可观测性集成:通过 OpenTelemetry 或 Phoenix 等工具追踪 Agent 的执行轨迹