Gmail的动态电子邮件功能AMP for Email中的一个跨站点脚本(XSS)漏洞使安全研究人员获得了5000美元的漏洞赏金。AMP for Email为丰富的交互式电子邮件带来了AMP功能。AMP本身是一个开源HTML框架,用于优化网站以在移动设备上浏览网页。发现该安全漏洞的Adi Cohen表示,他在AMP操场内找到触发XSS的向量没有问题,但发现绕过Gmail的XSS过滤器是一项更艰巨的任务。
Cohen在一篇博文中指出,“绕过XSS过滤器的最简单方法是将其引入与浏览器实际用于渲染给定代码的渲染上下文不同的渲染上下文” 。
由于AMP for Email禁止使用模板、SVG、数学和CSS,因此他将样式表定位为具有多个呈现上下文的XSS有效负载的潜在路径。
这需要过滤器和浏览器呈现样式表的方式之间存在差异,要么通过“诱使过滤器相信虚假的样式标签是真实的”,要么“完全相反”。
Cohen的初始向量在沙箱中工作,因为AMP“在遇到字符串'</style
' 时立即离开CSS上下文,即使它没有右括号 (>
) 或至少后面没有空格”。
然后他能够“欺骗过滤器,让我们相信我们回到了HTML上下文中,而浏览器显然完全忽略了并且很好地保持在CSS的范围内”。
但是“在 AMP 中看起来很有前途的载体,在 Gmail 对其施展魔法之后似乎变得不那么有趣了,”Cohen说。
当他利用 CSS 选择器时取得了突破,该选择器确保 Gmail 返回的有效负载不变——“没有转义或其他突变”。
但是,恶意负载在 AMP 沙箱遇到“ </style ”后提示错误,因此 Cohen 尝试了</styl> ,但 Gmail 的过滤器明智地与</style>相似。
取而代之的是使用编码选择器测试良性有效负载 - 因为Gmail对其进行了解码,他可以使用选择器注入关闭样式标签。
评论已关闭。