目前安装在200,000多个网站上的广告插入器WordPress插件中发现的一个严重安全问题允许经过身份验证的攻击者远程执行PHP代码。
广告插播器是一个“广告管理插件,具有许多高级广告功能,可以在最佳位置插入广告”,并且支持“各种广告,包括Google AdSense,Google广告管理系统(DFP广告管理系统 - DFP广告管理系统),上下文亚马逊原生购物广告,Media.net和旋转横幅。“
该漏洞源于使用check_admin_referer()进行授权,当时它专门用于保护WordPress站点免受使用nonce的跨站点请求伪造(CSRF)攻击 - 一次性令牌用于阻止过期和重复请求。
WordPress官方文档网站不鼓励这种做法,即“绝不应该依赖Nonce进行身份验证或授权,访问控制”。
该漏洞被认为是关键漏洞,会影响所有安装了广告插入器插件版本2.4.21或更低版本的WordPress网站。
要解决此问题,WordPress管理员应将其更新到版本2.4.22,该版本是在收到安全漏洞通知后一天内由插件开发人员发布的。
“弱点允许经过身份验证的用户(订阅者及以上用户)使用该插件在网站上执行任意PHP代码,”根据发现Ad Inserter插件关键错误的Wordfence研究人员的说法。
获取nonce的经过身份验证的攻击者可以绕过由check_admin_referer()函数驱动的授权检查,以访问Ad Inserter插件提供的调试模式。
“通常情况下,这些调试功能仅供管理员使用,并且当启用某些选项时,几乎每个页面都会包含一个java script块。该java script包含ai_ajax_backend操作的有效nonce,” Wordfence 解释说。
但是,一旦攻击者拥有一个nonce可供他使用,他就可以立即触发调试功能,甚至更危险,“通过发送包含任意PHP代码的恶意负载来利用广告预览功能。”
插件开发人员于7月13日发布了2.4.22补丁程序https://wordpress.org/plugins/ad-inserter/#developers,并在7月12日收到安全漏洞通知后修复了经过身份验证的远程执行漏洞。
如广告插入器插件的Wordpress市场条目所示,在超过200,000个网站的安装基础上,只有超过50,000个网站安装它,直到这个故事发布。