大家平时用微软的服务(比如 Office 365、Azure、公司邮箱),大概率都在手机上装过 Microsoft Authenticator 来做多因素认证(MFA)。我们总觉得,有了这个“官方保险箱”,账号就稳如泰山了。
但最近,安全研究人员给微软上了一堂生动的“打脸课”:他们发现了一个 CVSS 评分高达 8.6(高危) 的漏洞(CVE-2026-80097)。

最离谱的是,攻击者不需要你的手机 Root,不需要诱导你点任何确认按钮,甚至那个恶意 App 连“读取存储”或“联网”的系统权限都没申请,就能悄悄把你已经登录的微软账户令牌(Token)全部偷走。
今天咱们就来扒一扒,这个让微软安全团队翻车的“智障级”校验逻辑,到底是怎么把底裤交出去的。
场景还原:一个“人畜无害”的恶意 App
假设你的安卓手机上装了 Authenticator,并且里面登录了你的公司账户(工作邮箱、OneDrive、Teams 等)。
某天,你不小心安装了一个来路不明的“手电筒 App”或者“小游戏”。这个 App 非常“克制”,安装时没有申请任何系统权限(零权限)。
但在你毫无察觉的情况下,这个 App 在后台悄悄启动了 Authenticator 的一个隐藏组件,戴上了一个“面具”,对 Authenticator 说:“嗨,我是 Microsoft Teams,请把主人的邮箱和文件令牌给我。”

结果,Authenticator 真的就给了。
漏洞原理:保安查身份证,只查“证”不查“人”
要理解这个漏洞,我们得看看 Authenticator 是怎么处理其他应用的令牌请求的。
Authenticator 暴露了一个名为 AccountChooserActivity 的组件,并且设置了 android:exported="true"。这意味着,手机上的任何 App 都可以直接唤醒它。
当恶意 App 唤醒它时,会塞过去一堆伪造的参数(JSON 格式),告诉 Authenticator:
- 我是谁:
com.microsoft.teams(Teams 的包名) - 我的 UID 是多少:(恶意 App 从系统里读到的真实 Teams 的 UID)
- 我的重定向 URI 是什么:(根据真实 Teams 签名算出来的一串字符)
- 我要什么权限:
Mail.ReadWrite(读写邮件)、Files.ReadWrite.All(读写所有文件)等。
接下来,就是见证“奇迹(翻车)”的时刻了。
Authenticator 收到请求后,需要做安全校验。它的逻辑是这样的:
- 拿到请求里声称的包名(Teams)。
- 去安卓系统里查这个包名的真实签名,并计算出正确的重定向 URI。
- 把算出来的 URI,和请求里带的 URI 进行对比。
- 如果一样,就认为“身份合法”,把令牌交出去。
发现问题了吗?
这就像是一个保安(Authenticator)遇到一个自称是马云(Teams)的人。保安没有去核对眼前这个人的脸是不是马云,而是拿过对方递来的“马云身份证”,去公安局系统里查了一下:“嗯,这张身份证是真的,编号对得上。” 然后就把金库钥匙给了对方。
它唯独没有问安卓系统一句:“刚才调用我的那个进程,真的是 Teams 本尊吗?”
实际上,Authenticator 的代码里确实获取了真实调用方的包名(通过 getCallingActivity().getPackageName()),但它只把这个真实包名用来做日志记录,根本没有把它用于任何信任决策!
危害有多大?底裤都没了
因为校验逻辑形同虚设,恶意 App 可以随意“Cosplay”微软自家的第一方应用。研究人员测试了三种伪装,结果令人毛骨悚然:
- 伪装成 Teams:直接获取 Microsoft Graph 的最高委托权限。黑客可以静默读取和发送你的所有工作邮件、下载/篡改你 OneDrive 和 SharePoint 里的所有文件、查看你的日历、甚至用你的身份在 Teams 里发诈骗消息。
- 伪装成 Teams 聊天后端:获取完整的聊天伪装权限。
- 伪装成 Authenticator 自己:这更狠,直接获取了
Passkey.Create和Passkey.Delete权限。黑客甚至能帮你创建或删除通行密钥(Passkey),彻底接管你的账户安全体系。
整个过程,不需要你输入密码,不需要你点“允许”,没有任何弹窗提示。只要你的 Authenticator 里登录了账号,令牌就以明文形式回到了恶意 App 的手里。
微软的补救与我们的防范
好消息是,这个漏洞已经被微软修复,分配了编号 CVE-2026-80097。
微软的修复方法也很直接:把那个“只查证不查人”的逻辑改掉,强制比对真实调用方的包名和请求中声称的包名是否一致。
作为普通用户或企业 IT 管理员,你现在只需要做一件事:
立刻、马上打开 Google Play 商店或公司的 MDM 管理平台,将 Microsoft Authenticator 更新到最新版本。
安全无小事,校验别偷懒
这个漏洞给所有做 App 开发和 SDK 集成的开发者敲响了警钟。
在安卓生态里,exported="true" 的组件就像是开在大街上的大门。如果你要在门后存放敏感数据(如 Token、密钥),永远不要信任调用方自己传过来的“身份证明”。
所有的身份校验,必须基于操作系统提供的、不可篡改的底层凭证(如真实的 Calling UID、真实的 Package Name 和 Signature 的强绑定)。
微软这种“自己查自己”、“用攻击者提供的数据去验证攻击者”的低级逻辑错误,实在是不应该出现在一家顶级安全厂商的核心认证产品里。
希望微软的安全团队在写完代码后,能找个没喝咖啡的下午,自己先做一轮“红蓝对抗”吧。










