
成功利用此漏洞可导致用户存储在系统环境变量中的秘密泄露。Chromium 92 版本中存在一个安全漏洞,并在 97 版本中修复。有多个基于 Chromium 引擎的网页浏览器,例如 Google Chrome、Microsoft Edge、Opera 和 Brave。除了 Brave 外,它们都存在漏洞。该漏洞存在于文件系统访问 API 中,更具体地说是 window.showSaveFilePicker() 方法。
CVE 版本: CVE-2022-0337
致谢: Maciej Pulikowski
奖励: 来自 Google VRP 的 $10,000
检查您的浏览器版本:
chrome://version/edge://version/opera://update仅 WINDOWS 存在漏洞。Linux 和 Mac 是安全的。
https://www.youtube.com/watch?v=q7OIEWtalg8
感谢点赞和订阅 😀👍

let a = await window.showSaveFilePicker({suggestedName:'%username%'});
a.name;
示例中使用了 %username% 环境变量。它会返回已登录的 Windows 用户名。此外,还有更多有趣的环境变量:
以下是一些示例:
还有更多...
因此攻击者可以访问目标的 AWS 服务、Github 账户或 Binance 令牌(用于提现)等等...
在我的仓库中查看更多环境变量中的秘密:
上一个示例是在本地 Google Chrome Devtools 中运行的。
显然,攻击者可以制作一个特殊的 HTML 文件(网站)来成功利用此漏洞。
env.html - 是仓库中一个精心制作的特殊 HTML 示例。
但是,用户真的需要下载文件吗?
是的,然而,攻击者可以创建一个网站,鼓励用户按住键盘上的 ENTER 键 2 秒钟,以运行并接受保存文件对话框。因为 Windows 对话框默认聚焦在保存按钮上,文件只会闪烁一下就被保存了。
*.gif 来自 Opera(Chrome 和 Edge 已修复)
总之,用户按住键盘上的 ENTER 键 2 秒钟后,可能导致其系统环境变量泄露。这是一个重大问题,因为用户可能在系统环境变量中存储重要秘密,例如访问其 AWS 服务、Github 账户或 Binance 的凭证。
我给自己设定了修复这个漏洞的挑战。在此,我想强调我不是一名 C++ 开发者 😎。
来源:https://bugs.chromium.org/p/chromium/issues/detail?id=1247389#c9
一种解决方案就是将 suggestedName 中的字符 % 替换为 _ 。这应该能解决问题。

可以插入到:
结果如下:


确实解决了问题,但这不是插入代码的最佳位置 😋 。不过,我很高兴能够自己修复它 😎
最终修复可以在这里找到:
https://bugs.chromium.org/p/chromium/issues/detail?id=1247389#c12
本项目仅可用于教育目的。未经授权针对目标系统使用此软件是违法的,滥用此软件造成的任何损害作者概不负责。