Skip to content

构建 Tool 执行脚本安全扫描、Filter 拦截与监控机制 #90

Description

@raychen911

背景和价值
tRPC-Agent 的 Tool、MCP Tool、Skill 和 CodeExecutor 能让 Agent 执行脚本、调用外部命令、读写文件或访问网络。这类能力是 Agent 落地自动化任务的关键,但也带来安全风险:恶意脚本可能删除文件、读取密钥、外传数据、安装不可信依赖、无限循环占用资源,或者通过 shell 注入绕过限制。
生产环境不能只依赖“把代码丢进沙箱”来解决安全问题。更合理的做法是在执行前通过 Filter 做静态扫描和策略判断,在执行时做资源限制和环境隔离,在执行后留下可审计记录、监控指标和 tracing 信息。该题要求构建 Tool 执行脚本的安全检查器、运行前拦截机制和可观测能力,帮助框架在启用工具执行能力时具备更清晰的安全边界。
任务描述
设计并实现一个 Tool Script Safety Guard。输入待执行的脚本内容、命令行参数、工作目录、环境变量和 tool 元数据,系统在真正执行前通过可插拔 Filter 进行风险扫描,输出 allow / deny / needs_human_review 决策;对允许执行的脚本记录安全摘要,对拒绝执行的脚本给出明确原因,并产出可用于监控系统消费的结构化事件。
具体要求
至少覆盖以下风险类型:
1.危险文件操作:递归删除、覆盖系统目录、访问 ~/.ssh、读取 .env、读取凭据文件等。
2.网络外连:使用 curl、wget、requests、aiohttp、socket 等访问非白名单域名。
3.进程和系统命令:调用 subprocess、os.system、shell 管道、后台进程、提权命令等。
4.依赖安装:执行 pip install、npm install、apt install 等可能改变运行环境的命令。
5.资源滥用:无限循环、超大文件写入、fork bomb、长时间 sleep、大量并发任务等可疑模式。
6.敏感信息泄漏:把 API Key、token、password、私钥内容写入日志、文件或网络请求。
实现要求:
●同时支持 Python 脚本和 Bash 命令的扫描。
●提供可配置策略文件,例如 tool_safety_policy.yaml,支持白名单域名、允许命令、禁止路径、最大超时、最大输出大小等配置。
●风险判定至少分为 allow、deny、needs_human_review 三类,不能把所有不确定情况都直接放行。
●需要能以 Filter 或 wrapper 形式接入 Tool / Skill 执行链路的前置检查位置;如果暂不直接改核心执行链路,也要提供清晰的 wrapper 示例。
●对扫描结果输出结构化报告,包含风险类型、命中规则、证据片段、建议处理方式和最终决策。
●需要输出审计日志或监控事件,至少包含 tool name、decision、risk level、rule id、耗时、是否脱敏、执行是否被拦截。
●如项目环境启用了 OpenTelemetry,应预留 span attributes 或等价埋点字段,例如 tool.safety.decision、tool.safety.risk_level、tool.safety.rule_id。
●不要求做到完美安全,但必须明确误报、漏报和绕过风险。
交付物
●新增安全检查器代码,例如 trpc_agent_sdk/tools/safety/、scripts/tool_safety_check.py 或示例目录中的独立实现。
●tool_safety_policy.yaml 示例配置。
●至少 12 条测试样例:安全 Python、危险删除、读取密钥、网络外连、白名单网络请求、subprocess 调用、shell 注入、依赖安装、无限循环、敏感信息输出、Bash 管道、人工复核场景。
●tool_safety_report.json 示例输出。
●tool_safety_audit.jsonl 或等价审计日志示例输出。
●README 或设计说明,解释规则体系、接入方式、已知限制和如何扩展新规则。
验收标准
1.公开提供的 12 条脚本样本必须全部可运行扫描并输出结构化报告。
2.高危脚本检出率 ≥ 90%,安全样本误报率 ≤ 10%。
3.读取密钥、危险删除、非白名单网络外连三类问题检出率必须达到 100%。
4.扫描单个 500 行脚本耗时 ≤ 1 秒。
5.报告必须包含 decision、risk level、rule id、evidence 和 recommendation。
6.策略文件修改后不需要改代码即可改变白名单域名、禁止路径和允许命令。
7.Filter / wrapper 必须能在执行前拒绝高危脚本,并记录一条可审计事件。
8.文档必须说明该机制和沙箱、Filter、Telemetry、CodeExecutor 的关系,以及为什么它不能替代沙箱隔离。

本issue为2026犀牛鸟开源人才培养活动专属issue,仅供已报名参与犀牛鸟活动的同学认领
【认领时间】7月1日~7月31日(7月1日前认领视为无效❗)
【认领方式】在本issue评论区回复“已认领本任务”,即视为认领成功
【活动报名】需提前完成犀牛鸟报名问卷,问卷将用于活动登记和奖励发放:https://wj.qq.com/s2/26888567/gh2q

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions