2026年10月22日 PHP漏洞临时处理

一、最近的 PHP 漏洞是什么?

CVE-2026-109618

严重

2026 年 10 月 21 日发布

内存耗尽处理漏洞,可导致远程代码执行。

攻击者可能通过特制 HTTP 请求触发 PHP 内存处理异常,进而执行服务器上的恶意代码。

CVE-2026-109619

严重

2026 年 10 月 21 日发布

过期内存状态漏洞,可导致远程代码执行。

PHP 工作进程可能继续使用前一个请求遗留的无效状态,攻击者在特定条件下可以利用该问题执行恶意代码。

官方已经为受支持的版本发布修复版:

|---------|--------|
| PHP 分支 | 修复版本 |
| PHP 8.5 | 8.5.12 |
| PHP 8.4 | 8.4.27 |
| PHP 8.3 | 8.3.36 |
| PHP 8.2 | 8.2.35 |

二、PHP 怎么修复?按优先级处理

方案一:升级 PHP(推荐,彻底解决的方向)

如果这是运行多年的老项目,不建议直接将线上 PHP替换成 PHP 8.x。旧项目可能存在语法、函数、数据库驱动和第三方扩展兼容性问题。

建议按以下步骤实施:

  1. 备份网站代码、数据库、php.ini、Apache/Nginx 配置和扩展清单。

  2. 在测试环境部署 PHP 8.4 或 8.5 的修复版本,尽可能与旧环境并行运行。

  3. 检查旧代码的兼容问题,测试登录、数据库查询、文件上传、支付、定时任务等功能。

  4. 测试通过后切换线上 PHP 运行环境,并确认 Web 实际使用的版本已经升级。

  5. 完成漏洞扫描和日志检查。

我更建议把 PHP 8.4.27 或更高的 8.4 安全更新版作为老项目的迁移目标之一;PHP 8.5 也可以,但具体取决于项目及扩展的兼容情况。不要把已经停止支持的 PHP 7.4、8.0 当作最终安全修复版本。

方案二:短期不能升级,先做临时防护

以下措施用于降低风险,不能代替升级 PHP。

|----------|--------------------------------------------------------------------------|
| 处理措施 | 具体做法 |
| 限制公网访问 | 对后台、管理接口优先设置 IP 白名单、VPN 或访问控制 |
| 限制上传请求 | 在 Nginx/Apache 入口限制请求体大小;如果业务不使用文件上传,可考虑直接拦截 multipart 请求 |
| 关闭上传进度功能 | 在适用环境的 php.ini 管理配置中设置 session.upload_progress.enabled = Off,然后重启 PHP 服务 |
| 增加前端防护 | 使用 WAF、请求频率限制和异常请求拦截 |
| 排查入侵情况 | 检查近期新增的 PHP 文件、异常文件修改、可疑上传和异常请求日志 |

PHP 官方针对最新漏洞明确指出:禁用 session.upload_progress 只能缓解其中一条利用路径,不是完整修复。官方对内存耗尽漏洞还提出了 memory_limit=-1 这一临时配置缓解措施,但它会取消 PHP 自身的内存限制,可能导致内存消耗失控,不建议未经评估就直接在生产环境设置。

如果网站正在处理敏感业务、无法及时升级且直接暴露在公网,优先临时限制外部访问,必要时将网站隔离,直至完成修复。

三、处理方案

一、修改php配置

/usr/local/php/etc/php-fpm.conf(找到自己的php-fpm.conf的位置)
复制代码
[www]
listen = /tmp/php-cgi.sock
listen.backlog = -1
listen.allowed_clients = 127.0.0.1
listen.owner = www
listen.group = www
listen.mode = 0660

; 临时缓解措施:关闭 Session 上传进度功能
php_admin_flag[session.upload_progress.enabled] = off

两处改动分别是:

|--------------------|------------------------------------------------------------|
| 原配置 | 修改后 |
| listen.mode = 0666 | listen.mode = 0660 |
| 没有上传进度限制 | 增加 php_admin_flagsession.upload_progress.enabled = off |

/usr/local/php/etc/php.ini (找到自己的php.ini的位置)
复制代码
调整下面四个的参数

session.upload_progress.enabled = Off

memory_limit = 128M
post_max_size = 8M
upload_max_filesize = 4M

重启php命令

复制代码
重新加载(替换成自己的命令)
/etc/init.d/php-fpm reload 
重新启动(替换成自己的命令)
/etc/init.d/php-fpm restart

nginx

调整的代码
复制代码
# 安全加固:该站点不需要大文件上传      这个可以配置在nginx的http模块里面
    # 无大文件上传需求的示例
    client_max_body_size 8m;
      # 限制客户端发送请求头和请求体时的空闲等待
    client_header_timeout 15s;
    client_body_timeout 30s;
    
    #如果网站不需要上传文件 该网站不接受 multipart 文件上传   这个只能配置在server模块里面
if ($http_content_type ~* "multipart/form-data") {
    return 403;
}
重启命令
复制代码
检查nginx配置文件(替换自己的命令)
/usr/local/nginx/sbin/nginx -t
重新加载(替换自己的命令)
/usr/local/nginx/sbin/nginx -s reload
重启
/etc/init.d/nginx restart
相关推荐
饮水桶_T1 小时前
JAVA IO流笔记
开发语言·数据结构·算法
Felven4 小时前
C. Brr Brrr Patapim
c语言·开发语言
路溪非溪5 小时前
python标准库使用总结
开发语言·python
SomeOtherTime7 小时前
Rust 面向对象介绍(AI回答)
开发语言·python·rust
zh_xuan7 小时前
kotlin常见面试题
开发语言·kotlin·面试题
xbzb8 小时前
从零容器化部署 ECShop:Harbor 私有仓库 + 自定义 PHP 镜像 + LNMP 三容器
容器·php·harbor·镜像·仓库·ecshop
草莓熊Lotso9 小时前
【C++ 基于微服务的即时通讯系统】文件存储子服务实战:UUID生成、文件IO封装与全接口单元测试
开发语言·网络·数据库·c++·微服务·架构·单元测试
huaqianzkh10 小时前
WinForm C#:循环修改控件UI闪烁卡顿?SuspendLayout / ResumeLayout 与 BeginUpdate 优化
开发语言·ui·c#
沐晓时光20 小时前
C语言入门,内存函数知识讲解
c语言·开发语言
David猪大卫1 天前
【C++修炼】map 和 set 的使用
c语言·开发语言·数据结构·c++·经验分享·笔记·学习