PHP 8.5.11 发布,修复多项安全漏洞 ​

PHP 项目已发布 PHP 8.5.11,为 8.5 分支的 22 个组件带来了 57 项修复。

PHP 项目已发布 PHP 8.5.11,这是 8.5 分支的一次维护更新。此次发布包含 57 项缺陷修复,涉及 BCMath、Core、DOM、GD、FPM、Intl 等 22 个组件,持续为生产环境提供维护支持。

这是一次安全更新,修复了 CVE-2026-91768、CVE-2025-1218、CVE-2026-91769、CVE-2026-91767、CVE-2026-6103、CVE-2026-91765、CVE-2025-14181、CVE-2026-93682、CVE-2026-92842、CVE-2026-91766 和 CVE-2026-17545。受影响的部署环境应尽快升级。

以下为完整的官方更新日志,每个条目均链接至对应的上游问题。建议使用 8.5 分支的用户择机更新;构建版本、源码压缩包和校验和可从 php.net 获取。

官方更新日志 ​

安全更新 ​

BCMath ​

  • 修复了当 scale 超过 n_scale 时,bc_is_zero_for_scale() 中发生的越界读取问题。(Ilia Alshanetsky)

Core ​

  • 修复了自动检测 UTF-16/32 编码时发生的越界读取问题。(Yudai Takada)
  • 修复了 GH-15375:在内部生成器上调用 valid() 或 next() 后,嵌套的 yield from 会跳过元素。(iliaal)
  • 修复了 GH-23232:单独的命名空间分隔符会导致自动加载器接收到空类名请求。(spawnia)
  • 修复了 GH-23301:当中间层生成器再次委托迭代时,嵌套的 yield from 会重复产出同一个值。(Lazizbek Ergashev)

DOM ​

  • 修复了在遵循规范的模式下,NamedNodeMap::getNamedItemNS() 使用空 URI 时无法匹配 null 命名空间的问题。(Ilia Alshanetsky)
  • 修复了写入 className/classList 或移除属性后,getElementsByClassName() 及其他节点列表的缓存未及时更新的问题。(Ilia Alshanetsky)
  • 修复了在调用 DOMDocument::xinclude() 后克隆 DOMNameSpaceNode 时发生的释放后使用问题。(iliaal)
  • 修复了 DOMXPath 中的崩溃问题:当一个 php:function 回调接收节点集,而后续回调返回另一个文档中的节点时,会触发崩溃。(iliaal)
  • 修复了 GH-23331:当 node_list_unlink() 跳过仍有存活包装对象的属性子节点时,会发生释放后使用(UAF)。(iliaal)
  • 修复了 Dom\Element::setAttributeNS() 替换属性值时发生的释放后使用问题,该问题出现在属性的子节点仍有存活包装对象的情况下。(iliaal)

GD ​

  • 修复了 imageaffinematrixget() 和 imageaffinematrixconcat() 在错误消息中报告错误参数的问题。(Weilin Du)

FPM ​

  • 修复了 GH-19320:FPM 的 UID 和 GID 溢出。(Pratik Bhujel)
  • 修复了 GHSA-62xp-839h-2637:FastCGI 的 listen.allowed_clients 仅比较部分地址,导致 IPv6 访问控制列表(ACL)可被绕过。(CVE-2026-91768)(Alexandre Daubois)

Intl ​

  • 修复了 grapheme_strpos() 和 grapheme_strrpos() 在查找空字符串时返回 UTF-16 偏移量而非字素偏移量的问题。(Ilia Alshanetsky)
  • 修复了转储 IntlCalendar 实例时发生的内存泄漏问题。(Ilia Alshanetsky)
  • 修复了迭代 IntlBreakIterator::getPartsIterator() 的结果时发生的内存泄漏问题。(iliaal)
  • 修复了 ICU 构造函数接管 TimeZone 后,IntlGregorianCalendar 构造失败时发生的重复释放问题。(iliaal)
  • 修复了 GH-23094:NumberFormatter 解析 UTF-8 字符串时,偏移量使用了 UTF-16 位置。(ColumbusLabs)
  • 修复了 Locale::parseLocale() 读取时越过末尾 - 或 _ 的问题。(iliaal、Xuyang Zhang)
  • 修复了 grapheme_str_split() 将 UBRK_DONE 当作字节索引处理的问题。(iliaal)
  • 修复了 Locale::getKeywords() 在无法读取关键字值时发生的内存泄漏问题。(iliaal)
  • 修复了使用已编译规则构造 IntlRuleBasedBreakIterator 时发生的释放后使用问题。(iliaal)

MBString ​

  • 修复了 mb_ereg_replace() 在 \k<name> 反向引用缺少闭合分隔符时,将 NUL 字节或越界读取的字节写入替换结果的问题。(Ilia Alshanetsky)

MySQLnd ​

  • 修复了 GHSA-r6x9-5r99-36j7:mysqlnd 线协议(wire protocol)处理中存在多处数据包越界读取问题。(CVE-2025-1218)(Jakub Zelenka、Nora Dossche)

ODBC ​

  • 修复了 SQLColAttribute 失败时,odbc_field_len()、odbc_field_scale() 和 odbc_field_type() 返回未初始化内存内容的问题。(Ilia Alshanetsky)

Opcache ​

  • 修复了 ZTS 模式下 opcache.protect_memory 的竞态条件。(realFlowControl)
  • 修复了跟踪式 JIT 在为某个类的方法编译 side trace 时发生的崩溃问题;该类无法存入继承缓存。(GH-21710)(Arnaud、iliaal)
  • 修复了大页共享内存(SHM)重新映射时,丢弃保留地址范围之外的映射所导致的崩溃问题。(Piotr Hałas)

OpenSSL ​

  • 修复了 GHSA-vvx9-73fr-5jjx:TLS 主机名验证在主体备用名称(SAN)不匹配后,回退到通用名称(CN)进行验证。(CVE-2026-91769)(Jakub Zelenka)
  • 修复了 GHSA-xr7j-rvgx-xq5p:精心构造的服务器证书通配符 CN 会导致 php_openssl_matches_wildcard_name() 发生堆缓冲区溢出。(CVE-2026-91767)(Jakub Zelenka)

PDO ​

  • 修复了持久连接存活检查失败且没有其他存活 PDO 句柄时发生的内存泄漏问题。(iliaal)

PDO_PGSQL ​

  • 修复了 PDO::CURSOR_SCROLL 语句在延迟获取模式(PDO::ATTR_PREFETCH => 0)下执行失败的问题。(KentarouTakeda)

PDO Sqlite ​

  • 修复了 GH-20214:PDO::FETCH_DEFAULT 与 PDOStatement::setFetchMode 配合使用时出现非预期行为。(SakiTakamachi)

Phar ​

  • 修复了 GH-23418:查找挂载目录时发生释放后使用。(Weilin Du)
  • 修复了 GH-23477:原生 Phar 清单中存在重复条目时发生内存泄漏。(Weilin Du)
  • 修复了 GHSA-j3wh-g957-2m85:phar_tar_number() 中的整数溢出可导致 TAR 归档条目注入。(CVE-2026-6103)(Jakub Zelenka)

Readline ​

  • 修复了交互式 shell 未等待分页器进程退出的问题。(Weilin Du)

SOAP ​

  • 修复了 soap:header 定义 headerfaults 时导致 WSDL 缓存损坏的问题。(Ilia Alshanetsky)
  • 修复了解析包含自引用模式组或 attributeGroups 的 WSDL 时发生的栈溢出问题。(Ilia Alshanetsky)
  • 修复了 GHSA-rgrp-mwpx-f6rm:服务端 cleanup_xml_node() 中存在无界递归。(CVE-2026-91765)(Alexandre Daubois)
  • 修复了 GHSA-cj93-vc83-wgqv:SOAP HTTP 解析中的整数溢出会导致缓冲区溢出。(CVE-2025-14181)(Nora Dossche、Jakub Zelenka)

Standard ​

  • 修复了流过滤器回调在重新附加桶之前取消设置 StreamBucket::$data 时发生的段错误。(iliaal)
  • 修复了 GHSA-7875-c8px-7q5f:HTTP 流封装器跟随 Location 头为空的重定向时发生越界读取。(CVE-2026-93682)(Ilia Alshanetsky、Jordi Kroon)
  • 修复了 php_stream_filter_flush() 中读缓冲区的压缩整理问题。(crystarm)
  • 修复了 GH-22410:处理大数时浮点数行为异常。(arshidkv12)
  • 修复了 GH-23338:fsockopen()/pfsockopen() 的 ValueError 为 $timeout 报告了错误的参数序号。(lacatoire)
  • 修复了 GH-23576:array_keys() 返回数组的下一个索引错误。(Lazizbek Ergashev)
  • 修复了 GHSA-88hq-2827-7pg6:当 line-break-chars 包含 NUL 字节时,convert.* 流过滤器会发生越界读取。(CVE-2026-92842)(geeknik)
  • 修复了 GHSA-fpwc-w8rq-cr92:HTTP 流封装器在重定向时发生跨源凭据泄漏。(CVE-2026-91766)(Alexandre Daubois)

SimpleXML ​

  • 修复了向 attributes() 返回对象的索引位置写入值时,未创建相应属性的问题。(Ilia Alshanetsky)
  • 修复了涉及命名空间时,无法通过属性名访问 SimpleXMLElement::addChild() 返回元素的子元素的问题。(Ilia Alshanetsky)

Windows ​

  • 修复了 GHSA-9f67-6fw4-hpfp:执行文件和流 I/O 前未拒绝保留设备名。(CVE-2026-17545)(Shivam Mathur、Jakub Zelenka)

Zip ​

  • 修复了 GH-17787:流仍处于打开状态时释放归档,会导致 ZipArchive 流提前停止读取。(Eyüp Can Akman)
  • 修复了 GH-23276:保存自身流的 ZipArchive 子类无法被垃圾回收。(Weilin Du、ndossche)

SAPI ​

  • 修复了模糊测试目标无法独立构建的问题。(Mrmaxmeier)
  • 修复了 LiteSpeed lsapi SAPI 返回未初始化值的问题。(Go Kudo)
本作品采用《CC 协议》,转载必须注明作者和本文链接