即将发布的关键 PHP 安全更新(CVE-2026-109618 / -109619)

一对关键的 PHP 漏洞(CVE‑2026‑109618/109619,称为“PHP2Shell”)使几乎所有从 5 版开始的 PHP 安装都面临未经认证的远程代码执行风险,波及估计占多数的 Web——包括无数 WordPress 和 MediaWiki 站点。由于官方补丁尚未可用时 PoC 就已流传,运维人员不得不权衡诸如阻止 multipart POST 请求或直接让站点离线等紧急缓解措施,而 CDN 和托管服务提供商则争相推出 WAF 规则和回移植修复。此事件也重新点燃了人们对 LLM 时代协调披露的担忧,以及对 PHP 这类大型 C 语言运行时长期安全性的质疑。

范围与严重性

  • 漏洞(CVE-2026-109618 / -109619,绰号“PHP2Shell”)影响实际上所有从 5.x 开始的 PHP 版本、默认配置、典型的 FPM 部署,以及任何接受 POST/multipart 请求的服务器。
  • 多位评论者将其影响与 Heartbleed/Log4Shell 相比,甚至认为更严重,因为 PHP 约占 70% 的 Web 市场份额,而且可以轻易利用它在未认证情况下以 Web 服务器用户身份执行远程代码。
  • 后续发布的通告描述了两条主要利用链:通过 OOM 破坏实现 RCE,以及通过 multipart 解析中的陈旧全局状态实现 RCE。

利用与 PoC 状态

  • 官方补丁发布前,社交媒体上已流传视频演示和 PoC;早期 PoC 并不完整,或者只是崩溃程序,但 Cloudflare 和其他机构报告称现实世界中已出现活跃利用。
  • 利用路径似乎滥用了 multipart/form-data 解析和上传进度处理;默认的 session/upload 设置会增加暴露面。
  • 一些评论者声称已在测试系统上实现了至少内存破坏或有限的数据库访问。

缓解与防御(补丁前)

  • PHP 核心维护者反复表示,仅靠配置层面的缓解不足以解决问题;只有升级 PHP 才能彻底修复。
  • 常见的临时措施包括:
    • 禁用 session.upload_progress.enabled,有时还包括 file_uploads。
    • 在 Web 服务器或 WAF 上阻止 multipart/form-data,或阻止所有 POST/PUT/PATCH/DELETE。
    • 将请求限制为仅允许 GET/HEAD,或直接关闭 PHP 服务。
  • 一些服务提供商(Cloudflare、其他 CDN、托管 WordPress/主机服务、Plesk、各发行版)部署了 WAF 规则和/或回移植补丁;其效果被描述为部分性的、启发式的。

运营影响

  • 许多管理员在补丁前关闭了 MediaWiki、WordPress、Drupal 和自定义 PHP 应用;一些政府、大学和大型服务临时下线了网站。
  • 共享主机用户往往无法干净地禁用 PHP,这让人对“离线”到底意味着什么感到困惑。
  • 人们争相获取已打补丁的 PHP 包、Docker 镜像和发行版构建;有人抱怨官方容器镜像落后于源代码发布。

披露与流程争议

  • 围绕以下问题展开激烈争论:
    • 在 PoC 泄露后,是继续保密禁令还是立即发布补丁。
    • 为了协调大型服务商而延迟补丁,是否等于“抛弃”小型运营者。
    • LLM 是否会让任何公开线索(或第三方文章中的 SEO 关键词)都足以迅速重新发现漏洞。

更广泛的反思

  • 对 PHP 的 C 代码库、multipart 解析器质量以及长期以来的安全问题再次提出批评;有人呼吁把 PHP “氧化”掉,或迁移到 Rust/Go/.NET,甚至静态站点。
  • 反方指出,每个技术栈都会有严重的 CVE;真正的问题在于纵深防御、进程隔离、最小权限,以及减少动态攻击面。