北京时间10月21日晚10点,PHP官方把四个受支持分支的安全版本一次到齐:8.5.12、8.4.27、8.3.36、8.2.35。这轮紧急动作对应的,是被安全圈称为"PHP2Shell"的两个核心漏洞——CVE-2026-109618与CVE-2026-109619,CVSS v4.0评分均为9.2,允许未经身份验证的远程攻击者在目标服务器上执行任意代码。由于利用细节比补丁提前约一天泄露、自动化扫描和早期攻击已经开跑,芬兰、荷兰等国的部分政府网站选择在修复完成前先下线。如果你运行着PHP网站,现在唯一完整可靠的处置,是升级到修复版本并重启全部PHP进程。知乎知乎
为什么严重:一个请求越过全部应用层防线
按OpenAI引用的估算,全球约70%的网站在运行中用到PHP,WordPress、维基百科、大半个中文互联网的后台都建立在它之上。微博
两个漏洞的原理都在PHP引擎底层:前者是内存耗尽(OOM)时内部请求数据只初始化了一半,后续清理把这份非法数据当合法对象处理,导致内存损坏并最终可执行代码;后者是某个请求的内部全局状态在内存释放后仍然残留,同一个worker处理下一个请求时会直接复用这份"脏状态"。
问题出在门锁,而不是你家的装修。漏洞在业务代码运行之前就被触发,所以无论跑的是WordPress、Drupal、Magento还是Laravel,CMS版本多新、网站安全插件装了多少都挡不住——WordPress的安全插件靠`auto_prepend_file`在应用层加载,等它开始运行,攻击已经完成了。PHP官方点名mod_php风险最高,且存在已公开的演示利用。知乎
受影响范围极宽。官方公告将排查对象定义为所有用于对外提供Web请求服务的PHP安装,包括PHP-FPM、Apache mod_php、php-cgi、FrankenPHP和LiteSpeed。据安全厂商及CERT-EU判断,2012年发布的PHP 5.4起的几乎所有版本——涵盖5.x、7.x以及8.0至8.5——都在射程之内,这意味着大量陈旧的、无人维护的系统同样处于风险之中。知乎微博
规模上,有安全研究人员估计可能受影响、暴露在公网的主机高达130万台,奇安信在通告中把影响量级评为"千万级"。微博
时间线:AI先发现了洞,攻击者却先拿到了细节
这场风波里防守和进攻两侧都出现了AI。发现端,安全公司Calif在OpenAI的"Patch the Planet"计划中用GPT-5.6 Sol定位到漏洞,并在8月11日报给PHP;Wiz用包括Gemini 4 Argon和GPT-5.6 Sol在内的工具独立发现并上报了相关漏洞。OpenAI方面称,其牵头把开源维护者与安全厂商拉到一起协调了约两个月,等各方补丁就位再统一披露——这是AI抢在攻击者前面找到洞的罕见案例。微博知乎
但协调披露在最后一刻破了功。漏洞原定10月22日公开,20日有人在Hacker News发帖提前曝光,帖子删了但截图已经传开,PHP官方随即把发布提前到21日。那段时间正是技术社区形容的"细节已经泄漏、补丁还没到"的最难受状态——防守方只能靠泄露的信息猜测,攻击者却已经拿着能跑的代码。微博
在这段窗口期里,攻击面是被批量扫描的方式暴露的——安全研究人员警告,攻击者无需逐一锁定目标,只需扫描互联网即可批量发现存在漏洞的服务器。华尔街见闻
Cloudflare首席技术官Dane Knecht在补丁上线前就表示攻击已经出现,公司正在随新攻击向量的出现持续更新防火墙规则,但他同时强调这仅是权宜之计,应尽快打补丁。华尔街见闻
正是在这种"细节在手、补丁未至"的局面下,多国政府选择了先断网再修复。芬兰国家IT服务提供商Valtori表示,政府公共网络服务已作为预防措施下线;荷兰则引发了尤为广泛的连锁反应,政府身份认证系统DigiD等网站先行自行下线避险。华尔街见闻微博
现在打到哪一步:扫描已在路上,尚无已确认的大规模失陷
参考历史,2024年的PHP-CGI漏洞CVE-2024-4577从细节公开到大规模扫描利用的窗口期极短;安全厂商Sansec这次甚至预判,补丁发布后15分钟内就可能出现大规模自动化攻击。国内安全从业者也给出了实测:在微步TDP流量威胁检测设备中,已捕获多条针对PHP Session上传进度功能的可疑请求,其中一条直接以"php2shell-scan/1.0"作为User-Agent。不过要注意,这类流量目前更适合归类为专项探测,尚无证据显示攻击者已经完成远程代码执行——watchTowr的说法是已有人用AI辅助编写的工具发起攻击,目前还没人成功,但不会太久。微博知乎微博
预防性停机的浪潮已经溢出到行业侧。日本多个依赖PHP服务端的头部平台进入紧急维护:《碧蓝幻想》《公主连结!Re:Dive》《赛马娘》《FGO》之外,BOOTH、Niconico、pixiv、万代频道、DMM等官网均在其列。游戏客户端的技术栈和服务端无关,这正是底层供应链漏洞最要命的地方——没人能保证换掉PHP组件后重启服务还能跑起来,宁可先停。WordPress母公司Automattic则表态,团队已做好准备,正与PHP安全团队协作确保顺利完成更新。微博华尔街见闻
你的网站怎么办:分四种情况对照处理
自己管服务器:立即升级到PHP 8.5.12、8.4.27、8.3.36或8.2.35之一,可通过系统包管理器(apt、dnf/yum)更新,随后重启Web服务器及PHP处理进程,让常驻内存的旧版worker彻底退出并加载修补后的版本。重启不是走形式:残留全局状态漏洞的机制恰恰是每一次请求都可能给下一个请求埋雷。用Docker的,业务镜像里打包的PHP不会自己更新,需要重新拉取最新构建的基础镜像再滚动重启。知乎
还在PHP 8.1及更早版本:这些分支官方已停止常规维护,不提供预编译二进制包;安全团队为7.4、8.0、8.1提供了只修这两个CVE的最小化源码backport,供自行编译者和Linux长期支持发行版维护者使用,官方同时强烈敦促尽快迁移到受支持的8.2+分支。用remi第三方仓库的,官方建议直接改用发行版自带包或从源码构建——该仓库当天不会出更新。知乎
用共享主机或托管WordPress:PHP由主机商统一管理,自己装插件、改网站代码都修不了。去控制面板看PHP版本,或直接问主机商补了没有,而且要问是不是8.3.36这类修复版本,不是只问"升没升级"。微博
今晚实在动不了:官方给了一组临时缓解——关闭`session.upload_progress.enabled`、调低`post_max_size`(无上传需求设8M、有则32M)、用`php_admin_value`设置`memory_limit=-1`、PHP 8.5上关闭`fatal_error_backtraces`等,每条修改都需重启worker生效,且各自只挡住已确认的部分攻击路径。公告把话说得很明白:只有更新才是完整的解决方案,这些缓解措施不会让安装变得安全。挂在Cloudflare后面的站点已默认获得拦截规则(含免费用户),但只管经过其代理的流量,攻击者直连源站就挡不住。排查时别只看`php -v`:要确认实际处理Web请求的进程加载的是不是修复后的版本,并检查有哪些配置项把限制值又设了回去。知乎微博

登录