返回安全研究YOFUNE_LABS / A03

攻击路径笔记 · 实验室

一个恶意网页
如何污染 Agent

浏览工具把外部页面读进上下文,等于把攻击面开到了企业网络之外。

实验室路径说明

本文在隔离环境中复现攻击路径,使用模拟数据与模拟工具。叙述用于帮助安全团队理解风险如何形成,不提供针对未授权系统的利用方法,也不表示对应产品已在真实客户环境中失陷。

很多企业内部 Agent 被允许“查一下官网变更”或“打开这份文档链接”。实验室里我们让 Agent 打开一个看起来像供应商更新说明的页面。标题、日期、版本号都正常。页面中部有一段对浏览用户不可见、对抓取器可见的文字,要求它在总结更新之后,再去内部知识库搜索客户名单。

Agent 完成了总结,也发出了内部检索。

01浏览工具会把企业边界向外翻

页面一旦被读进上下文,作者就获得了对本轮任务的发言权。这和员工自己打开钓鱼网站还不一样:员工看得见异常排版,Agent 看见的是提取后的纯文本。隐藏层、脚注、HTML 注释、Markdown 里的指令,都可能比正文更“像任务”。

路径是:

外部网页 → 浏览/抓取工具 → 工作上下文 → 目标偏移 → 内部检索或内部操作

第一段发生在企业外面。最后一段发生在企业里面。中间没有人点“允许跨过这道门”。

02不要把“能上网”理解成只读

只读对浏览器成立,对 Agent 不一定成立。它读完外部内容后,仍可能调用内部工具。外部文字和内部权限在这一刻被接起来。

所以评估时要问的不是 Agent 会不会访问恶意域名,而是:外部不可信文本,有没有资格调度内部工具。

03工程上的隔离

给浏览结果打来源标记,并禁止它直接成为工具参数。外部摘要可以显示给人看,不能自动变成 search_customers() 的查询词。

把能上网的 Agent 和能碰内部名单的 Agent 分开。需要两边能力时,由工作流显式传递已经过审查的字段,而不是共用一个什么都能调的运行时。

对外部内容触发的内部调用做审批或至少做审计告警。一次“总结官网更新”却打到了客户表,这件事本身就应该被看见。