编程

PHP 安全更新修复了两个严重远程代码执行(RCE)漏洞

7 2026-10-22 15:37:00

PHP 团队刚刚发布了 PHP 8.5.12、8.4.27、8.3.36 和 8.2.35 版本,旨在修复两个严重漏洞;这些漏洞可能导致未经身份验证的远程代码执行。官方强烈建议立即进行更新,并指出目前尚无彻底的缓解措施。

所有用于处理 Web 请求的 PHP 环境均受此影响,包括 PHP-FPM、使用 mod_php 的 Apache、php-cgi、FrankenPHP 以及 LiteSpeed。鉴于大多数 Laravel 应用程序在生产环境中的运行方式均涵盖在内,请务必在今天就安排服务器更新。

注:此为突发新闻,我们将随新信息的披露持续进行更新。

漏洞详情

PHP 团队认为 mod_php 相关的风险最高;目前已存在可利用的攻击方式,攻击者无需身份验证即可发起请求,并在任何应用程序代码执行之前触发漏洞。以下是这两个 CVE 漏洞:

  • 通过内存耗尽(OOM)导致的损坏引发远程代码执行(RCE),CVE-2026-109618 (GHSA-w8hw-w9fx-j79w):在内存耗尽处理过程中,PHP 的执行流程可能被中断,此时内部请求数据仅完成了部分初始化。随后的请求清理操作可能会将这些无效数据误判为有效数据。
  • 通过陈旧的全局状态引发远程代码执行(RCE),CVE-2026-109619 (GHSA-6wmf-4rv5-p3rp):属于某个请求的内部状态,在相关内存被释放后仍可能残留。在同一个工作进程(worker)上后续发起的请求,可能会在正常初始化流程将其重置之前,使用这些陈旧的状态数据。

如何更新

请更新至 PHP 8.5.12、8.4.27、8.3.36 或 8.2.35 版本。你可以在 PHP 官方下载页面获取源代码包及 Windows 版本安装包。

Linux 发行版维护者和长期支持(LTS)版本提供商已提前收到了补丁,请向所使用的发行版或服务提供商查询是否有更新的软件包。

PHP 8.1 及更早版本已不再获得 PHP 项目官方的更新支持。部分发行版或 LTS 提供商可能会自行回溯(backport)修复补丁,建议向相关方确认,或升级至仍受支持的版本。

如果您使用的是由志愿者维护的 rpms.remirepo.net 软件仓库,目前暂无更新。PHP 团队建议您改用发行版官方提供的软件包,或通过源代码自行编译安装。

鉴于问题的严重性,PHP 安全团队还针对 PHP 7.4、PHP 8.0 和 PHP 8.1 版本发布了最小化的源代码修复补丁,供那些无法从 LTS 提供商处获取更新且选择自行编译安装的用户使用。

如果你还无法立即更新

更新是唯一完整的修复。该通报列出了可减少特定攻击路径暴露的设置,但 PHP 团队明确表示它们并不能确保安装安全。

对于 CVE-2026-109618(OOM 损坏):

  • 在应用程序无法覆盖它的地方设置 memory_limit=-1 ,例如 FPM 池或 Apache 配置中的 php_admin_value 。检查是否没有池、目录或应用程序设置设置了有限限制。
  • 降低 post_max_size。建议将没有文件上传的应用的 post_max_size 设置为 8M,将需要上传文件的应用设置为 32M。保持 upload_max_filesize 低于 post_max_size。
  • 在 Web 服务器或代理上对解码请求大小、输入字段计数、多部分计数、标头计数和嵌套深度强制执行请求限制。这些限制还需要涵盖没有可用  Content-Length 的请求。
  • 使用容器或 cgroup 内存限制,最好是仅杀死受影响的工作线程。不要改用 RLIMIT_AS 或 RLIMIT_DATA,因为它们可能会导致易受攻击的分配失败。

对于 CVE-2026-109619(过时的全局状态):

在 php.ini、FPM 池或服务器配置中设置 session.upload_progress.enabled=0,然后重新启动每个工作线程。 ini_set() 和 FPM .user.ini 文件应用得不够早。

  • 在 PHP 8.5 上,设置 fatal_error_backtraces=0 并重新启动每个工作线程。
  • 删除在初始化之前发出诊断的无效或已弃用的每个请求设置。使用 error_reporting、display_errors 或 @ 隐藏它们没有帮助。
  • 修复攻击者可能遇到的致命错误和执行超时,包括回调、上传或导入处理以及清理失败。
  •  
PHP