Chrome 104 版本带来了一个新 Bug :网站无需任何用户手势条件,即可对用户的剪贴板进行写入操作。
剪贴板就是我们平时复制粘贴的内容,里面可能存放一些非常重要的信息,比如密码或者公钥、验证码这类。一般来说一个网页应当在查询到对应的用户手势的情况才能使用剪贴板,比如复制内容的键盘快捷键 (Ctrl+C),又或者移动端的长按文本框。
然而 Chrome 104 版本删掉了用户手势条件的判断,导致网站在没有任何提示的情况下替换掉剪贴板中的数据,这非常危险,可能会导致重要信息被覆盖,或者一些垃圾信息恶意写入行为。
Chrome 开发人员已经发现了这个问题,但尚未修复,它仍然存在于当前版本的谷歌 Chrome 浏览器中,无论是移动端还是 PC 端。
另外,部分 Chrome 用户在网页复制文本的时候,会随机复制页面的样式代码、页面 URL等其他内容,(这取决于网站想往你的剪贴板放什么)。而且整个过程没有任何可见的指示或用户交互:本来只想复制一个单词,然而当你打开剪贴板的时候,就会发现里面充斥着各种各样的内容。
开发者 Jeff Johnson 对该 Bug 进行了详细的分析,并制作了 Bug 的演示网站。使用 Chrome 104 及以上版本访问 https://webplatform.news/,你的系统剪贴板就会出现如下文本:
Hello, this message is in your clipboard because you visited the website Web Platform News in a browser that allows websites to write to the clipboard without the user’s permission. Sorry for the inconvenience. For more information about this issue, see https://github.com/w3c/clipboard-apis/issues/182.
您好,此消息出现在您的剪贴板中,因为您在浏览器中访问了网站 Web Platform News,该浏览器允许网站在未经用户许可的情况下写入剪贴板。 带来不便敬请谅解。 有关此问题的更多信息,请参阅 https://github.com/w3c/clipboard-apis/issues/182。
小编已经测试过,在没有任何提示的情况下,我的系统剪贴板被网站写入了上述内容。
此外,大家可能认为浏览器只有在复制粘贴的情况下才会打开剪贴板权限,然而在 Jeff Johnson 的测试中,以下 DOM 事件都会授予网页使用剪贴板 API 覆盖系统剪贴板的权限:
- click
- copy
- cut
- focusout
- keydown
- keyup
- mousedown
- mouseup
- pointerdown (仅限桌面)
- pointerup (仅限桌面)
- selectstart
单击链接或者向下滚动页面这些完全无关的指令也算,可以这么说:当你在网页中动了鼠标,它就有权限往你的剪贴板放东西。
而且这不是 Chrome 的特性, Safari(桌面和移动)和 Firefox 也是如此。