PHP 版本检测
检测站点对外暴露的 PHP 版本,并对照 CVE-2026-109618 与 CVE-2026-109619 的官方修复版本。每条结论都会给出原始依据 —— 「未知」也是合法结果。
CVE-2026-109618 与 CVE-2026-109619 的修复版本
两个可未授权远程代码执行的漏洞,CVSS v4.0 均为 9.2,于 2026-10-21 修复。任何低于本分支修复版本的发行版,在上游层面都受影响。
| 分支 | 受影响区间 | 修复版本 | 状态 |
|---|---|---|---|
| 8.5 | 8.5.0 – 8.5.11 | 8.5.12 | 受支持 |
| 8.4 | 8.4.0 – 8.4.26 | 8.4.27 | 受支持 |
| 8.3 | 8.3.0 – 8.3.35 | 8.3.36 | 受支持 |
| 8.2 | 8.2.0 – 8.2.34 | 8.2.35 | 2026-12-31 停止维护 |
| ≤ 8.1 | 5.4.0 – 8.1.x | — | 无上游修复 |
数据来源: php.net
无法立即升级时
以下措施只能降低特定攻击路径的暴露面,不能把安装变安全。php.net 明确表示:升级是唯一的完整方案。
- 将 memory_limit 设为 -1,优先通过 FPM pool 或 Apache 的 php_admin_value 设置,确保应用无法改回去。
- 压低 post_max_size(无上传 8M,有上传 32M),并让 upload_max_filesize 小于它;同时在代理层限制请求体积。
- 在 php.ini 或 pool 配置中设置 session.upload_progress.enabled=0,然后重启所有 worker —— ini_set() 与 .user.ini 生效太晚。
- PHP 8.5 还需设置 fatal_error_backtraces=0,并重启所有 worker。
- 用容器或 cgroup 内存限制作为可用性边界,不要使用 RLIMIT_AS / RLIMIT_DATA。
常见问题
查找站点公开暴露的 PHP 版本指纹(主要是 X-Powered-By 响应头),并与 CVE-2026-109618、CVE-2026-109619 的官方修复版本比对。工具不会发送任何漏洞利用载荷,也不做漏洞验证。
先做被动检测:发起一次 GET 请求,只读取响应头。如果你勾选深度探测,再向 /info.php、/phpinfo.php 等固定路径发送最多 6 个 GET 请求,寻找公网可访问的 phpinfo 页。不发 POST、不发送请求体、不做路径爆破。
多数生产站点会关闭 expose_php、前面加 CDN,或者根本没有运行 PHP。没有版本号就无法比对,因此工具给出「未知」而不是猜测。结果里会列出实际检查过的信号。
不是。它只代表站点报告的版本号在官方修复线之上。响应头可以被伪造、被代理改写,同一个域名下也可能有多个 pool 运行不同版本。请把结论当作「版本号层面的依据」,而不是漏洞扫描结果。
发行版软件包会保留上游版本号,只增加包修订号,例如 Ubuntu 24.04 的 8.3.6-0ubuntu0.24.04.13 已经包含修复。公网响应头只会显示 8.3.6,因此单看版本号既不能证明有问题,也不能证明没问题。请用包管理器核对实际安装的包版本。
8.5.12、8.4.27、8.3.36 或 8.2.35,对应你所在的分支。PHP 8.1 及更早版本已不再由 PHP 官方发布更新;官方为 7.4、8.0、8.1 提供了最小化源码回补分支,部分发行版与 LTS 厂商也提供各自的修复。
向固定路径列表(预算允许时还包括 PHP credits 端点)发送最多 6 个 GET 请求,最多 3 并发、每个 3 秒,单页最多读取 64KB。默认关闭,且只应在你拥有或已获授权的站点上使用。
只按主机名做短期服务端缓存,避免重复检测反复打扰目标站点。结果不公开、不被索引,也不提供可分享的结果链接。