PHP官方发布了8.5.12、8.4.27、8.3.36和8.2.35版本,修复了两项可导致未授权远程代码执行(RCE)的严重漏洞。鉴于风险极高,官方强烈建议所有PHP用户立即进行更新。

受影响范围与风险

此次漏洞波及所有处理Web请求的PHP环境,包括PHP-FPM、Apache mod_php、php-cgi、FrankenPHP以及LiteSpeed。其中,Apache mod_php面临的风险最高,攻击者已在应用程序代码运行之前,通过未授权请求成功触发利用。

漏洞技术细节

  • CVE-2026-109618(通过内存溢出损坏实现RCE):PHP在内存不足(OOM)处理机制中,可能在内部请求数据仅部分初始化时中断进程。随后的请求清理阶段可能将无效数据误判为有效数据进行处理,从而引发漏洞。
  • CVE-2026-109619(通过陈旧全局状态实现RCE):请求相关的内部状态在底层内存释放后可能残留。若同一工作进程处理后续请求,可能在正常初始化重置该状态前,错误地使用这些陈旧数据。

更新指南

  • 标准升级:请升级至PHP 8.5.12、8.4.27、8.3.36或8.2.35。源代码、Windows平台的二进制文件均可在官方下载页面获取。
  • Linux/LTS用户:主要Linux发行版及长期支持(LTS)供应商已提前收到补丁,请联系供应商获取更新后的软件包。
  • 旧版本用户:PHP 8.1及更早版本已停止官方维护。部分发行版和LTS供应商提供了向后移植的修复程序。对于无法访问LTS支持的用户,PHP安全团队为PHP 7.4、8.0和8.1提供了最小化的源代码向后移植补丁。
  • Remi仓库用户:志愿者维护的rpms.remirepo.net仓库今日不会发布更新。建议切换至发行版自带软件包或从源代码构建以立即应用补丁。

临时缓解措施

若无法立即更新,以下措施可降低特定攻击路径的暴露风险,但无法确保持久安全。

针对CVE-2026-109618(OOM损坏)的缓解

  • 设置memory_limit=-1,建议通过FPM池或Apache配置中的php_admin_value强制生效,防止应用程序覆盖。需注意,这仅消除可控的内存限制失败,底层分配失败仍可能触发漏洞。
  • 降低post_max_size阈值。无文件上传应用设为8M,有上传需求设为32M,并确保upload_max_filesize低于前者。同时在Web服务器或代理层强制执行对请求大小、字段数量、头部数量及嵌套深度的限制。
  • 使用容器或cgroup限制作为可用性边界,策略应仅终止受影响的工作进程。避免使用RLIMIT_AS或RLIMIT_DATA,以免诱发导致漏洞的分配失败。

针对CVE-2026-109619(陈旧全局状态)的缓解

  • 设置session.upload_progress.enabled=0并重启所有工作进程。需在php.ini、FPM池或服务器配置中生效,严禁依赖ini_set()或.user.ini。此举可阻断已确认的会话攻击路径。
  • PHP 8.5用户可设置fatal_error_backtraces=0并重启工作进程,以阻断致命回溯路径。
  • 移除在初始化前发出诊断信息的无效或过时设置。单纯隐藏错误信息(如通过error_reporting或@)无效。
  • 修复所有可由攻击者触发的致命错误和执行超时,涵盖回调、上传、导入处理及清理过程中的失败场景。