CVE-2026-7258在PHP 8.2.31、8.3.31、8.4.21和8.5.6之前的多个版本中存在一个安全漏洞。当`urldecode()`等函数将带符号的字符(signed char)传递给`isxdigit()`等字符类型(ctype)函数时,在默认使用带符号字符且优化了基于表查找的ctype函数的系统(如NetBSD)上,会导致使用负偏移量访问数组。这一行为可能触发拒绝服务(DoS)攻击,导致应用程序崩溃或不可用。
该漏洞的根本原因在于PHP内核中对字符类型的处理逻辑依赖于系统的`char`类型实现。在x86架构的NetBSD等系统上,`char`默认为有符号类型,其取值范围为-128到127。当`urldecode()`处理特定输入时,会将解码后的字节(可能大于127)作为`char`传递。由于数值大于127,在带符号系统中它被解释为负数。随后,这个负数被用作索引去访问ctype函数的内部查找表。由于代码未对索引进行边界检查或强制转换为无符号整数,负数索引导致了数组越界访问。这种越界访问会引发非法内存访问错误,从而造成PHP解释器崩溃。