Hacker News 中文摘要

RSS订阅

PHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35 out

2026年10月21日PHP安全公告:PHP 8.5.12、8.4.27、8.3.36 和 8.2.35 修复了两个可导致未经身份验证远程代码执行的严重漏洞,所有 PHP 用户应立即更新。所有处理 Web 请求的 PHP 安装都存在风险,包括 PHP-FPM、阿帕奇(Apache)的 modphp、php-cgi、FrankenPHP 和 LiteSpeed;其中 modphp 风险最高,已证实的漏洞利用可在任何应用程序代码运行前由未经身份验证的请求触发攻击。

正文

2026年10月21日

安全公告:严重远程代码执行漏洞,请立即更新

PHP 8.5.12、8.4.27、8.3.36 和 8.2.35 修复了两个可导致未经身份验证远程代码执行(RCE)的严重漏洞。强烈建议所有 PHP 用户立即更新。

受影响对象:所有处理 Web 请求的 PHP 安装,包括 PHP-FPM、带 modphp 的 Apache、php-cgi、FrankenPHP 和 LiteSpeed。modphp 风险最高,已有演示漏洞利用:未经身份验证的请求可在任何应用代码运行前触发攻击。

漏洞详情:

  • 通过 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。源代码下载见下载页面,Windows 源代码和二进制文件也在同一页面。
  • Linux 发行版和 LTS 供应商已提前收到补丁,请向供应商查询更新后的软件包。
  • PHP 8.1 及更早版本不再获得 PHP 项目的更新。部分发行版和 LTS 供应商提供向后移植的修复,请联系供应商了解详情,或升级到受支持的版本。
  • 鉴于漏洞严重性,PHP 安全团队为 PHP 7.4、PHP 8.0 和 PHP 8.1 提供了最小化的源代码补丁,以帮助从源代码构建或无法获得 LTS 供应商支持的用户。

如果无法立即更新:虽然只有更新才是完整解决方案,以下措施可降低特定攻击路径的风险,但不能使安装变得安全。

针对通过 OOM 损坏的 RCE(CVE-2026-109618):

  • 设置 memory_limit=-1,最好以应用无法覆盖的方式设置,例如 FPM 池或 Apache 配置中的 php_admin_value,并检查没有池、目录或应用设置重新加入有限限制。这消除了可控的 PHP 内存限制失败,但底层分配失败仍可能到达漏洞路径。
  • 设置较低的 post_max_size。不需要文件上传的应用设为 post_max_size = 8M;需要文件上传则设为 32M。保持 upload_max_filesize 低于 post_max_size。考虑在 Web 服务器或代理层对解码后的请求大小、输入字段数、multipart 部分数、头部数和嵌套深度实施限制。这些限制也必须覆盖没有可用 Content-Length 的请求。
  • 使用容器或 cgroup 限制作为可用性边界,最好策略是只终止受影响的 worker。不要用 RLIMIT_AS 或 RLIMIT_DATA 替代,因为它们可能导致有漏洞的分配失败。

针对通过陈旧全局状态的 RCE(CVE-2026-109619):

  • 设置 session.upload_progress.enabled=0 并重启每个 worker。使用在请求解析前生效的 php.ini、FPM 池或服务器配置,不要依赖 ini_set() 或 FPM 的 .user.ini。这会阻断已确认的会话路径,但不阻断其他变体。
  • 在 PHP 8.5 上,设置 fatal_error_backtraces=0 并重启每个 worker。这仅阻断已确认的致命回溯路径。
  • 移除在初始化前发出诊断信息的、按请求应用的无效或废弃设置。用 error_reporting、display_errors 或 @ 隐藏诊断信息没有帮助。
  • 修复攻击者可触及的致命错误和执行超时,包括回调、上传或导入处理以及清理中的失败。

上方链接的公告包含完整技术细节。

2026年10月21日

PHP 8.6.0 RC4 可供测试

PHP 团队宣布发布 PHP 8.6.0 的第三个发布候选版 RC4,延续 PHP 8.6 发布周期,其大致安排见 PHP Wiki。

PHP 8.6.0 RC4 的源代码下载见下载页面。

请仔细测试此版本,并在 GitHub Issues 中报告发现的问题。

此版本还包含对两个可导致未经身份验证远程代码执行的严重漏洞的修复。所有运行更早 PHP 8.6.0 构建版本的用户都应强烈建议立即更新。

请勿在生产环境中使用此版本,它是早期测试版本。

有关新特性和其他更改的更多信息,可阅读 NEWS 文件,或 UPGRADING 文件获取完整的升级说明。这些文件也可在发布包中找到。

下一个版本将是最后一个发布候选版(RC5),计划于 2026 年 11 月 5 日发布。

发布签名见 清单 或预发布构建页面。

2026年10月21日

PHP 8.5.12 发布!

PHP 开发团队宣布 PHP 8.5.12 立即可用。这是一个安全版本,修复了两个可导致未经身份验证远程代码执行的严重漏洞(CVE-2026-109618、CVE-2026-109619)。所有 PHP 8.5 用户都应强烈建议立即更新。

没有完整的缓解措施,更新是唯一安全的选择。详见安全公告。

PHP 8.5.12 源代码下载请访问下载页面,Windows 源代码和二进制文件也可在该处找到。更改列表记录在 ChangeLog。

2026年10月21日

PHP 8.4.27 发布!

PHP 开发团队宣布 PHP 8.4.27 立即可用。这是一个安全版本,修复了两个可导致未经身份验证远程代码执行的严重漏洞(CVE-2026-109618、CVE-2026-109619)。所有 PHP 8.4 用户都应强烈建议立即更新。

没有完整的缓解措施,更新是唯一安全的选择。详见安全公告。

PHP 8.4.27 源代码下载请访问下载页面,Windows 源代码和二进制文件也可在该处找到。更改列表记录在 ChangeLog。

2026年10月21日

PHP 8.3.36 发布!

PHP 开发团队宣布 PHP 8.3.36 立即可用。这是一个安全版本,修复了两个可导致未经身份验证远程代码执行的严重漏洞(CVE-2026-109618、CVE-2026-109619)。所有 PHP 8.3 用户都应强烈建议立即更新。

没有完整的缓解措施,更新是唯一安全的选择。详见安全公告。

PHP 8.3.36 源代码下载请访问下载页面,Windows 源代码和二进制文件也可在该处找到。更改列表记录在 ChangeLog。

2026年10月21日

PHP 8.2.35 发布!

PHP 开发团队宣布 PHP 8.2.35 立即可用。这是一个安全版本,修复了两个可导致未经身份验证远程代码执行的严重漏洞(CVE-2026-109618、CVE-2026-109619)。所有 PHP 8.2 用户都应强烈建议立即更新。

没有完整的缓解措施,更新是唯一安全的选择。详见安全公告。

PHP 8.2 将于 2026 年 12 月 31 日结束生命周期,之后不再接收安全修复。请计划升级到受支持的版本。

PHP 8.2.35 源代码下载请访问下载页面,Windows 源代码和二进制文件也可在该处找到。更改列表记录在 ChangeLog。

2026年10月20日

即将发布的 PHP 关键安全版本

PHP 安全团队提前通知即将发布的安全更新。计划于 2026 年 10 月 21 日星期三 14:00 UTC 发布。它修复两个严重漏洞,CVSS v4.0 评分均为 9.2。

鼓励所有 PHP 用户现在做好准备,以便在版本发布后尽快升级。如果任一漏洞的细节被公开,或出现野外活跃利用的证据,我们保留提前发布的权利。完整细节、受影响版本和修复版本将在发布时公布。

2026年10月8日

PHP 8.6.0 RC3 可供测试

PHP 团队宣布发布 PHP 8.6.0 的第一个发布候选版 RC3,延续 PHP 8.6 发布周期,其大致安排见 PHP Wiki。

PHP 8.6.0 RC3 的源代码下载见下载页面。

请仔细测试此版本,并在 GitHub Issues 中报告发现的问题。

请勿在生产环境中使用此版本,它是早期测试版本。

有关新特性和其他更改的更多信息,可阅读 NEWS 文件,或 UPGRADING 文件获取完整的升级说明。这些文件也可在发布包中找到。

下一个版本将是 RC4,计划于 2026 年 10 月 22 日发布。

发布签名见 清单 或预发布构建页面。

2026年9月24日

PHP 8.4.26 发布!

PHP 开发团队宣布 PHP 8.4.26 立即可用。这是一个安全版本,鼓励所有 PHP 8.4 用户升级。源代码下载请访问下载页面,Windows 源代码和二进制文件也可在该处找到。更改列表记录在 ChangeLog。

2026年9月24日

PHP 8.2.34 发布!

PHP 开发团队宣布 PHP 8.2.34 立即可用。这是一个安全版本,鼓励所有 PHP 8.2 用户升级。源代码下载请访问下载页面,Windows 源代码和二进制文件也可在该处找到。更改列表记录在 ChangeLog。

2026年9月24日

PHP 8.5.11 发布!

PHP 开发团队宣布 PHP 8.5.11 立即可用。这是一个安全版本,鼓励所有 PHP 8.5 用户升级。源代码下载请访问下载页面,Windows 源代码和二进制文件也可在该处找到。更改列表记录在 ChangeLog。

2026年9月24日

PHP 8.3.35 发布!

PHP 开发团队宣布 PHP 8.3.35 立即可用。这是一个安全版本,鼓励所有 PHP 8.3 用户升级。源代码下载请访问下载页面,Windows 源代码和二进制文件也可在该处找到。更改列表记录在 ChangeLog。

2026年9月24日

PHP 8.6.0 RC2 可供测试

PHP 团队宣布发布 PHP 8.6.0 的第一个发布候选版 RC2。这不是笔误:打包 RC1 时出错,因此改为发布 RC2。完整解释见这篇博客文章。这延续了 PHP 8.6 发布周期,其大致安排见 PHP Wiki。

PHP 8.6.0 RC2 的源代码下载见下载页面。

请仔细测试此版本,并在 GitHub Issues 中报告发现的问题。

请勿在生产环境中使用此版本,它是早期测试版本。

有关新特性和其他更改的更多信息,可阅读 NEWS 文件,或 UPGRADING 文件获取完整的升级说明。这些文件也可在发布包中找到。

下一个版本将是 RC3,计划于 2026 年 10 月 8 日发布。

发布签名见 清单 或预发布构建页面。

2026年9月10日

PHP 8.6.0 Beta 3 可供测试

PHP 团队宣布发布 PHP 8.6.0 的第三个 Beta 版本 Beta 3,延续 PHP 8.6 发布周期,其大致安排见 PHP Wiki。

PHP 8.6.0 Beta 3 的源代码下载见下载页面。

请仔细测试此版本,并在 GitHub 上报告发现的问题。

请勿在生产环境中使用此版本,它是早期测试版本。

有关新特性和其他更改的更多信息,可阅读 NEWS 文件,或 UPGRADING 文件获取完整的升级说明。这些文件也可在发布包中找到。

下一个版本将是 RC 1,计划于 2026 年 9 月 24 日发布。

发布签名见 清单 或发布候选页面。

2026年8月27日

PHP 8.5.10 发布!

PHP 开发团队宣布 PHP 8.5.10 立即可用。这是一个错误修复版本,鼓励所有 PHP 8.5 用户升级。源代码下载请访问下载页面,Windows 源代码和二进制文件也可在该处找到。更改列表记录在 ChangeLog。

2026年8月27日

PHP 8.4.25 发布!

PHP 开发团队宣布 PHP 8.4.25 立即可用。这是一个错误修复版本,鼓励所有 PHP 8.4 用户升级。源代码下载请访问下载页面,Windows 源代码和二进制文件也可在该处找到。更改列表记录在 ChangeLog。

2026年8月27日

PHP 8.6.0 Beta 2 可供测试

PHP 团队宣布发布 PHP 8.6.0 的新 Beta 版本 Beta 2,延续 PHP 8.6 发布周期,其大致安排见 PHP Wiki。

PHP 8.6.0 Beta 2 的源代码下载见下载页面。

请仔细测试此版本,并在 GitHub 上报告发现的问题。

请勿在生产环境中使用此版本,它是早期测试版本。

有关新特性和其他更改的更多信息,可阅读 NEWS 文件,或 UPGRADING 文件获取完整的升级说明。这些文件也可在发布包中找到。

下一个版本将是 Beta 3,计划于 2026 年 9 月 10 日发布。

发布签名见 清单 或发布候选页面。

2026年8月25日

PHP 现状调查最后征集

State of PHP 调查仍在进行,但即将关闭。它询问 PHP 的使用情况:你用它构建什么、哪里令人痛苦,以及你认为 PHP 下一步应关注什么,填写约需 15 分钟。

调查由 The PHP Foundation 与 JetBrains 的 PhpStorm 合作开展。

汇总结果将于今年晚些时候以 State of PHP 2026 报告形式发布,匿名原始数据集也将一并发布,社区任何人都可以核对数据或自行分析。

更多回复意味着更能反映 PHP 用户真正关心的问题。如果尚未填写,请参与,并分享给同事和用户组。

2026年8月13日

PHP 8.6.0 Beta 1 可供测试

PHP 团队宣布发布 PHP 8.6.0 的第一个 Beta 版本 Beta 1,延续 PHP 8.6 发布周期,其大致安排见 PHP Wiki。

PHP 8.6.0 Beta 1 的源代码下载见下载页面。

请仔细测试此版本,并在 GitHub 上报告发现的问题。

请勿在生产环境中使用此版本,它是早期测试版本。

有关新特性和其他更改的更多信息,可阅读 NEWS 文件,或 UPGRADING 文件获取完整的升级说明。这些文件也可在发布包中找到。

下一个版本将是 Beta 2,计划于 2026 年 8 月 27 日发布。

发布签名见 清单 或发布候选页面。

2026年7月30日

PHP 8.4.24 发布!

PHP 开发团队宣布 PHP 8.4.24 立即可用。这是一个安全版本,鼓励所有 PHP 8.4 用户升级。源代码下载请访问下载页面,Windows 源代码和二进制文件也可在该处找到。更改列表记录在 ChangeLog。

2026年7月30日

PHP 8.3.33 发布!

PHP 开发团队宣布 PHP 8.3.33 立即可用。这是一个安全版本,鼓励所有 PHP 8.3 用户升级。源代码下载请访问下载页面,Windows 源代码和二进制文件也可在该处找到。更改列表记录在 ChangeLog。

2026年7月30日

PHP 8.6.0 Alpha 3 可供测试

PHP 团队宣布发布 PHP 8.6.0 的第二个测试版本 Alpha 3,延续 PHP 8.6 发布周期,其大致安排见 PHP Wiki。

PHP 8.6.0 Alpha 3 的源代码下载见下载页面。

请仔细测试此版本,并在 GitHub Issues 中报告发现的问题。

请勿在生产环境中使用此版本,它是早期测试版本。

有关新特性和其他更改的更多信息,可阅读 NEWS 文件,或 UPGRADING 文件获取完整的升级说明。这些文件也可在发布包中找到。

下一个版本将是 Beta 1,计划于 2026 年 8 月 13 日发布。

发布签名见 清单 或预发布构建页面。

2026年7月30日

PHP 8.5.9 发布!

PHP 开发团队宣布 PHP 8.5.9 立即可用。这是一个安全版本,鼓励所有 PHP 8.5 用户升级。源代码下载请访问下载页面,Windows 源代码和二进制文件也可在该处找到。更改列表记录在 ChangeLog。

2026年7月30日

PHP 8.2.33 发布!

PHP 开发团队宣布 PHP 8.2.33 立即可用。这是一个安全版本,鼓励所有 PHP 8.2 用户升级。源代码下载请访问下载页面,Windows 源代码和二进制文件也可在该处找到。更改列表记录在 ChangeLog。

2026年7月16日

PHP 8.6.0 Alpha 2 可供测试

PHP 团队宣布发布 PHP 8.6.0 的第二个测试版本 Alpha 2,延续 PHP 8.6 发布周期,其大致安排见 PHP Wiki。

PHP 8.6.0 Alpha 2 的源代码下载见下载页面。

请仔细测试此版本,并在 GitHub Issues 中报告发现的问题。

请勿在生产环境中使用此版本,它是早期测试版本。

有关新特性和其他更改的更多信息,可阅读 NEWS 文件,或 UPGRADING 文件获取完整的升级说明。这些文件也可在发布包中找到。

下一个版本将是 Alpha 3,计划于 2026 年 7 月 30 日发布。

发布签名见 清单 或预发布构建页面。

评论

讨论气氛像运维应急现场:多数人在追 Debian、Ubuntu、Docker 等渠道的补丁进度,并抱怨官方 Docker 镜像和 Ubuntu 包迟到;与此同时,也有人担心大量仍跑在 PHP 7/5 的站点根本不会及时修补,甚至有人直接预言后果会非常严重。

认为大量 PHP 7/5 站点不会修补,后果严重

  • PHP 支撑着海量站点,但相当比例的应用仍停留在已停止支持的 PHP 7 甚至 PHP 5;很多人不会有节奏地打补丁,一部分可能永远不打,因此这次漏洞的实际影响被形容为灾难性。还有人因此建议用静态站替代 WordPress 来摆脱升级负担(高赞) > PHP 承载着几乎半个互联网,而其中一半不会在合理时间内打上补丁,很大一部分甚至永远不会,后果将是灾难性的(@ramesh31)

认为各渠道补丁进度不一,Debian/Gentoo 已到位而 Ubuntu、Docker 仍迟到

  • Debian 与 Gentoo 很快可通过系统更新获得修复;Ubuntu 官方源迟迟未发布,只有 PPA 在构建;官方 php:* 镜像仍未就绪,WordPress/Matomo 等派生镜像还在拉旧版或误报,Alpine、Azure 内置运行时也未见更新,期间还碰上 GitHub 故障拖慢合并(较多人) > Debian 几乎立刻拿到补丁,Ubuntu 却已经晚了半小时(@janmo)

认为修复被打包进常规错误修复版本,协调发布时间点令人困惑

  • 有人观察到本次修复像是随常规错误修复版本一起发出,而不是单独的安全发布;因此也有人觉得,对于事先宣布的协调发布而言,这一波修复来得太早,时间点和发布形式让人难以判断真正的协调节奏(少数人) > 修复看起来是被打进了一个常规的错误修复版本里(@baggy_trough)

质疑缓解措施只调参数而不直接禁用 multipart

  • 有技术读者指出,官方缓解说明列了 memorylimit、postmaxsize、maxinputnestinglevel 等设置,却没有提到直接阻断 multipart 请求;而漏洞描述本身又提到多个 multipart 解析问题,因此质疑为什么不能把拦截 multipart 作为解决方案(少数人) > 既然漏洞就是若干 multipart 解析问题,为什么缓解措施只调各种限制参数,而不直接屏蔽 multipart 请求?(@TekMol)

认为企业流程与云平台依赖会拖慢实际修补

  • 现实运维中,补丁不是上游有了就能立刻上线:有人因为 MFA 和掌握验证码的主管不在,连服务器都进不去更新;也有人担心 Microsoft Azure 内置 PHP 运行时、Alpine 等不会迅速跟进,只能继续等第三方(少数人) > 因为 MFA 和拿到验证码的主管不在,我连服务器都进不去更新(@imzadi)

有价值的补充

  • 镜像“新鲜”不等于已修补:有人拉取刚推送的 matomo:latest,发现里面 PHP 构建时间是当天,但版本仍是未修补的 8.4.26,而不是修复版 8.4.27;这种误导可能让不少人误以为已经安全。(@andrelaszlo)
  • PHP 的内存管理反讽:漏洞是 OOM 处理中断导致内部请求数据只部分初始化,清理时把无效数据当有效;有人反讽说“要是我们能自动管理内存就好了,可惜只能做梦”,用黑色幽默点出即便带有垃圾回收的 PHP,其底层 C 实现仍可能受内存破坏影响。(@majewsky)
  • 时间点上还赶巧:当官方 Docker 镜像还在合并补丁时,GitHub 正好出现 outage,进一步拖慢镜像构建与分发。(@mrintegrity)