因而可能给针对整个互联网上约27%的网站发动攻击留下了可趁之机。
互联网上所有网站的逾四分之一有可能因一个之前已打上补丁的安全漏洞而受到危及,这个漏洞会让WordPress的核心更新服务器岌岌可危。
之前就已堵上的远程代码执行漏洞出现在api.wordpress.org里面的一个php Web钩子(webhook),这个钩子让开发人员得以提供一种他们所选择的哈希算法,以证实代码更新是合法有效的。
WordPress安全公司WordFence的首席开发员马特·巴里(Matt Barry)发现,攻击者可以提供其自己的安全性极其薄弱的哈希算法,作为这个验证过程的一部分,从而让共享密钥得以在几个小时的期间遭到蛮力攻击。
企图猜测的速度非常小,小到足以不会引起WordPress安全系统的注意。
钻这个漏洞空子的攻击者随后可以将URL发送到WordPress更新服务器,这些URL被接受后,被发送到所有的WordPress网站。互联网监管服务网站W3techs.com估计,那些网站占整个互联网的27.1%。
巴里说:“通过攻陷api.wordpress.org,攻击者就有可能一下子攻陷全球四分之一以上的网站,这种情形是可以想象的。”
“我们分析了WordPress的代码,结果发现一个安全漏洞可能让攻击者得以在api.wordpress.org上执行自己的代码,并获得对它的访问权。”
“攻陷这台更新服务器会让攻击者得以提供自己的URL来下载软件,并安装到WordPress网站上,这一切是自动的。”
WordPress的更新流程示意图(图片来源:WordFence)
攻击者可以采取进一步的措施;一旦被植入后门的更新版或恶意的更新版分发出去,它们可能会禁止默认的自动更新,阻止WordPress修复那些中招的网站。
巴里表示,WordPress并未使用签名验证技术来检查有待安装的更新版,而是信任所有URL和api.wordpress.org提供的软件包。
WordPress的哈希验证过程可能会受到削弱,让攻击者得以使用POST参数原样未转义传递到shell_exec,授予远程代码执行权限,从而危及api.wordpress.org更新服务器。
巴里选择了薄弱的adler32哈希算法,大大减少了处理密码可能所需的哈希数量:从43亿个(232)骤减到100000个至400000个。
巴里说:“这个猜测数量管理起来要容易得多,我们需要将这些猜测发送到api.wordpress.org上的Web钩子,可能会在几小时内发送完毕。一旦Web钩子允许请求,攻击就会在api.wordpress.com上执行外壳命令,从而让我们得以访问底层的操作系统,api.wordpress.org因此中招。”
9月2日,巴里将这个安全漏洞报告给了WordPress的开发者Automattic,五天后就发布了修正版。
不过他仍认为api.wordpress.org是导致依赖其服务器来更新的数百万WordPress网站面临险境的单一故障点。
他表示,自己提出请求,希望探讨这个故障点,而且需要为更新版提供一种验证机制,但是Automattic并没有作出回应。
巴里并非唯一担心缺乏控制的安全研究人员。本周OpenWall安全邮件列表上的探讨描述了理论上的攻击,与这位研究人员近日披露的攻击非常相似。
不过这个想法可以追溯至三年前,当时一个用户提议,应该对更新版实行签名制,可是迄今为止这个想法仍被忽视。