PHP2Shell 指的是什么
这是 2026 年 10 月公开的两项 PHP 核心缺陷(CVE-2026-109618、CVE-2026-109619),严重程度均为 CVSS 9.2(满分 10)。攻击方不必持有帐号,只要送出特制请求,就可能在网站主机上执行自备程式。官方修补版已于 2026 年 10 月 21 日释出。
常有人觉得自家站点规模小,不会被选为目标。这波行动几乎全靠自动化扫描,范围是整个网路,只依 PHP 版本筛选,与公司大小无关。
登入验证与防火墙为何挡不住
不妨把网站想成一栋大楼,登入验证像各楼的门禁。问题出在一楼收发柜台:包裹刚进门、还沒上到任何楼层,柜台就已经出状况。
因此这次缺陷有两个重点:
怎样判断网站是否受影响
唯一关键是:主机实际正在执行的 PHP 版本。对照下表即可决定是否要处理:
| 目前的 PHP 分支 | 含修正的版本 | 官方正式修正 | 建议动作 |
|---|---|---|---|
| 8.5 | 8.5.12 或更新 | 已提供 | 核对是否已升至 8.5.12 |
| 8.4 | 8.4.27 或更新 | 已提供 | 核对是否已升至 8.4.27 |
| 8.3 | 8.3.36 或更新 | 已提供 | 先确认已更新,並规划明年升至 8.4 |
| 8.2 | 8.2.35 或更新 | 有修正,但支援将于 2026-12-31 结束 | 先更新,並在年底前升至 8.4 以上 |
| 8.1、8.0、7.4 | 沒有正式发行版 | 仅有原始码层级修补 | 先做临时防护,並儘快升级 |
实务上最容易搞错的是相信「主机商说 PHP 已经很新」。同一台机器常同时安装多个版本,控制台显示的未必是网站真正在用的那个,请对方确认的是网站正在执行的版本。版本停止维护后该如何处理,可另查相关说明。
现在就要做的三件事
1. 核对版号,能升级就升级
若低于上表的修补门槛,请主机商或维运厂商更新。8.2 以上多半只是小版号更新,风险较低;7.4 到 8.1 要跨大版本,程式、外挂与金流串接都可能要一并调整。较稳妥的做法是先在测试站升级並验收,再放到正式环境。
2. 暂时不能升级时,先做防护
请主机商调整下列设定,改完必须重新启动 PHP 才会生效:
- 关闭上传进度(session.upload_progress):此功能预设开启,就算网站沒用到也可能被利用。
- 限制单次请求大小:在主机前端挡下异常庞大的请求。
- 若网站使用 PHP 8.5,另外关闭致命错误追踪资讯(fatal_error_backtraces)。
说得直接一点,这些只是先把收件窗口缩小,並沒有把缺陷补上,仍要排定升级时程。
3. 回查有沒有遭攻击的迹象
海外云端业者在公告前 4 天就已看到攻击尝试,因此 10 月 21 日之后才更新、或至今仍未更新的网站,都值得回头查。请维运厂商检查:
- 错误纪录是否成批出现「记忆体不足」,而且发生在网站程式开始执行之前
- 网路请求里是否有平时不会出现的上传进度栏位
- 主机上是否有网站程式自己拉起的系统指令程序
只要有一项可疑,就依网站遭入侵的紧急应变流程处理,不要急着删档。
该问主机商或维运厂商的三个问题
| 要提出的问题 | 理想的回答 | 需要警惕的回答 |
|---|---|---|
| 网站真正运行的 PHP 完整版号是多少? | 能直接说出完整版号,例如 8.4.27 | 「应该已经是新版了」 |
| PHP2Shell 的修补是否已经完成? | 已升到修补版,或已启用临时防护並排定升级日期 | 「网站不大,不会被攻击」 |
| 错误纪录有沒有查过? | 能说明查了哪一段时间、有沒有异常 | 「沒出问题就不必看」 |
结语:缺陷还会再来,版本必须跟上
PHP2Shell 不会是最后一个严重缺陷。请记住以下三点:
- 先弄清网站用的是哪个 PHP 版本:不知道版号,就无法判断下一次缺陷是否与自己有关。
- 临时防护不是修復:可以争取时间,但终点仍是修补版。
- 把 PHP 升级排进每年维护:在支援到期前就升级,不要每次都等漏洞公告才处理。
平时也可依资安检查要点,自行复查网站防护是否到位。