AI Agent 浏览器自动化安全清单

浏览器自动化是 AI Agent 从聊天界面进入真实系统的分界线。它可以打开私有后台、读取客户记录、点击按钮、填写表单、下载文件、上传附件、在应用之间复制文本,并以已登录用户身份提交变更。这种能力很有用,但也会形成很宽的安全边界。网页里隐藏的一段 prompt injection 可能变成真实业务动作。一个混乱的页面可能让 Agent 点错按钮。弱审批界面可能隐藏数据要发到哪里。下载文件也可能成为新的不可信输入。

这份清单面向正在构建或采购浏览器型 AI Agent 的团队,重点是上线前应该具备的实用控制,尤其是在 Agent 会接触生产账号、客户数据、管理后台、计费系统、内部工具或写入型工作流时。

1. 把浏览器会话当成高权限工具

浏览器会话不只是一个视窗。它可能包含 cookie、token、已保存账号、租户上下文、管理员权限、私有 URL、自动填充值,以及模型本身不应该直接看到的系统访问权。Agent 不应该默认继承一个宽权限的人类浏览器 profile。

应该使用专门的 Agent 会话,并为每个工作流设置最低所需账号权限。测试、预发和生产会话要分离。不要让 Agent 使用开发者日常浏览器 profile。如果工作流必须使用管理员权限,就把它视为高风险流程,增加更强审批、trace 日志和回滚步骤。

2. 限制允许访问的域名和路径

当任务只需要一组已知应用时,浏览器 Agent 不应该自由浏览整个互联网。为每个工作流定义允许的域名、路径和账号上下文。计费工作流可能需要计费后台和 CRM,但不需要任意网站。客服工作流可能需要 help desk 和知识库,但不需要生产数据库控制台。

默认阻止跳转到未批准来源。如果页面重定向到意外域名,Agent 应该停止并要求审查。这一点很重要,因为 prompt injection 经常试图把 Agent 引向攻击者控制的页面、callback URL、paste 服务、文件托管或假登录页。

3. 把页面内容标记为不可信输入

浏览器从页面读取到的一切都应该被视为不可信数据。网页、客服工单、文档预览、issue 评论或分析后台,都可能包含要求 Agent 忽略先前指令、泄露隐藏数据、更改目的地或点击危险按钮的文本。Agent 不应该把页面文本当成系统指令。

Prompt 模板应该清楚区分可信指令和页面内容。工具结果应该用 “untrusted page text” 或 “user-controlled content” 这样的标签包起来。浏览器控制层应该防止页面内容改变 Agent 的工具权限、目的地白名单、审批规则或身份。

4. 限制点击和提交动作

读取页面的风险低于点击按钮或提交表单。Agent 应该按风险对浏览器动作分类。低风险动作可能包括打开页面、展开区块或复制可见文本。高风险动作包括提交表单、发送消息、修改权限、删除记录、退款、购买、发布内容或更改配置。

高风险浏览器动作应该要求明确确认。审批提示应展示页面 URL、目标元素、动作类型、受影响记录、表单字段和可能的业务影响。只显示按钮文案是不够的。很多危险动作如果只看 “Continue” 或 “Save”,看起来都很无害。

5. 提交前展示表单差异

浏览器 Agent 填表速度很快,人类很难逐项检查。提交前应该展示 diff:原始值、建议值、可访问的隐藏字段、目标 URL 和必填字段。客户沟通、计费、访问控制、策略设置和生产配置尤其需要这个控制。

用户应该能批准、编辑或取消。如果表单包含 token、密码、客户标识或财务数据等敏感值,审查界面应尽量脱敏,同时仍然让风险可理解。

6. 隔离下载文件

下载文件是另一个不可信输入通道。页面可以要求 Agent 下载包含恶意指令、敏感数据、宏、意外文件类型或超大 payload 的文件。下载应该进入隔离工作区,而不是共享用户目录。

使用前扫描下载文件,限制可执行文件类型,记录文件来源 URL,并把下载文件附到 Agent trace。如果 Agent 读取文件,内容应标记为不可信。如果 Agent 上传或转发文件,该出站动作必须经过审批。

7. 控制上传和附件

上传就是数据移动。能上传文件的浏览器 Agent 可能泄露内部文档、日志、导出文件、截图、源代码或客户数据。不要让 Agent 选择任意本地文件。应该为每个任务提供狭窄的文件选择器或已批准工作区。

上传前展示文件名、来源、大小、内容类型、目标页面、目标账号和上传原因。对于敏感文件,增加策略检查并要求人工确认。如果上传目标是外部域名,把它视为高风险出站动作。

8. 避免隐藏的跨账号动作

浏览器会话很容易意外混用账号。用户可能在一个 tab 登录个人账号,在另一个 tab 登录公司账号。Agent 可能落到错误租户、工作区或环境。这类错误常常很安静,但影响很大。

任何写入动作前都应展示当前账号、租户、工作区和环境。生产工作流中,Agent 应验证租户或账号是否符合任务上下文。如果浏览器状态和请求的客户、项目或工作区不匹配,就停止运行。

9. 防止凭证和自动填充暴露

自动填充和密码管理器可能把 secret 暴露进浏览器会话。Agent 不应该看到保存的密码、恢复码、private key 或个人支付方式。Agent 会话中应禁用不必要的自动填充,并避免与人类密码管理器状态共享。

如果需要凭证,优先使用服务端 token exchange、scoped service account 或 just-in-time access,而不是把原始凭证暴露给浏览器。屏幕上出现的任何凭证都应在截图、trace、日志和模型可见文本中脱敏。

10. 记录可回放 trace

浏览器 Agent 应该留下能解释发生了什么的审计轨迹。记录 URL、页面标题、工具动作、选中元素、表单字段、审批、下载、上传、错误和最终结果。截图有帮助,但包含敏感数据时要脱敏。

trace 应回答三个问题:Agent 看到了什么、它做了什么判断、它改变了什么。没有这些证据,团队很难调试错误动作、调查数据暴露,或向客户证明工作流是受控的。

11. 增加回滚和控制路径

每个写入型浏览器工作流都需要回滚方案。如果 Agent 改错记录、发错消息、上传错文件或修改配置,谁能撤销?会话多久能被吊销?哪些日志能证明影响范围?

上线前应写清楚禁用开关、账号吊销步骤、受影响系统负责人、回滚命令或 UI 路径、客户沟通负责人和复测要求。浏览器自动化看起来简单,但动作一旦进入生产,恢复就不能靠临场发挥。

12. 测试恶意页面和混乱 UI

不要只测试 happy path。准备包含敌对指令、误导按钮、假登录提示、隐藏文本、不可见表单字段、外部链接和诱导泄露数据文档的测试页面与记录。同时也要测试普通 UI 混乱:重复按钮、过期页面、modal 弹窗、分页、禁用控件和校验错误。

预期行为应该明确。Agent 应忽略恶意页面指令、在意外来源前停止、危险动作前请求审批、展示表单 diff、阻止未知下载,并保留可用 trace。每次 prompt、浏览器控制器、模型、工具或允许域名变化后,都应重复这些测试。

实用上线规则

如果浏览器 Agent 能在已登录账号里操作,在接触真实用户或真实数据前就需要生产级边界。最低上线配置包括专用会话、origin allowlists、不可信页面标记、提交动作审批、文件隔离、上传控制、账号验证、脱敏 trace 和回滚步骤。

相关资源

如果要做更完整的上线评审,可以使用 AI Agent 就绪度自评,或申请 AI Agent Readiness Audit

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部