AdBlock Plus广告过滤插件漏洞可被执行恶意程序代码

安全研究人员发现广告过滤插件程序如AdBlock Plus及uBlock,其中一项功能可能反成为程序代码注入漏洞,被用来在Google服务等网页上执行恶意程序代码。

研究人员Armin Sebastian是在AdBlock Plus 3.2版发现这项漏洞,涵盖Chrome, Firefox 和Opera版本。去年7月公布的AdBlock Plus 3.2版加入一项“$rewrite”的功能,之后AdBlock另一产品uBlock也实例了这项功能。研究人员发现,在特定条件下,$rewrite过滤功能可能让维护过滤名单的单位,在网页上注入任意程序代码。

按AdBlock、uBlock的用户群体计算,受影响人数超过1亿人。利用本漏洞黑客可以很简单黑入复杂的网页服务,包括Google服务在内。此外,这类攻击在所有主要浏览器中都可发动、又难以侦测,加上过去也曾发生过滤名单被用作政治攻击,是风险相当高的漏洞。

研究人员解释,$rewrite过滤功能在广告过滤程序中,旨在借由重导向(而非封锁)网页调用,又能从URL移除关注数据及封锁广告,这是因为有时不需完全封锁网页。利用$rewrite指令,第三方过滤名单可以选择性复写URL的参数。

但在某些条件俱足情况下,这项功能可被用来对网页程序发动攻击,包括网页利用XMLHttpRequest 或Fetch指令加载JavaScript 字符串以执行回传的程序代码,网页又无法限制通过内容安全策略或URL验证来限制来源域名,而回传程序代码的来源又允许服务器端Open Redirect,或托管任意内容程序代码。三个条件满足时,不肖的过滤名单维护企业,就可能加入恶意过滤字符串进而执行恶意程序代码。

研究人员认为,个人或企业可能被锁定IP成为攻击目标。但雪上加霜的是,插件程序会定期更新第三方单位提供的过滤名单,使外部企业包含的恶意程序代码很容易就被置换掉,以致无法被追查到。

凑巧的是,Gmail和Google图片就完全符合三项条件。不过在Sebastian通报后,Google认为这是“意欲的行为(intended behavior)”而非漏洞,且只是AdBlock Plus及uBlock的安全问题。但研究人员指出,除了Google服务外,许多其他服务也受到影响。

研究人员指出,为防止此类攻击,网页服务企业以白名单列出允许的调用来源,或关闭服务器端open redirect。而广告插件程序则应选择不支持$rewrite功能的产品,例如uBlock Origin(并非uBlock供应商,AdBlock才是)。

The Register引述AdBlock方面指出,公司相当重视本问题,目前正在研究中。