php官方已紧急修复cve-2026-109618和cve-2026-109619两个cvss v4.0评分均为9.2的未经身份验证远程代码执行漏洞,涉及php 5.4及以上全系列,需立即升级至8.2.35/8.3.36/8.4.27/8.5.12等修复版本。

PHP远程代码执行(RCE)漏洞修补不能只靠单一手段,必须分层、分场景应对。核心思路是:堵住入口、限制能力、升级底层、加固运行时。下面从四个关键方向讲清楚怎么做。
立即升级PHP版本和框架
这是最根本、最有效的修复方式。2026年10月刚曝出的CVE-2026-109618/109619两个高危RCE漏洞,影响所有PHP 5.4+版本,官方已在10月21日发布补丁。如果你还在用PHP 7.4、8.0或8.1,这些版本已终止支持,没有安全更新。
- 确认当前版本:运行
php -v或访问<?php echo phpversion(); ?>页面 - 升级到仍在支持周期的版本:PHP 8.2.31+、8.3.31+、8.4.21+ 或 8.5.6+
- ThinkPHP用户请升至5.1.40+或5.1.41+,官方已移除
invokeFunction等危险入口 - 升级后清空框架缓存(如ThinkPHP的
runtime/cache/)并重启Web服务
禁用高危函数与扩展(应急兜底)
当无法立刻升级时,临时禁用可被直接利用的函数,能快速切断多数RCE链路。注意:需先在测试环境验证是否影响业务功能。
- 编辑
php.ini,设置:disable_functions = system,exec,passthru,shell_exec,proc_open,popen,pcntl_exec,eval,assert,unserialize,call_user_func,call_user_func_array - SOAP扩展存在CVE-2026-6722(CVSS 9.5),如无业务依赖,可禁用:
extension=soap.so→ 注释掉该行 - 检查
phpinfo()输出,确认disable_functions已生效且无遗漏
Web服务器与应用层过滤攻击特征
很多RCE利用依赖特定参数模式,比如ThinkPHP中常见的s=/think\app、_method=__construct、filter[]=system等。可在Nginx/Apache或入口文件加规则拦截。
- Nginx配置示例(放在server块内):
if ($args ~* "(s=.*/think|_method=|filter\[\]=|vars\[0\]=)") { return 403; } - Apache .htaccess示例:
RewriteCond %{QUERY_STRING} (s=.*/think|_method=|filter\[\]=) [NC]<br>RewriteRule ^ - [F] - ThinkPHP项目可在
public/index.php顶部加白名单校验:
过滤$_GET['s']含/think/、$_POST['_method']为魔术方法等情况,直接die('Access Denied')
代码层加固:杜绝动态执行与反射滥用
很多RCE源于开发者误用动态调用。修复重点不是“怎么写得更巧”,而是“不让不可信输入参与代码构造”。
- 全局搜索并删除:
eval(、assert(、unserialize(、create_function(、call_user_func_array(等调用,尤其避免将$_GET/$_POST值直接传入 - ThinkPHP用户检查
Request.php中的method()函数,对_method参数强制限定为['GET','POST','PUT','DELETE']等合法HTTP方法 - 数据库查询、模板渲染、路由解析等环节,一律使用预处理、白名单路由、沙箱模板引擎(如Twig启用sandbox扩展)
- 关闭调试模式:
'app_debug' => false,防止错误堆栈泄露类路径和调用链
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











