Microsoft Edge 被曝会话期间明文保存所有密码于内存

挪威安全研究员 Tom Jøran Sønstebyseter Rønning 发现,Microsoft Edge 启动时会将所有已保存的密码解密并以明文形式加载到进程内存,在整个会话期间持续保留——即使用户从未访问需要这些凭证的网站。微软回应称此行为是"by design"(有意为之)。

发现过程

Rønning 在 X 上发布了 proof-of-concept 视频,演示了如何从 Edge 进程内存中提取明文密码。德国 IT 媒体 Heise.de 独立复现了该发现:创建一个测试密码,关闭并重启 Edge,通过任务管理器创建内存转储(约 670MB),用十六进制编辑器搜索即可找到完整的明文密码。

SANS Internet Storm Center 的 Rob VandenBrink 也独立验证了该问题,使用 strings -n 8 msedge.DMP | find "comhttps" 命令就能批量提取出所有保存的凭证。

问题的严重性

Edge 的密码管理器界面要求 Windows Hello 认证才能查看已保存的密码,给人一种安全保护的印象。但进程内存中,所有密码在浏览器启动时就已经以明文形式存在。接口层面的安全保护从攻击者角度来看只是装饰。

具体风险场景:

  • 终端服务器 / 共享 PC:管理员权限的攻击者可读取其他登录用户 Edge 进程内存中的密码,包括已断开但仍有活跃会话的用户
  • 恶意软件:用户执行的恶意软件可以直接 dump Edge 内存获取所有已保存密码,无需额外提权
  • 企业环境:RDP 会话中被攻陷的管理员账户可横向获取其他用户的凭证

Chrome 的做法

Google Chrome 采用了不同的策略:

  • 按需解密:仅在需要自动填充或用户主动查看时才解密密码
  • App-Bound Encryption (ABE):将解密操作绑定到已认证的 Chrome 进程,其他进程无法复用加密密钥
  • 短时驻留:明文密码在内存中仅短暂存在

Rønning 明确表示,Edge 是他测试过的 Chromium 浏览器中唯一表现出此行为的。Chrome、Brave 等其他基于 Chromium 的浏览器均未出现类似问题。

微软的回应

Rønning 将此问题报告给了微软,微软的回应是此行为属于"by design"——有意的工程设计,不是 bug。安全专家 David Shipley(Beauceron Security CEO)对此评价道:"这不是功能,这是逃避责任的借口。这相当于向网络犯罪白旗投降,然后把白旗变成空白支票。"

Rønning 计划在 GitHub 上发布一个简单工具,让用户自行验证 Edge 内存中的明文密码问题。

CWE 分类

该问题属于 CWE-316:Cleartext Storage of Sensitive Information in Memory(内存中明文存储敏感信息)。德国联邦信息安全局(BSI)在 2025 年 12 月的密码管理器测试中,就已将 Edge 密码管理器排除在评测范围之外。

建议

仍在使用 Edge 密码管理器保存密码的用户,建议迁移到专用密码管理器(如 Bitwarden、1Password 等),这些工具在内存中处理密码的方式更为安全。

来源:Cybernews · Computerworld · SANS ISC

相关推荐