banner
约 1,800 字
6 分钟

Edge浏览器又爆漏洞,你的密码正在以明文形式裸奔!

摘要

媒体曝光 Edge 浏览器运行时会将已保存密码以明文形式加载进进程内存,且会通过 AutoImportAtFirstRun / ImportSavedPasswords 策略主动同步其他浏览器(如 Chrome)的密码,存在暴露风险。文章用 Process Hacker 抓取 msedge.exe 内存 dump 并复现明文密码,给出防护:删除 Edge 已存密码、清除浏览数据、关闭密码自动保存;最终建议重要密码交由第三方独立密码管理器(如自托管 Bitwarden)。

前言

最近有媒体爆出一个有点吓人的消息:Edge 浏览器在运行期间,可能会把已保存的密码以明文形式加载到进程内存中。更离谱的是,Edge 还会主动获取电脑上其他浏览器(比如 Chrome)保存的密码——微软的官方策略文档里确实存在 AutoImportAtFirstRun 和 ImportSavedPasswords 这类导入相关策略。

换句话说,即使你从来不用 Edge 浏览器,微软在更新时也可能同步 Chrome 的历史记录和密码,密码随时都有暴露的风险。坦白讲,我对这个漏洞的原理谈不上完全吃透,也觉得"内存里的明文"平时没人能轻易读到,但既然看到了,本着"能防就防"的心态,还是尽量规避一下比较好。这篇就把复现方法和防护建议都整理出来。

先说清楚:这不是"密码没加密",而是"加密在关键时刻失效了"

看到"明文密码"这四个字,很多人的第一反应是"浏览器根本没加密"。这个理解不对,而且会误导你后续做错防护选择。真实情况值得花两分钟搞明白:

浏览器的密码库一直是加密的。 在 Windows 上,Chrome / Edge 保存的密码,最终是用 DPAPI(Windows 数据保护 API) 加密落盘的。DPAPI 的密钥由系统托管,并且和"当前登录的 Windows 用户"绑定——这就意味着:

  • 别的 Windows 用户登录进来,读不到你的密码库;

  • 把 Login Data 那个文件单独拷走,换台机器也解不开(因为缺少对应用户的 DPAPI 密钥)。

听起来很稳,对吧?那问题出在哪?

问题在于"解密之后"。 浏览器要用密码时,必须先用 DPAPI 解密,然后把它交给网页表单去自动填充。在那个瞬间,密码是以明文形式存在于 msedge.exe 进程的内存里的——而且为了反复填充多个页面,它可能常驻一段时间。

于是攻击面就出现了:只要能对进程内存做一次转储(dump),就能从里面把明文捞出来。加密解决了"文件被偷",但没有解决"进程内存被读"。

这也解释了为什么这个漏洞"看起来严重、实际却难以解决":内存里的明文是任何密码管理器都躲不开的环节——不管用什么加密方案,总有个时刻要把明文交给使用方。所以业界对这类问题的定位是"降低暴露窗口",而不是"彻底消除"。

漏洞复现:密码确实在内存里裸奔

空口无凭,我们实际验证一遍:

  1. 先看看自己的已保存密码列表,在 Edge 地址栏输入 edge://settings/passwords 即可打开。我已经清理过了,只留两个做演示。

blog image
  1. 下载开源的 Process Hacker 工具,用来提取 Edge 的进程内存。可在应用商店或官网下载:https://processhacker.sourceforge.io/

  2. 打开 Process Hacker,在进程列表里找到 msedge.exe,右键 → Create dump file → 选择 full,导出完整的内存转储文件(dump 文件)。

blog image
  1. dump 文件非常大,要用专业的十六进制 / 文件编辑器打开才能看。我用的 Visual Studio 来打开(也可以用 VS Code 的 Hex Editor 插件或 HxD 等工具)。

blog image
  1. 在 dump 里搜索,就能看到网址、协议、用户名、密码都以明文形式保存在内存里——密码在这里几乎是裸奔状态。

blog image
  1. 最离谱的是对比:在浏览器界面里查看已保存密码还需要再验证一次身份,可这些明文密码在内存 dump 里却根本没有任何保护,谁拿到 dump 文件谁就能读。

blog image

但要冷静一下:这个漏洞的真实威胁模型

复现成功很吓人,不过在动手改配置之前,有必要把"谁能利用它"讲清楚,否则你会高估或低估风险。

关键前提是:转储进程内存需要管理员权限。Process Hacker 这类工具必须提权才能读别的进程的内存。所以现实的攻击路径是:

攻击者

能否利用

说明

网页里的 JavaScript

❌

浏览器沙箱严禁网页访问本地进程内存

同一台电脑的普通用户

❌

没有权限 dump 你的进程

本机管理员权限的恶意软件

✅

这是最主要的威胁来源

拿到你 dump 文件的人

✅

但前提是能把 dump 文件弄出来

所以结论是:威胁模型是"本机已被拿下"。

这意味着:

  • 对个人自用电脑:风险属于中等偏低。真到了"恶意软件已有管理员权限"这一步,它能干的事比偷密码多得多(键盘记录、屏幕截图、直接读浏览器 cookie 冒充登录……);

  • 对公司电脑、共用电脑、借人用过的机器:风险明显更高,因为"其他人有管理员权限"这件事很常见。

真正值得警惕的是文章开头那个细节——Edge 会主动导入其他浏览器的密码。因为这让暴露面超出"不用 Edge 的人"的预期:你明明只用 Chrome 且从不打开 Edge,但后台更新的 Edge 可能已经把那份密码读进去了,于是多了一个进程的内存里有你的明文密码。这是"多一个副本被泄露的机会",与漏洞本身的严重程度是两回事。

如何防护

如果你不想让密码这样暴露,可以按下面几步处理:

  1. 删除 Edge 里已经保存的密码。

blog image
  1. 清除浏览器数据,把残留的历史、缓存一并清掉。

blog image
  1. 关闭密码自动保存和自动填充,从源头杜绝新的密码被存进浏览器。

blog image

再补两件原文没提、但很关键的事

第一件:顺手把"导入"这条口子也堵上。 光是清掉已保存的密码还不够——只要导入策略还开着,Edge 下次启动仍可能从 Chrome 那边把密码再拿一遍。在 edge://settings/profiles/importBrowsingData 里关掉"导入浏览数据",或在企业环境下用组策略把 AutoImportAtFirstRun 设为 Disabled。

第二件:换成 Chrome 或 Firefox 并不能解决问题。 这一点最容易产生错觉。

  • Chrome 在 Windows 上用的也是 DPAPI,同样的"解密后进内存"路径;Chrome / Edge 是同源内核,行为高度一致;

  • Firefox 有自己的加密方案,但同样要在填充时把明文交给页面;

  • 换句话说:"浏览器保存密码"这个模式本身才是问题,不是你选了哪个浏览器。

所以真正的方向只有一个——把密码交给一个"主密码 + 零知识加密"的独立工具。

更根本的办法:别把密码交给浏览器

上面的操作只是"亡羊补牢",最稳妥的做法其实是:

不要把重要密码保存在任何浏览器里,而是使用第三方的独立密码管理器。

独立密码管理器会把主密码和站点密码分开加密存储,就算有人拿到你的浏览器 dump 也读不出真实密码。更关键的是它的解锁模型:主密码只在你手动解锁时存在于内存中,用完可以锁定;日常填充由插件从加密仓库内存中取值,而不是一个"长期在内存里躺着"的清单。

这里的核心技术是零知识加密——服务端(哪怕是你自己搭的)存的是密文,它永远没有能力解密你的密码库。这也是为什么自建一个密码管理服务是安全上"只赚不亏"的操作:数据在你自己的机器上,密钥只在你脑子里。

我之前也介绍过如何免费搭建开源密码管理工具 Bitwarden,它支持 Windows、macOS、Linux、Android、iOS 和浏览器插件,完全可以自托管:无须 NAS,用 Cloudflare 免费搭建开源密码管理工具 Bitwarden。

blog image

小结

我个人觉得这个漏洞的危害程度属于"没那么严重"的级别(毕竟要拿到本机 dump 文件才能读到),但有意思的是,目前似乎只有 Edge 存在这个问题,而且微软明知道却一直没彻底改进。既然大厂不主动,那我们就自己小心:把密码交给更专业的工具管理,才是对自己账号安全负责的做法。

最后给一句可执行的建议:如果你现在浏览器里存着重要账号的密码,今天就把它迁走,然后清空浏览器密码库。 这件事花十分钟,但收益是长期的。

END

相关文章

暂无相关文章