监管者今天把问责对象从模型移到 harness,同周两个托管 harness 的默认却背向而行:AWS AgentCore 的 root shell 与凭据解密同内存,注入一步读到明文 JWT,而 AWS 判为客户责任、未出 CVE;Google antigravity 用出网代理把明文挡在沙箱外,沙箱里只见占位符。研究给出中间态——权限上限在不可信内容进上下文之前钉死(CapScope 3/75 对 33–47/75),残留的口子落在 AGENTS.md。先问一句:你的 harness 里,谁拥有可被注入驱动的权限。
监管文本今天把『harness』写进问责条款,而同周两家托管 harness 对『凭据能不能进沙箱』给出相反默认
热度盘面 Top 5
-
澳大利亚信号局(ASD/ACSC)的《Agentic AI Harnesses: the layer above the model》本周经媒体报道(ITNews 9/21):把 harness(模型之外的一切——连接器/工具注册表/记忆/权限系统/上下文管理/审计/更新链)定义为组织真正能控制、且会比模型多活几代的单元。核心判断:LLM 把指令与数据放进同一上下文、无法可靠区分,提示注入『目前没有完全可靠的技术缓解』,缓解只能落在 harness——最小权限、高影响动作需人工批准、输出先校验再使用、记录 prompt/工具调用/配置变更。另两条口径:多 agent 系统按单一 agent 治理(污染会经共享上下文与信任关系扩散);过期上下文应删除而非摘要,因为摘要是『重写记录、会引入新错误』,并建议保留一份 harness 每次会话开始必读的持久规则文件。附给董事会的七个问题,末问是 harness 被攻破/错配/操纵时的最坏结果及如何遏制。
编辑注 监管者第一次把问责对象写成 harness 而不是模型,并给出可勾选的落点:持久规则文件、审计范围、人工批准点。把它当一份 harness 验收清单——尤其『删而不摘』这条,直接否掉了主流的『压缩即摘要』默认,值得你回去对一次自己的 compaction 策略。
- #2 AWS/AgentCore 安全
Palo Alto Unit 42 公开(9/18,CSA 研究笔记 9/19):AgentCore harness 默认启用的 shell 与 file_operations 工具中,shell 以 root(UID 0)跑在与凭据解密同一内存里。一段藏在工单 HTML 注释里的间接注入让 agent 『curl 脚本并管道进 python3』;脚本读 /proc/1/maps 定位地址空间、读 /proc/1/mem 扫堆,正则命中 1,034 字节的 mcp-service JWT,再 POST 外带到攻击者 webhook。研究者用外部笔记本(无 AWS 凭据)回放令牌,读到含 PII 的下游 MCP 资源。AWS 以 shared responsibility 将报告关闭为 informative,未分配 CVE、未出补丁;缓解全在客户侧:显式设置 allowedTools、不用就移除 shell/file_operations、shell 以非 root 跑在独立且与凭据解析进程隔离的容器。
编辑注 保险箱对静态与传输加密,却没算到明文是在 root shell 能读的那块内存里被解出来的——这就是把 harness 运行内存当凭据暴露面来建模。跟法:凡 shell/文件工具与凭据解析同进程同权限的架构,先把两者拆进程,别等 CVE 提醒。
- #3 Google/Gemini Managed Agents 架构
Google 把 Antigravity 的托管 harness 接进 Gemini API 的 Managed Agents(环境名 antigravity-preview-09-2026,默认 Gemini 3.8 Flash):单次 interactions.create() 起一个按 environment_id 跨轮持久、约 135K token 自动压缩的隔离 Linux 沙箱。关键在 Credentials API——密文存服务端,沙箱里只见占位符(如 __GEMINI_CRED_slack-bot-token__),出网时代理在 wire 上改写 HTTP 头注入 Authorization: Bearer,明文令牌不进模型上下文、stdout 或 agent 记忆。AGENTS.md 作为系统指令自动加载、SKILL.md 做技能扩展,均可挂载自 Git 仓库或 GCS,以保持可复现与可审计;上一版 antigravity-preview-05-2026 将于 10/5 弃用。
编辑注 这是对『凭据与 shell 同内存』那类默认的直接反例:修复点从『限制能读什么』前移到『沙箱里根本没有可读的明文』。选托管 harness 时,把『凭据解析进程与执行进程是否分离』列为第一问。
-
《Authority Is Not a String: A Capability-Scoped Harness for Prompt-Injection-Resistant Coding Agents》(9/8,在 Pi agent 上实现):在读取仓库内容与工具输出之前,先从可信输入冻结一份任务级权限上限,铸成宿主侧的类型化能力(效果类型 Read/Write/Exec + 参数谓词);子 agent 委派时按结构包含做衰减,dispatch 前的 per-principal hook 只在调用方持有覆盖能力时放行。300 次运行(5 任务 × 5 注入面 × 4 授权条件 × 3 试)中,注入效应在 ambient authority/全局策略下执行 33–47/75 次,CapScope 为 3/75;任务成功率相当(68/75 对 68–72/75),代价是更慢(均值 316s 对 145s)。作者自陈不是保密机制——『允许读 + 允许写』仍可搬数据,残余攻击全部来自 AGENTS.md 这一面。
编辑注 它把权威从『字符串』(命令行里出现一个名字就能动它)改成先于不可信内容安装、dispatch 时核对的能力对象——和 ASD『缓解只能落在 harness』是同一句结论的工程实现。跟起来先抄它的时序:在 repo 内容进上下文之前就把权限上限钉死;策略本身可后调。
-
2.1.277(9/18)是一批『把来源标在内容上』的护栏改动:subagent 结果送进主 agent 时带上标明『这是子 agent 输出』的头部并缩进,使其文本无法冒充会话自身指令;workflow 脚本计算的 agent() prompt 以『脚本作者文本』的框送达子 agent,避免安全分类器把它读成用户;沙箱指令在 Bedrock/Vertex/Foundry 改为与一方一致、把沙箱框定成『任务被给定的边界』;sandbox.excludedCommands 的通配从『任一段匹配即整条豁免』收紧为『每一段都要匹配』。(release v2.1.277)
编辑注 同一周、同一类缝:模型分不清『指令』与『数据』,于是 harness 用结构化标签把来源补齐。自建 loop 应给来自子 agent/脚本/工具返回的每一段都带上不可伪造的来源标记——否则被注入的是你的分类器,不是你的模型。