一个被IT员工用awesome来描述的漏洞——Gmail中的XSS漏洞,已经被Google解决。

来自Security frim Securitum的首席安全研究员MichałBentkowski在Gmail中发现了一个XSS漏洞,并在Google解决该漏洞后于本周负责任地披露了该漏洞。
7月份推出的AMP4Email特性中,该漏洞被Google IT人员描述为一个令人惊叹的XSS问题。Bentkowski于2019年8月通过谷歌漏洞奖励计划报告了该漏洞。
AMP4Email使电子邮件中动态内容的管理变得更容易,它使用户可以轻松地直接从消息内部直接采取行动,例如对事件进行RSVP,填写调查表,浏览目录或回复评论。
即使AMP4Email实现了一个只允许动态邮件中的标记和属性列表的强验证程序,它也没有实现一个防止跨站点脚本(XSS)攻击的验证系统。专家注意到标签中不允许使用id属性,所以决定调查AMP4Email是否会受到DOM攻击。

“ DOM Clobbering是web浏览器的一个遗留特性,它一直在许多应用程序中造成麻烦。基本上,当您在HTML中创建一个元素(例如)并希望从JavaScript中引用它时,通常会使用document.getElementById('username')或document.querySelector(''username')等函数。但这不是唯一的办法!传统的方法是通过全局窗口对象的属性访问它。因此在本例中window.username与document.getElementById('username')完全相同!如果应用程序根据某些全局变量的存在做出决策,那么这种行为(称为DOM Cloberring)会导致有趣的漏洞(想象一下:如果(窗口…){…})…”
专家验证了AMP4Email通过禁止id属性的某些值(即AMP)来对DOM的破坏提供了某种保护措施。但是,如果函数尝试加载JS文件,则在触发404错误的AMP模式下该限制不起作用,从而导致在结果URL的中间出现“未定义”部分(https://cdn.ampproject.org/rtv/undefined/v0/AMP-auto-lightbox-0.1.JS)。
研究员继续说:“ AMP尝试获取AMP模式的属性以将其放入URL中,由于DOM破坏,缺少了预期的属性,因此未被定义。”
研究人员发现该代码创建了一个新的script元素,然后检查AMP_MODE.test和window.testLocation是否都是真实的。
Bentkowski发现可以通过编写特定代码来重载window.testLocation来控制URL。
无论如何,由于在AMP中部署了Content-Security-Policy,代码在实际情况下无法执行。
专家表示:“我没有找到绕过CSP的方法,但当我尝试绕过基于dir的CSP时,我发现了一个有趣的绕过方法,并在twitter上发布了相关信息(后来发现,2016年的CTF中已经使用了相同的技巧)。Google在其错误赏金计划中,实际上并不期望绕过CSP并支付全部赏金。这仍然是一个有趣的挑战,也许其他人会找到绕过的方法。”
“在文章中,我展示了在满足某些条件的情况下,如何使用DOM Clobbering来执行XSS。这真有趣!如果你想玩这些类型的XSS,看看我的XSS挑战,它是基于这个XSS的。“
下方是Gmail XSS漏洞时间线:
2019年8月15日–向Google发送报告
2019年8月16日–“不错!”
2019年9月10日– Google回应:“这个漏洞太惊人了,感谢您的报告!”
2019年10月12日– Google确认该错误已修复(尽管实际上它早就修复了)
2019年11月18日–出版
文章转自华盟网

