PHP开发团队已正式发布PHP 8.5.12安全版本,重点修复了两个可导致未授权远程代码执行(RCE)的关键漏洞。鉴于风险严重,官方强烈建议所有PHP用户立即升级。

高危漏洞详情

此次更新主要修复以下两个关键安全问题,受影响范围涵盖所有提供Web请求服务的PHP环境,包括PHP-FPM、Apache (mod_php)、php-cgi、FrankenPHP及LiteSpeed。其中,mod_php模式因可在无应用代码运行时触发攻击,被视为风险最高场景。

  • CVE-2026-109618:通过内存溢出(OOM)损坏实现RCE。内存不足处理可能导致PHP在内部请求数据仅部分初始化时中断,后续清理过程中可能将无效数据误判为有效数据。
  • CVE-2026-109619:通过残留全局状态实现RCE。请求的内部状态在底层内存释放后仍可能残留,后续由同一工作进程处理的请求可能在重置前使用这些状态。

更新与缓解指南

唯一彻底解决方案:立即升级至PHP 8.5.12。Linux发行版及LTS供应商已获补丁,请检查软件包更新。PHP 8.1及更早版本已停止官方支持,部分供应商提供向后移植修复,或建议升级至受支持版本。针对特定困难用户,安全团队为PHP 7.4/8.0/8.1提供了最小化源码补丁。

临时缓解措施(不能完全消除风险):

若无法立即更新,可采取以下措施降低暴露风险:

针对CVE-2026-109618(OOM损坏)

  • 设置memory_limit=-1,并通过FPM池或Apache配置强制执行,防止应用层覆盖。
  • 限制post_max_size(无上传设为8M,有上传设为32M),并确保upload_max_filesize低于该值。同时在Web服务器或代理层限制请求大小、字段数量等。
  • 使用容器或cgroup限制作为可用性边界,避免使用RLIMIT_AS或RLIMIT_DATA。

针对CVE-2026-109619(残留状态)

  • 设置session.upload_progress.enabled=0并重启工作进程,需在php.ini或服务器配置中设定,而非ini_set()。
  • 在PHP 8.5上设置fatal_error_backtraces=0并重启工作进程。
  • 移除请求初始化前发出诊断信息的无效设置,修复可触发的致命错误和执行超时。

其他修复内容

除上述高危漏洞外,PHP 8.5.12还修复了多个模块的Bug和安全问题:

  • 核心(Core):修复多处释放后使用(Use-after-free)、断言失败及垃圾回收不一致问题;优化AVX状态报告及ZEND_ASSERT违规处理。
  • Opcache:修复跟踪JIT相关的堆缓冲区溢出、错误结果生成及死代码消除问题;解决文件缓存重用崩溃及IR生成无效问题。
  • PDO:修复越界读取、绑定参数泄漏、事务回滚错误及释放后使用问题。
  • DOM/SimpleXML:修复重构时的释放后使用问题,以及XPath上下文节点丢失和ID查找失败问题。
  • Intl/MBString:修复克隆状态丢失、转换崩溃、UTF-8序列读取越界及代理对输出错误。
  • 其他模块:包括BCMath负号处理、BZ2双重关闭、CLI文件描述符泄漏、GD图像未定义行为、MySQLi断言失败、OpenSSL套接字状态、PCNTL信号丢弃、SQLite回调崩溃等数十项修复。

目前不存在完整的非更新缓解措施,请尽快查阅完整发行说明并执行升级。