CVE-2026-6104PHP 8.4.21和8.5.6之前的版本中,mbstring扩展存在严重漏洞。当传入包含嵌入NUL字节的编码名称给特定函数时,由于错误依赖strncasecmp()的返回值判断字符串长度,导致越界读取全局内存。攻击者无需交互即可利用此漏洞,造成服务崩溃或敏感信息泄露。
漏洞根源在于PHP mbstring扩展对编码名称的处理逻辑。当strncasecmp()比较两个字符串时,如果前N个字符匹配(包括遇到NUL字节截断的情况),它会返回0。代码错误地将返回值0等同于“字符串完全相等且长度相同”。攻击者通过构造一个包含NUL字节的恶意编码名称(例如 "UTF-8\0extra"),可以绕过长度检查。在后续处理中,程序仅根据NUL字节前的部分读取数据,导致访问指针超出预期分配的内存边界,从而读取全局内存区域的内容。