Firefox 漏洞允许窃取加密密码:这怎么可能?

信息安全 加密 密码管理 火狐
2021-08-12 02:52:33

据我了解,我保存在 Firefox 密码管理器中的密码是加密的,设置主密码会加密此过程中使用的加密密钥。谷歌热门“火狐是否加密保存的密码?” 返回此Mozilla 支持论坛文章,其中选择的答案(由版主发布)指出:

存储在 logins.json 中的密码是加密的,但加密密钥存储在 key4.db 中(以前在 key3.db 中),如果没有主密码,您只需将这两个文件放在 Firefox 配置文件文件夹中即可查看密码密码管理器。

(请注意,这logins.json是 FF 存储密码的地方。)

这个由高级用户发布的信息安全问题假设密码已加密,甚至在用户设置主密码之前,这个广受好评的问题也是如此。

但是根据 Sophos Naked Security 的文章,Firefox 修复了“主密码”安全绕过漏洞,Mozilla 发布了一个安全修复程序来解决攻击者可以在不输入主密码的情况下将保存的密码复制到剪贴板的问题:

发现本地存储的密码可以通过“复制密码”上下文菜单项复制到剪贴板,而无需先输入主密码,从而可能窃取存储的密码。

如果密码被加密,这怎么可能?

不是主密码,在访问之前需要解密它们吗?我现在非常担心获得我logins.jsonkey4.db文件访问权限的攻击者会拥有我保存的所有密码!

1个回答

如果您没有设置主密码,则登录密码始终可用。如果您确实设置了主密码,则打开“保存的登录”对话框将提示您输入主密码。如果没有正确的主密码,登录列表将为空,因此无需复制密码。

该错误仅在以下特定情况下发生:

  • 设置了主密码。
  • 您已通过在此浏览会话中输入主密码来解锁您的登录。

需要明确的是:如果您设置了主密码,并且在此会话中没有解锁您的登录,您的密码仍将受到保护,并且无法通过此错误获得。

密码以加密方式存储在磁盘上,由从主密码派生的密钥保护。如果您第一次启动 Firefox,它通常只会在遇到登录表单或打开“已保存的登录”部分时提示您输入一次主密码。如果您拒绝此请求,登录将不可用。但是,如果您输入密码,则解密后的密码将一直可用,直到您退出 Firefox。

通常,当您使用Show Passwords按钮时,或者如果您右键单击登录名并选择Copy Password,它会再次提示您输入密码。由于该bug,显示密码确认提示,但密码已经在后台复制。

已保存登录的屏幕截图

在我看来,影响非常小。可以物理访问您的未锁定会话的人已经可以通过其他方式获取密码:

  1. 访问网站,例如https://stackoverflow.com/users/login
  2. 观察登录是否填写。
  3. 打开开发者工具(F12),进入控制台。
  4. 执行: document.querySelector("input[type=password]").value
  5. 观察密码。

或者,您可以转到开发人员工具中的网络选项卡。按登录并观察正在记录的密码。如果已经填写,有很多方法可以获取登录信息。

至于引用 bug 的提交,代码缺陷是masterPasswordLogin()没有等待异步调用( )。这就是为什么在确认登录提示之前已经执行了复制密码的代码。解决方法是等待提示完成。

来自 Mozilla 的原始安全公告仅声明无需输入主密码即可复制密码。从那时起,此安全公告已根据上述说明进行了更新,现在内容如下:

设置主密码后,需要再次输入密码才能在“已保存的登录”对话框中访问存储的密码。发现本地存储的密码可以通过“复制密码”上下文菜单项复制到剪贴板,如果之前在同一会话中输入了主密码,则无需重新输入主密码,从而可能窃取存储的密码。