P250 · 安全与权限

用不会执行内容的方式传递评审材料

Pass review artifacts through inert input channels

调用外部评审工具时,让待审文本始终作为数据传入。

编辑审核

以下示例与示意结果由本站编写,用于说明方法,不是模型实测结果。

使用场景

授权的外部评审需要读取含反引号、引号和命令替换语法的代码。把材料插进shell字符串可能在调用评审器前就执行它,而不是作为待审文本传入。

具体做法

核评审工具可信来源、实际版本、只读执行能力及材料外发授权。完整产物与契约用文件API写临时文件,以文件/标准输入或无shell的结构化参数传入,保持每个参数独立;不能把JSON.stringify当shell转义。记录材料摘要、调用身份和结果。审核内容始终标数据,限制继承环境和工具副作用。

反例

把待审代码直接拼进shell -p参数,认为双引号会让反引号和命令替换全部无害。

改进写法

将确切产物与契约写到文件,使用已核工具的标准输入及只读边界传递,参数以独立argv提供。材料元字符必须原样到达评审器而不执行;核已授权外发范围、环境和输出,不假设包装名称就保证沙盒。

为什么这样改

文件/标准输入通道把材料与命令语法分开,防止shell解释待审内容。只读及来源约束处理评审运行器本身的行为,但不替代输入信任说明。

如何验证

教学带反引号和命令替换的哨兵文本应完整出现在接收端,哨兵命令零执行。记录接收字节摘要与源一致,目标工作树未被评审修改;若未真实调用,只报告准备与验证计划。

适用边界

shell惰性传递不消除模型提示注入或网络外发风险。只读标志需实际实现核验,继承环境也可能含秘密;不同平台引用规则不同。冻结命令形状仅示例,本文没调用外部评审CLI。

原文与版本

如何收录这些方法