众所周知的点击劫持攻击的新变种,称为“DoubleClickjacking”,对 Web 应用程序及其用户构成了严重的安全威胁。
这种新颖的技术利用用户的双击操作来绕过所有已知的针对传统点击劫持的防御措施,包括 SameSite Cookie 和 X-Frame-Options 标头。
通过利用鼠标事件之间的时间差异,攻击者可以操纵用户在不知情的情况下授权恶意操作,例如授予 OAuth 权限或更改帐户设置。
DoubleClickjacking 的工作原理
此次攻击由安全研究员Paulos Yibelo设计,涉及一个欺骗性序列,即用户与两个浏览器窗口进行交互。
具体细节如下:
- 1.初始设置:攻击者控制的网页会打开一个新窗口,显示看似合法的提示,例如 CAPTCHA。
- 2.窗口劫持:在用户第一次点击时,攻击者的脚本会操纵父浏览器窗口来加载敏感页面,例如 OAuth 授权表单。
- 3.点击利用:当用户完成双击时,第二次点击会无意中与父窗口中现已暴露的敏感页面进行交互,从而授权攻击者的请求。
该攻击利用“mousedown”和“onclick”事件之间的延迟来无缝执行此交换。
重要的是,它需要最少的用户交互,并且适用于所有支持 OAuth API 的主要 Web 平台,使其成为一种普遍威胁。
DoubleClickjacking 已在 Salesforce、Slack 和 Shopify 等知名平台上得到证实。
这些服务服务于全球数百万用户,由于依赖 OAuth 进行用户身份验证和 API 权限,因此特别容易受到攻击。
DoubleClickjacking 带来的主要威胁包括账户接管(用户在不知情的情况下授予攻击者广泛的 API 访问权限)和设置操纵(攻击者可以禁用安全功能、更改账户配置或确认欺诈交易)。
此外,攻击范围可能不仅限于网站,还包括基于浏览器的加密钱包和移动应用程序,从而进一步扩大其范围。
缓解策略
传统的反点击劫持措施(例如 X-Frame-Options 标头和 SameSite Cookie)对 DoubleClickjacking 无效。
这些防御措施旨在防止单击攻击,但无法解决多点击情况或快速窗口上下文切换。
此外,对鼠标事件时间的依赖为攻击者提供了一种强大的工具,可以在不引起怀疑的情况下绕过安全控制。
为了应对这一新威胁,开发人员和安全团队应立即实施保护措施:
- 客户端防御:基于 JavaScript 的库默认禁用按钮,仅在检测到真正的用户交互(例如鼠标移动或键盘输入)后才激活它们,可以防止漏洞利用。
- Dropbox 和 GitHub 等平台已成功部署了类似的保护措施。
- 长期浏览器改进:引入新的 HTTP 标头(例如“双击保护:严格”)可以通过限制双击序列期间的快速 UI 更改来缓解此攻击。
- 扩展内容安全策略 (CSP) 功能以涵盖此类场景是另一种潜在解决方案。
- 开发人员提示:敏感页面,尤其是处理 OAuth、付款或高权限操作的页面,应采用保护性库或确保严格的 UI 验证。
原文始发于微信公众号(网络研究观):新的“DoubleClickjacking”攻击针对 OAuth 进行帐户接管
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论