cve-2026-109618和cve-2026-109619是php内核级远程代码执行漏洞,利用oom半初始化状态与跨请求全局指针未清零触发堆uaf,禁用system等函数无效;有效缓解需升级至8.2.35/8.3.36/8.4.27/8.5.12或实施网络隔离、关停非必要上传接口等组合措施。

直接禁用高危函数对缓解 CVE-2026-109618 / 109619(PHP2Shell)效果有限,甚至可能无效。这两个漏洞属于“未认证远程代码执行”,不依赖system、exec等函数调用,而是利用 PHP 内核级状态残留(OOM 半初始化、跨请求全局指针未清零)触发堆 UAF 和任意代码执行。禁用函数无法拦截底层内存破坏路径。
真正有效的缓解方向
重点不是封函数,而是切断攻击入口与执行环境:
- 立即停用所有未登录即可访问的上传/解析/回调类接口:PHP2Shell 的 PoC 依赖特制 multipart/form-data 请求或 Web Worker 触发路径,关闭会话上传进度、文件预览、富文本图片回传等非必要接口可快速缩小攻击面
-
网络层隔离 PHP 进程通信通道:若使用 PHP-FPM,将
listen从0.0.0.0:9000改为127.0.0.1:9000并配置listen.allowed_clients = 127.0.0.1;Nginx/Apache 中禁用fastcgi_param SCRIPT_FILENAME动态拼接,改用固定SCRIPT_NAME和PATH_INFO -
强制启用 PHP opcache 并禁止运行时编译:在 php.ini 中设置
opcache.enable=1、opcache.enable_cli=1、opcache.jit_buffer_size=0(禁用 JIT),并添加opcache.restrict_api="/var/www"限制 API 调用范围 -
删除或重命名 web 可访问目录下的
phpinfo.php、test.php等调试文件:攻击者常通过这些页面确认 PHP 版本及扩展状态,为精准利用铺路
禁用函数仅作为辅助手段(需配合其他措施)
若仍需限制执行类函数,应在php.ini中统一配置(注意:必须作用于所有 SAPI,包括 FPM、CLI、Apache 模块):
- 设置
disable_functions = system,exec,passthru,shell_exec,proc_open,pcntl_exec,eval,assert,create_function,call_user_func,call_user_func_array - 确保该配置位于
php-fpm.conf或www.conf中php_admin_value[disable_functions]项下,避免被用户 ini 文件覆盖 - 重启对应服务后,用
php -r "echo shell_exec('id');"和php -m | grep disable双重验证是否生效
最可靠的做法是升级
PHP 官方已发布修复版本:8.2.35、8.3.36、8.4.27、8.5.12。这些版本合并修复了 OOM longjmp 状态残留和 stale global pointer 问题。若因兼容性暂无法升级,请优先采用网络隔离 + 接口关停组合策略,而非依赖函数禁用。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











