PHP 本身出现了两个严重漏洞:CVE-2026-109618 和 CVE-2026-109619(又称“PHP2Shell”),未经认证的攻击者可能借此在网站服务器上执行代码。漏洞细节在原定披露前就已泄露,PHP 项目已于 2026 年 10 月 21 日发布修复版本:PHP 8.5.12、8.4.27、8.3.36 和 8.2.35。如果你的网站、网店或内部系统运行在 PHP 上(包括 WordPress),请检查所用版本并尽快更新,或者问问主机服务商什么时候更新。
发生了什么
这两个漏洞原本处于保密期(embargo),也就是研究人员和厂商暂不公开细节,给修复留出时间。据 BleepingComputer 报道,2026 年 10 月 20 日,Hacker News 上一条后来被删除的帖子称,两个 PHP 严重远程代码执行漏洞将在 10 月 22 日披露。安全公司 watchTowr 随后在 X 上表示信息已经泄露,并确认漏洞属实。
同一天,PHP 安全团队发布预告,称安全更新将在 10 月 21 日 14:00 UTC(北京时间 22:00)发布,两个漏洞的 CVSS v4.0 评分均为 9.2。香港 GovCERT.HK 也在 10 月 21 日发出了高危安全警报(A26-10-36)。当晚,PHP 发布了正式安全公告和修复版本。
两个漏洞是什么
- CVE-2026-109618“RCE via OOM corruption”(GHSA-w8hw-w9fx-j79w):PHP 处理请求时如果内存不足,内部请求数据可能只完成了部分初始化,随后的清理流程可能把这些无效数据当作有效数据处理。
- CVE-2026-109619“RCE via stale global state”(GHSA-6wmf-4rv5-p3rp):属于某个请求的内部状态,在内存释放后仍可能残留;同一个 worker 处理下一个请求时,可能在正常初始化之前就用到这些旧状态。
根据 PHP 发布的 CVE 记录,两者都是“严重”级别,CVSS v4.0 评分 9.2:可通过网络发起攻击,无需登录,也无需用户操作,但攻击复杂度较高。披露前有报道称评分为 10.0,官方评分是 9.2。
哪些系统受影响
PHP 公告指出,所有处理网页请求的 PHP 安装都有风险,包括 PHP-FPM、Apache mod_php、php-cgi、FrankenPHP 和 LiteSpeed。PHP 团队认为 mod_php 的风险最高:已有演示攻击表明,未经认证的请求可以在任何应用代码运行之前触发攻击。
- PHP 8.2 至 8.5:8.2.35、8.3.36、8.4.27 和 8.5.12 之前的版本受影响,应更新到这些版本。
- PHP 8.1 及更早版本:PHP 项目已不再提供更新。部分 Linux 发行版和长期支持服务商会提供移植补丁(backport);PHP 也为 7.4、8.0 和 8.1 提供了精简的源码补丁,方便自行编译的用户。否则应升级到仍受支持的版本。
- PHP 8.2 将于 2026 年 12 月 31 日停止支持,下一次升级也要提前安排。
是否已被利用?
Cloudflare 表示,漏洞泄露后已经观察到针对其客户的攻击流量;其免费和付费 WAF 方案自 10 月 21 日 03:02 UTC 起已默认启用相关防护规则。Cloudflare 仍然要求客户尽快打补丁。情况可能变化很快,所有对外开放的 PHP 系统都应作为紧急事项处理。
现在该做什么
- 梳理所有 PHP 系统:包括公司官网、WordPress 或其他 CMS 网站、网店、预约或会员系统、管理后台,以及任何能从互联网访问的内部工具。优先处理对外开放的系统。
- 检查 PHP 版本:主机控制面板通常会显示版本,也可以请开发人员在服务器上查看,并记下 PHP 的运行方式(mod_php、PHP-FPM、LiteSpeed 等)。
- 更新:安装 8.5.12、8.4.27、8.3.36 或 8.2.35,或者所用 Linux 发行版的修复包。例如 Ubuntu 已为受支持的版本发布修复包。更新后要重启 PHP worker,确保新版本真正生效。
- 联系主机服务商:如果使用共享主机或托管主机,PHP 一般由服务商管理,应确认对方是否已经修复、什么时候修复。
- 使用 Remi 软件源的用户:PHP 提到,由志愿者维护的 rpms.remirepo.net 在发布当天不会有更新,建议改用发行版软件包或自行编译。
- WAF 只能应急:带托管规则的 Web 应用防火墙或 CDN 也许能拦截已知攻击方式,但 PHP 明确表示只有更新才能彻底解决。
- 先测试,再监控:条件允许的话,先在测试环境(Staging)中试行更新,再监控正式网站。外部网站监控有助于及早发现宕机或异常改动。
如果今天无法更新
PHP 公告列出了一些临时措施,可以降低特定攻击路径的风险,但不能让系统变得安全。这些措施需要服务器层面的权限,应由负责管理服务器的人员执行:
- 针对 CVE-2026-109618:在应用程序无法覆盖的层面设置 memory_limit=-1;调低 post_max_size(PHP 建议不需要上传文件时设为 8M,需要上传时设为 32M);并在 Web 服务器或代理层面限制请求大小和复杂程度。
- 针对 CVE-2026-109619:设置 session.upload_progress.enabled=0 并重启所有 worker;PHP 8.5 还应设置 fatal_error_backtraces=0。
更多细节和应避免的设置,请参阅 PHP 完整公告。英国 NCSC 也建议,系统无法立即修复时,可以考虑暂时将其下线。
对中小企业意味着什么
很多小企业并不清楚自己的网站用的是哪个 PHP 版本,也不清楚由谁负责更新。不妨借这次机会弄清楚并记录下来:网站由谁托管、谁能更新服务器、响应有多快。清晰的支持 SLA能在下一次紧急修复之前把责任讲清楚。technine.io 可以通过网络安全与合规服务协助检查风险、规划修复,并通过托管支持服务让系统保持更新。
常见问题
我的 WordPress 网站会受影响吗?
WordPress 运行在 PHP 上,所以关键看服务器上的 PHP 版本,而不是 WordPress 版本。如果 PHP 低于修复版本,在更新 PHP 之前网站仍有风险。
WAF 或 CDN 能保护我吗?
它们也许能拦截已知攻击方式,争取一些时间,但不是完整的解决办法,仍然需要更新 PHP。
我们还在用 PHP 7,该怎么办?
PHP 7 已经没有官方更新。请确认所用 Linux 发行版或支持服务商是否提供移植补丁,并计划升级到受支持的 PHP 8 版本。
怎么确认更新成功?
在服务器或主机控制面板上确认新的版本号,确保 PHP worker 已经重启,并检查主要页面和表单是否仍然正常。
