Adblock Plus 中的漏洞允许在使用可疑过滤器时执行代码

在 Adblock Plus 广告拦截器中 已确定 脆弱性, 允许 在使用攻击者准备的未经验证的过滤器的情况下(例如,在连接第三方规则集或在 MITM 攻击期间替换规则时),在站点上下文中组织 JavaScript 代码的执行。

具有过滤器集的列表的作者可以通过使用运算符添加规则来在用户打开的站点上下文中组织其代码的执行”改写”,它允许您替换部分 URL。 重写运算符不允许您替换 URL 中的主机,但它允许您自由操作请求参数。 只能使用文本作为替换掩码,并且允许替换脚本、对象和子文档标签 被封锁了.

但是,可以通过解决方法来实现代码执行。
一些网站,包括 Google 地图、Gmail 和 Google 图片,使用动态加载可执行 JavaScript 块的技术,以纯文本的形式传输。 如果服务器允许请求重定向,那么可以通过改变URL参数来实现转发到另一个主机(例如,在Google的上下文中,可以通过API进行重定向“google.com/搜索”)。 除了允许重定向的主机之外,还可以针对允许发布用户内容的服务(代码托管、文章发布平台等)进行攻击。

所提出的攻击方法仅影响动态加载 JavaScript 代码字符串(例如,通过 XMLHttpRequest 或 Fetch)然后执行它们的页面。 另一个重要的限制是需要使用重定向或将任意数据放置在发出资源的原始服务器一侧。 然而,为了证明攻击的相关性,我们展示了如何在打开maps.google.com时使用通过“google.com/search”的重定向来组织代码的执行。

修复工作仍在准备中。 这个问题也会影响拦截器 的AdBlock и uBlock。 uBlock Origin 拦截器不受该问题的影响,因为它不支持“重写”运算符。 曾任 uBlock Origin 的作者
他拒绝 添加对重写的支持,指出潜在的安全问题和主机级限制不足(提出了 querystrip 选项而不是重写来清理查询参数而不是替换它们)。

Adblock Plus 开发人员认为真正的攻击不太可能,因为对标准规则列表的所有更改都会经过审查,并且在用户中连接第三方列表的情况极为罕见。 默认使用 HTTPS 下载标准阻止列表会阻止通过 MITM 替换规则(对于其他列表,计划在未来版本中禁止通过 HTTP 下载)。 指令可用于阻止站点侧的攻击 CSP (内容安全策略),通过它可以明确确定可以加载外部资源的主机。

来源: opennet.ru

添加评论