Adblock Plus过滤器漏洞可运行发现的任意代码
- 类别: 互联网
大多数内容阻止程序使用和加载筛选器列表,其中包括在默认情况下阻止或更改Web浏览器中访问的站点上某些内容的指令;这样做是为了确保默认配置确实会立即阻止大量不需要的内容。
大多数扩展支持自定义列表和单个过滤器。用户可以在大多数扩展程序中加载自定义列表,也可以将自己的过滤器添加到列表中。
更新资料 : Eyeo GMHB宣布 今天它将删除$ rewrite函数。期待很快会有新版本发布,如果从扩展中删除。 结束
安全研究员Armin Sebastian 发现 某些adblocker(例如Adblock Plus)中的漏洞,可用于在浏览器中访问的网站上运行恶意代码。
该漏洞利用了一个名为$ rewrite的过滤器选项,Adblock Plus支持将其插入网页中的任意代码。 $ rewrite过滤器用于通过重写来替换站点上的代码。 filter选项限制了操作;它旨在仅从第一方来源而不是第三方站点或服务器以及某些请求中加载内容。脚本或对象,也不允许。
Sebastian在$ rewrite中发现了一个漏洞,攻击者可能利用该漏洞从远程位置加载内容。需要满足的条件是:
- 需要使用XMLHttpRequest或Fetch加载JavaScript字符串,并且必须执行返回代码。
- 无法限制页面上的来源,例如通过使用内容安全策略指令,最终请求URL不能在执行之前验证。
- 代码的来源必须具有服务器端开放重定向,或者必须承载任意用户内容。
符合所有这三个要求的属性包括Google Maps,Gmail或Google Images等。一个 概念证明 已在作者的网站上发布,您可以在Google Maps上进行尝试以验证其是否有效。
我在Chrome和Firefox中尝试了该漏洞利用程序,但无法正常工作。 劳伦斯·艾布拉姆斯 在Bleeping Computer上设法成功了。
结束语
攻击还有另一个要求,因为它依赖于筛选器。需要将操纵的过滤器添加到内容阻止程序使用的过滤器列表中。两个最常见的选项包括用户手动将过滤器添加到其内容阻止程序,或者操作的过滤器位于要加载的过滤器列表中。
第二种选择似乎更有可能,尤其是在用户加载扩展中的其他列表的情况下。列表并不是第一次被操纵,但是它并不经常发生。
uBlock Origin扩展不受此问题影响,因为它不支持$ rewrite。