相比普通App,AI Agent具有持续访问权和代理行动能力(发邮件、下单、转账),一旦被攻破后果完全不同,需重新审视OAuth授权范围。
Meta 发布了 Muse,一款个人 AI Agent,它可以请求访问你的邮件、日历、支付和健康数据,从而替你做事——卖车、订机票。它与 OpenClaw、Instinct 等 Agent 竞争,并将广泛的数据请求与隐私控制承诺捆绑在一起。
Muse 能否成功,取决于人们是否愿意信任 Meta 获得这样的权限范围。这是一个合理的问题,但不是我在意的问题。这类工具中真正值得探讨的问题是:
你究竟在授予什么权限,而这些权限在你不再关注之后还会继续运作多久?
这是大多数人忽略的区别,也是整个风险模型的关键所在。
一个应用请求权限后,只在你打开它时运行。访问权限受限于你的注意力。如果它做了意料之外的事,你通常正在看着屏幕。
Agent 有两点不同:
持续访问。授权在会话之间持续存在,而非每次使用时重新请求。
以你的名义行事。输出不只是数据离开你的设备——而是发生在世界上的事情。发送邮件、完成预订、授权支付。
将这两点结合, compromised(被攻陷)的后果会升级。一个泄露的日历副本很糟糕。但一个能读取你的日历、写你的邮件、转移你的资金的 Agent,更像是有人拿着你的手机,处于解锁状态,而且只要 token 存活就会一直拿着。
"访问你的邮件"可能意味着读取它来总结你的一天,也可能代表以你的身份发送邮件。这不是同一种权限,也不是同一种风险。如果授权页面没有区分它们,就当作更广泛的那种来对待。
从 OAuth 的角度,这只是 scope 的粒度问题:mail.read 对比 mail.send。读取本身已经意义重大。以你的身份发送才是把错误变成事故的那一个。
整邮箱访问和一个标签的访问都属于"邮件访问"。日历同理:每个日历 vs. 你专门为 Agent 创建的某个日历。如果工具支持范围细化,就用它。如果不支持,这本身就说明供应商如何看待你的数据。
人们常常把这两个混为一谈,但它们是分开的:
处理是在本地还是在供应商的云端?
你的内容会成为训练数据吗?
第二个问题比想象中更重要,因为"我们不使用你的数据训练"和"我们默认不使用你的数据训练,但你也可以选择加入"看起来几乎一样,实际上含义截然不同。
我该在哪里关闭这个?
关闭它会删除它已经收集的数据吗?
这两者通常是不同的流程,而且第二个往往被埋得很深。一个无法干净撤销的 Agent 是一种承诺,而不是一个功能。检查授权账户的已连接应用面板,看看撤销是否也会使已颁发的 token 失效——有时候并不会。
一个可以谈判或交易的 Agent 正在以你的名义对其他人行事。这比只整理你已有信息的 Agent 要大得多。如果涉及支付权限,寻找每次操作的确认机制和消费上限,而非一刀切的授权。
你应该能够看到 Agent 做了什么、何时做的、以及根据谁的指令。没有日志,你无法检测到错误操作,也无法事后重建。一次没有活动历史的操作,意味着每个操作都无法验证。
一个持有你邮件和日历的 Agent 不只是隐私问题。它是有史以来最好的钓鱼借口。
一封令人信服的攻击邮件所需的一切——你和谁交流、你在做什么、你什么时候不在、你买了什么——恰恰是这些 Agent 被授予的权限。如果这个数据宝库可以被访问,生成的攻击消息将比目前流通的任何内容都更精准。
攻击者已经从窃取密码转向借用合法访问。我之前写过的一个相关案例 BigBear,通过中继代理拿到了 474 个已完整通过 MFA 的 Microsoft 365 会话。Agent 账户是大多数人将持有的最集中的合法访问形式。
员工授权 Agent 访问工作邮箱,实际上是在授予第三方对公司数据的访问权限。这不一定错误——通常很有用——但这应该是一个有明确负责人的决策,而不是在产品演示过程中顺带发生的事。
搞清楚有哪些 Agent 持有你租户的 token。
确保离职流程会撤销它们。离职流程关闭了账户但让 Agent 的 OAuth token 继续有效,这种情况很容易创建,也很难察觉。
我不会告诉你不要用这些工具。有些会节省真正的时间,而出于原则拒绝它们并不是一种策略。
但权限页面不是开始思考的地方。当它出现时,决策已经被框定为"允许访问以继续",而真正有意义的问题——什么在持续、它能在你不在场时做什么、撤销后会发生什么——已经在别处被解决了,通常是在一个没人打开的设置页面里。
先读那些。Agent 可以等三十秒。
Originally published at CyberPicks.