PHP 8.5.7 是必须升级的安全补丁版本,紧急修复 CVE-2026-44927(指针截断致内存越界)和 CVE-2026-44928(URI 相等性误判),直接影响请求入口、重定向校验、缓存键生成与访问控制。

PHP 8.5.7 不是功能更新,而是必须升级的安全补丁版本。它不新增语法,但修复了两个直接影响请求入口和权限控制的高危漏洞——CVE-2026-44927 和 CVE-2026-44928。这两个问题不是“可能被利用”,而是已在真实场景中触发过进程崩溃、缓存污染与跳转绕过。只要你的服务解析、比较或校验 URI,就必须升级。
CVE-2026-44927:指针截断引发内存越界
该漏洞源于 uriparser 库在计算字符串偏移时,将 64 位指针差值强制转为 32 位 int,导致高位丢失。攻击者可构造特定长度与编码组合的 URI(如含超长路径段、混合 % 编码或非 ASCII 主机名),精准触发截断,造成:
- 内存越界读写,引发段错误或敏感信息泄露
- 路径规范化失败,例如把
https://a.com/%ff%ff/path中非法字节误判为合法起始位置 - 白名单校验绕过,恶意 URL 被当作合法地址放行
CVE-2026-44928:URI 相等性误判破坏安全逻辑
EqualsUri 系列函数对 query、fragment 等组件采用宽松比较,忽略编码差异、参数顺序、空格与控制字符,导致语义不同但字面相似的 URI 被判定为“相等”。典型风险包括:
- 重定向白名单失效:攻击者提交
https://trusted.com/?return=https://evil.com#xss%0A,被误认为合法跳转 - 缓存键碰撞:不同语义的 URI(如
/api?sort=desc&page=1与/api?page=1&sort=desc)命中同一缓存条目,返回错误响应 - OAuth 回调校验绕过:带恶意 fragment 的回调地址通过 URI 比较验证
哪些业务场景必须立即验证
升级后不能只跑 php -v 就完事。以下模块需重点回归测试:
立即学习“PHP免费学习笔记(深入)”;
- API 网关的路由匹配与 Host/Path 白名单逻辑
- 登录页、支付页中的重定向地址校验(尤其是含 fragment 或 query 参数的跳转)
- CDN 或应用层缓存的 URI 哈希键生成逻辑
- 基于 URI 签名的鉴权中间件(如 JWT redirect_uri 校验)
- 使用
Uri::parse()或Uri::build()构建/解析链接的业务代码
升级操作要点
PHP 8.5.7 是向后兼容的补丁更新,升级过程本身风险极低,但需注意几个实操细节:
- 确认来源:仅从 windows.php.net(Windows)或 Ondřej Surý PPA(Debian/Ubuntu)获取官方构建包
- 启用关键扩展:PHP 8.5 默认禁用
uri扩展,需在php.ini中显式添加extension=uri - 验证生效:执行
php -m | grep uri确认扩展已加载,并用Uri::parse("https://a.com")测试基础功能 - JIT 用户额外检查:若启用 Opcache JIT,建议在预发布环境观察错误日志与进程重启频率,确认 tracing JIT 崩溃问题已收敛
不复杂但容易忽略。这两个 CVE 表面是底层库问题,实际会穿透到路由、缓存、鉴权每一层。升了不一定立刻看到变化,但不升,就等于把钥匙交给了攻击者。



















