CVE-2026-9227GutenBee是WordPress的一个流行 Gutenberg 编辑器块插件,提供多种高级内容编辑组件。该插件在2.20.1及之前所有版本中存在一处严重的任意文件上传漏洞,源于gutenbee_file_and_ext_json函数中的文件名验证逻辑缺陷。漏洞根源在于使用strpos()函数检查文件名时,仅判断文件名中是否包含'.json'字符串,而未验证文件扩展名是否真正以.json结尾。这一逻辑错误使得攻击者可以通过上传双扩展名文件(如shell.json.php)绕过安全检查,成功上传可执行的PHP文件到服务器。由于该插件是WordPress生态中的热门组件,被广泛应用于各类企业网站和博客系统,漏洞影响范围广泛。攻击者利用此漏洞可实现远程代码执行,完全控制网站服务器,窃取敏感数据、植入后门或发起进一步攻击。
漏洞存在于GutenBee插件的gutenbee_file_and_ext_json函数中。该函数使用PHP的strpos()函数检查上传的文件名是否包含'.json'字符串,代码逻辑为:strpos($filename, '.json') !== false。这种检查方式存在致命缺陷,因为strpos()只会检查字符串中是否包含目标子串,而不会验证子串出现的位置。例如,对于文件名'shell.json.php',strpos()会返回true(因为包含'.json'),但文件实际扩展名是.php。攻击者可以利用这一点上传恶意PHP文件。代码在第570、571、579行附近存在此漏洞。修复方案是使用pathinfo()或正则表达式验证文件扩展名是否真正为.json,即检查pathinfo($filename, PATHINFO_EXTENSION) === 'json'。攻击者只需拥有作者级别(PR:L)的WordPress账号即可利用此漏洞,无需管理员权限。