PHP官方紧急修复两个CVSS 9.2高危RCE漏洞CVE-2026-109618和CVE-2026-109619,源于核心引擎十年未解的内存管理缺陷,AI辅助研究首次实现远程利用,影响全球约70%使用PHP的网站。

直接查 PHP 官方安全公告页
PHP 官方不单独为每个 CVE 发布独立网页公告,而是统一归档在 https://www.php.net/security-advisories.php。该页面只列已确认并修复的漏洞,且仅包含当前仍受支持版本(截至 2026 年 10 月,是 PHP 8.1、8.2、8.3、8.4)。
PHP 8.1.28 属于受影响版本(CVE-2024-4577 要求升级到 8.1.29),但它本身不是“修复版”,所以你在该页面上搜不到 “8.1.28” 这个数字——只会看到对 CVE-2024-4577 的条目,明确写着 “Fixed in PHP 8.1.29”。
操作建议:
- 打开
https://www.php.net/security-advisories.php - 按 Ctrl+F 搜索
CVE-2024-4577,定位到对应条目 - 查看其 “Affected versions” 和 “Fixed in” 字段,确认是否含
8.1.28 - 不要依赖第三方博客或漏洞平台的“公告截图”,以该页面 + 对应版本发布日志为准
验证 PHP 8.1.28 是否真受影响
仅看公告不够,得确认你本地运行的确实是未修复状态。PHP 自带的 phpinfo() 不显示 CVE 状态,但可交叉验证:
立即学习“PHP免费学习笔记(深入)”;
- 执行
php-cgi -v,输出应为PHP 8.1.28 (cgi-fcgi) - 检查系统区域设置:
chcp命令返回值是否为936(简体中文)或950(繁体中文)或932(日文) - 确认 Web 服务器配置中存在 CGI 模式调用,例如 Apache 中有
Action application/x-httpd-php-cgi或ScriptAlias /php-cgi/ - 若三项全满足,则
8.1.28就处于实际可利用状态,无需再等“公告确认”
别被“PHP 8.1.28 发布公告”误导
搜索时容易点进一些标题党文章,比如 “PHP 8.1.28 正式发布”,那只是常规功能更新公告,不提安全问题。真正有效的信息源只有两个:
-
https://www.php.net/ChangeLog-8.php#8.1.29—— 查看8.1.29的变更日志,其中明确列出修复了CVE-2024-4577 -
https://github.com/php/php-src/commit/4dd9a36c16—— 直接看补丁提交,修改了sapi/cgi/cgi_main.c中对 0x80 以上字节和-符号的过滤逻辑
所有声称“PHP 官方就 8.1.28 单独发过漏洞通告”的说法,都是把版本发布页误当作安全通告。
现在该做什么
PHP 8.1.28 已无官方支持(8.1.29 是最后一个 8.1.x 版本),且 CVE-2024-4577 是 CVSS 9.8 的远程代码执行漏洞,不能靠“加 WAF 规则”或“关 CGI”临时应付。
- 立即升级到
8.1.29(如需继续用 8.1 分支)或迁移到8.2.20+/8.3.8+/8.4.26+ - 若无法升级,必须禁用 CGI 模式:删除所有
Action、ScriptAlias、SetHandler application/x-httpd-php-cgi类配置,并确保php-cgi.exe不在 Web 可访问路径下 - Windows 系统级缓解(次选):将系统区域设置改为英文(非 Unicode 设置 → 更改系统区域设置 → 英语(美国)),可使 Best-Fit 特性失效,但会影响已有中文路径/文件名处理
补丁本身只改了两处字符过滤,但绕过条件涉及 Windows 内核级编码转换,一旦环境匹配,请求里一个 %AD 就能触发,没有中间态。



















