news 2026/11/2 6:31:04

PHP 的 php2shell 漏洞怎么修,还有四条安全通告怎么处理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PHP 的 php2shell 漏洞怎么修,还有四条安全通告怎么处理

用 PHP 做网站的,需要尽快做一件事:把 PHP 升到 8.5.12、8.4.27、8.3.36、8.2.35 当中的一个(和你现在用的版本线对应),升完重启 PHP。补丁 2026 年 10 月 21 日已经发布,php.net 的官方公告说得很直接,只有升级是完整办法。

这两个漏洞代号 php2shell(CVE-2026-109618、CVE-2026-109619),阿里云给我发了短信提醒,网上说法很多。下面按顺序讲四件事:事情怎么来的、漏洞是什么、你要做哪些操作、到底有多危险。阿里云同一份报告里还提醒了另外四件事,放在最后一节。

事情按时间怎么来的

2024 年,PHP 做了一次外部安全审计,出钱的是 PHP 基金会和德国的 Sovereign Tech Agency,组织方 OSTIF,执行方 Quarkslab。修审计问题的时候,开发者撞见一个老毛病:PHP 在内存不够用的时候,自己的清理代码会出错。当时没想到具体的攻击办法,几个修复方案又各有代价,安全团队一直定不下来,一拖两年。PHP 基金会后来自己复盘,承认这是流程和人手的问题(PHP 基金会复盘)。

2026 年 7 月 30 日,安全公司 Calif 通过 OpenAI 的 Patch the Planet 项目开始审计 PHP。

8 月 11 日,Calif 的研究员 Ryan A 报出一个严重问题:不用登录就能远程执行命令,根子就是 2024 年那个内存问题。OpenAI 同一天独立报了同一个根子,8 月 24 日 Wiz、9 月 18 日 OpenAI 又补了别的攻击路径(PHP 基金会复盘)。

10 月 20 日,两个漏洞编号在论坛和社交平台先传了出来,带着错误的发布时间和 10.0 的错误评分(实际是 9.2)。官方只好提前发预告,补丁发布从 10 月 22 日提前到 21 日。当天 Calif 误发过一段漏洞演示视频,删掉后副本已经传开(PHP 基金会复盘)。

10 月 21 日这一天事情最多。凌晨 07:41(UTC),Chainguard 提前把带补丁的镜像发了出来,比官方约定的发布时间早六个多小时,等于让攻击者可以对着二进制研究补丁,大部分用户还在等包。晚上 23:00(日本时间),官方发布补丁。发补丁之前,20:55 日本首相高市早苗在 X 上发帖,请站长确认网站是不是用 PHP,今晚的补丁尽快打,实在来不及就先把网站停下来。据 OSCHINA 报道,这条帖子浏览量超过五千七百万。

漏洞是什么

先解释一个词。远程代码执行(RCE)的意思是,攻击者不用登录就能在你的服务器上运行他自己的命令,机器等于归他了。

php2shell 是两个洞,都出在 PHP 自己身上,跟你网站代码写得好不好没关系(php.net 官方公告):

  • CVE-2026-109618:PHP 处理「内存不够用」(OOM)的时候,内部数据建到一半被打断,清理代码把半成品当成正常数据用了,内存就乱了。
  • CVE-2026-109619:上一个请求用完的内存被释放了,PHP 内部却还留着指向它的旧数据,同一个 PHP 进程处理下一个请求时会去用这些旧数据。

两个洞都在每个网页请求都会走的代码里。官方说,所有对外提供网页的 PHP 都受影响,包括 PHP-FPM、Apache mod_php、php-cgi、LiteSpeed、FrankenPHP。用 Apache mod_php 的最危险,攻击请求在你的应用代码运行之前就能触发(php.net 官方公告)。

已经停止维护的老版本也在影响范围内。watchTowr 确认 PHP 5、PHP 7 都受影响,但官方只给 8.2 及以上的版本出补丁(watchTowr FAQ)。

你要做的操作

第一步,查版本。在服务器上执行php -v,看现在用的是哪条版本线。

第二步,升级。升到 8.5.12、8.4.27、8.3.36、8.2.35 当中对应的那个。Linux 发行版和 LTS 厂商提前拿到了补丁,用系统包管理升级就行(php.net 官方公告)。

第三步,重启。升级后把每个 PHP 进程重启一遍,不重启补丁不生效(watchTowr 的处置步骤)。

老版本怎么办。8.1 及更早,官方不再出补丁版本。7.4、8.0、8.1 可以用官方放出的源码修复分支,或者发行版、LTS 厂商的补丁包;7.3 和更老的版本没有修复,只能换版本线(php.net 官方公告、watchTowr FAQ)。8.2 到 2026 年 12 月 31 日也停止维护,顺手把升级计划排上。

实在升不了的临时办法。官方公告明说这些只减少风险、不能根治。我照公告原文摘出来,没在自己机器上验证过,改之前先在测试环境试,记得备份配置:

  • 防第一个洞,把memory_limit=-1用应用改不了的方式固定(比如 FPM pool 或 Apache 配置里的php_admin_value),再把post_max_size调小,不需要上传的站设 8M,需要上传的设 32M。
  • 防第二个洞,把session.upload_progress.enabled=0,然后重启所有 PHP 进程;PHP 8.5 再加fatal_error_backtraces=0。
  • 这两条只挡住已经确认的攻击路径,别的变体挡不住。

到底有多危险

目前公开的说法互相矛盾,我按来源摆出来,不替你下结论。

watchTowr 说,他们的全球蜜罐从 10 月 21 日起看到了真实攻击(watchTowr FAQ)。不过截至 10 月 22 日,美国 CISA 的已知被利用漏洞清单还没收录这两个洞。

PHP 官方说,补丁发布前他们一直盯着网上出现的攻击脚本(PoC),到发布时没见到真正能用的(PHP 基金会复盘)。

Elias Taylor 的个人分析说,GitHub 上有几千份所谓 PoC,但都打不动一台普通的 PHP 服务器,不少还得先靠另一个漏洞(比如文件包含)才能「演示成功」,有人甚至为了演示先给测试服务器埋了洞。他的结论是这个漏洞远没到 Log4Shell 那个好利用的程度(这是他的分析,不是官方结论)。

普通人记两句就够:到底有没有人真的打成功,现在谁也说不死;但升级这件事没有争议,官方、watchTowr、写分析的人三家都让你先打补丁,照做就行。

阿里云报告里的另外四件事

下面四条来自阿里云安全态势报告(2026 年 9 月),和 PHP 这件事无关,同一期通告里一起提醒了。

JumpServer 被利用,已经有人中招。JumpServer 是开源堡垒机,很多公司用它连内网服务器。阿里云说云上已经有主机被打,攻击用的是它 Web 终端组件 Chen 里一个数据解析漏洞(fastjson,CVE-2026-16723),不用登录就能执行命令,然后装挖矿或后门。官方修复版本是 v3.10.22 LTS 和 v4.10.17 LTS,修法是直接删掉那个有问题的组件。攻击回连的域名cdn.876553.xyz可以拿去查日志、做阻断。堡垒机手里攥着进内网的路,这条和 PHP 一样先处理。

Spring Boot 应用被批量攻击。这条没有漏洞编号,被打的是暴露在公网、又留着未鉴权命令接口的 Spring Boot 应用,阿里云举的例子有游戏后台、登录认证服务、工作流引擎。攻击者先看机器情况,再下载挖矿程序和后门。处理办法是把这类应用收回内网,或者前面挡一层防火墙,同时关掉 beanShell、Groovy 这类脚本接口和 Actuator 里的/env、/heapdump、/jolokia。阿里云提醒,关这些接口可能影响运维功能,先在测试环境试。

哪吒监控的 agent 被当成执行工具。这条全程没用漏洞,走的是面板和 agent 本来就有的下发命令功能。哪吒监控的 agent 以 root 跑在机器上,面板或账号被人接管后,攻击者就用它下载木马(Poseidon.H),藏在/usr/lib/.sysd/svc,装成系统进程[kworker]常驻。处理办法是监控面板不暴露到公网、开强密码和二次验证、换掉旧凭据;排查时看 nezha-agent 进程有没有莫名其妙拉起 sh 去下载文件。杀毒软件对这种打法没什么用,得看主机行为告警。

GitLab 有个满分漏洞(CVE-2026-97229)。出在 CI/CD 配置里正则表达式的编译环节,构造好的正则能让 GitLab 内部的正则引擎算错长度、破坏内存,攻击者通过 CI Lint 接口就能以 git 用户身份执行命令,不用登录。影响 19.2.0 到 19.2.7、19.3.0 到 19.3.4、19.4.0 到 19.4.1,修在 19.2.8、19.3.5、19.4.2。10 月 13 日披露,利用代码已经公开,阿里云说暂时没看到在野攻击。升级前记得备份数据、测插件兼容。

参考资料

  • PHP 安全公告(2026-10-21)里的两个严重远程代码执行漏洞
  • PHP 基金会复盘 Today’s PHP Security Release
  • watchTowr PHP2Shell FAQ
  • Elias Taylor 的文章 There isn’t an easy exploit for this PHP vulnerability
  • 阿里云安全态势报告(2026 年 9 月)
  • OSCHINA 的两篇报道,PHP 漏洞惊动日本首相和watchTowr PHP2Shell FAQ 摘要
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/2 6:30:14

项目框架搭建(2)

一.总结学习今天学习跨平台的数据库移植,了解mqtt是什么,以及mqtt的移植,对于我的项目框架中需要用到数据库存储数据,以及将数据上传到服务器上,进行相关的处理和预警相应的操作,为什么要交叉开发呢&#x…

作者头像 李华
网站建设 2026/11/2 6:29:35

OBS Studio 快捷键配置:5 步跑通全局热键到场景切换

OBS Studio 快捷键配置:5 步跑通全局热键到场景切换 【免费下载链接】obs-studio OBS Studio - Free and open source software for live streaming and screen recording 项目地址: https://gitcode.com/GitHub_Trending/ob/obs-studio 你正在直播&#xff…

作者头像 李华
网站建设 2026/11/2 6:25:36

资源懒加载与预加载策略(进阶篇)——工程师必备知识

本文深入探讨资源懒加载与预加载策略(进阶篇),涵盖背景分析、原理剖析、实战步骤、配置示例、优化建议和避坑指南。 很多团队在前端性能优化场景中都会遇到与资源懒加载与预加载策略(进阶篇)相关的挑战。本文结合生产环…

作者头像 李华
网站建设 2026/11/2 6:25:01

军工ETF量化策略

100万元,策略期末156.60万元;买入后一直持有,期末112.00万元。 策略比买入后一直持有多约44.60万元,最大回撤分别为17.38%、47.33%。收益优势是否值得采用,还要看下文成本与邻近参数的结果。 首图由聚宽完成回测后的…

作者头像 李华