PHP2Shell 漏洞有多严重?维基媒体与多所大学临时停服

赛博资讯2026-10-22发布 WarpEdit
2,345 0 0

PHP2Shell 漏洞已经让多家机构临时关闭在线服务。2026 年 10 月 21 日,PHP 发布安全更新,修复 CVE-2026-109618 和 CVE-2026-109619:两项漏洞的 CVSS v4.0 评分均为 9.2,可能让未登录的攻击者在服务器上执行代码。维基媒体基金会关闭了部分配套服务,多所大学也暂停了学习平台或网站访问。修复版已于北京时间当日 22:00 发布。

PHP2Shell 概念封面:Web 请求穿过 PHP 内核异常处理层,周围网站显示维护中

黑客怎样把请求变成入侵

入口可以只是一份发送给网站的特制 HTTP 请求。PHP 接到表单、上传等数据后,要先把它们整理成内存中的内部结构,再交给网站程序处理。攻击者瞄准的是这个处理过程:让 PHP 在特定时机出错,留下不完整或已经失效的内存状态,再设法让程序继续使用它。

可以把一个 PHP 工作进程想成反复接单的工作人员。每次请求到来,工作人员准备一张工作台,登记材料,处理完再清理。下面两个漏洞,分别出在“登记没完成就被迫收工”和“收工后还留着指向旧材料的便签”。这是理解内存生命周期的比喻,实际错误发生在 PHP 内部的数据结构和引用中。

第一种:登记没完成,清理却照常开始

CVE-2026-109618 与内存耗尽时的异常退出有关。请求数据在网络上传过来有多大,不等于 PHP 整理它需要多少内存。攻击者可以组织输入,让内部处理耗尽内存,而且把失败卡在某份数据只初始化了一部分的时刻。

旧版 PHP 的异常退出机制会直接跳出当前处理,某些内部结构因此来不及变成完整、有效的状态。随后进入清理环节,PHP 却可能把这些半成品当成正常数据,读取其中的内容,或沿着错误的内存引用继续操作。就像材料登记到一半突然停电,恢复后清理人员却把尚未核实的地址当成了正式指令。

内存耗尽通常只应导致请求失败。危险之处在于,攻击者若还能影响相关内存内容及排列,就可能利用这次错误访问改变程序行为,发展为远程代码执行。让网站报“内存不足”和成功入侵之间,还隔着具体的利用条件。它们受 PHP 构建、扩展、前端处理方式和内存布局影响。

第二种:材料搬走了,旧便签还在

CVE-2026-109619 涉及跨请求残留的旧引用。一个工作进程会连续处理多个请求。前一次请求结束后,它占用的内存应当释放,进程里指向这片内存的状态也应及时清空。某些致命错误或异常清理过程会打乱这个顺序:材料已经搬走,便签却还写着原来的位置。

等同一个工作进程处理后续请求时,某些初始化前的操作可能先读到这张旧便签。这就是“释放后使用”:那块内存可能已经有了别的用途,PHP 却仍把其中内容当成前一次请求的数据。攻击者若能影响内存复用,并让后续操作碰到残留状态,就可能造成崩溃、信息泄露,进一步达到代码执行。

这里的关键条件是前一次留下失效状态,后一次又由同一工作进程使用它。Session 上传进度处理和错误处理是官方确认的相关路径。这也解释了为什么只给某个页面补一道登录检查,或者关掉一种上传功能,都不足以覆盖所有变体。两个 CVE 的机制相关,内存耗尽也可能参与触发状态残留,但并不意味着每次利用都必须先后串起两个漏洞。

PHP2Shell 两类内存错误示意:初始化中断后误用无效状态,以及同一工作进程跨请求使用旧引用
两类请求生命周期错误示意:上方是初始化被打断,下方是同一工作进程跨请求使用旧引用。

为什么登录和常规限流不够

PHP 官方已经确认,在 Apache 的 mod_php 模式下,未登录请求可以在网站应用代码开始运行前触发攻击。此时 WordPress、Moodle 或插件自己的权限检查还没有运行。攻击者不必先拿到网站账号,也不需要管理员点开一封邮件。

风险也覆盖 PHP-FPM、php-cgi、FrankenPHP 和 LiteSpeed 等处理 Web 请求的环境。PHP Foundation 披露,PHP-FPM 中也已通过应用层代码路径确认远程代码执行。不过,PHP-FPM 在请求启动失败时会退出相应子进程,不能把 mod_php 的那条启动阶段路径原样套过去;具体可利用条件仍取决于应用和运行环境。

常规限流能减少请求数量,却不能修复一次请求或跨请求处理中的内存错误。请求大小限制、WAF 规则等措施可以减少部分暴露面,无法替代 PHP 内核更新。

攻击成功后的权限通常是处理请求的 Web 工作进程权限。即便它不是 root,也可能足以读到应用配置、修改网站文件,或利用应用持有的数据库凭据访问数据。能否继续扩大权限,还要看服务器的其他权限和隔离情况;不能把“PHP 代码执行”直接写成“必然拿下整台服务器”。

原理核对:PHP 官方内存耗尽漏洞通告、PHP 官方状态残留漏洞通告。

哪些机构临时停服了

下面列的是机构在 10 月 21 日正式公告中的处置,反映当时的维护范围;恢复进度会继续变化。

机构 公告中的受影响服务 为什么暂停
维基媒体基金会 Toolforge、Cloud VPS 等配套服务;公告后来补充,维护期间 wiki 也可能中断 先下线,再修补并协调服务所有者完成升级
德国莱比锡大学 包括大学主站托管、内网、Moodle、电子考试、Matomo、LimeSurvey 等多类服务 为降低 PHP 漏洞风险,临时限制访问或关闭相关服务
瑞典林奈大学 Moodle 学习平台 作为预防性安全措施,公告安排当日临时下线
美国 Colgate 大学 由 OpenLMS 托管的 Moodle 托管商预防性暂停服务,等待修补和验证

维基媒体的案例说明了恢复为什么需要时间。Toolforge 和 Cloud VPS 上有不少由志愿开发者维护的应用,一部分用户还能自行选择 PHP 版本。基金会可以处理自己有权限管理的系统,其他服务则需要联系维护者逐一确认。平台装好补丁后,还要确认它承载的应用已经用上新版本。

大学受到的影响则很具体:课程资料、作业提交、测验、成绩查询和校内业务都可能随维护暂停。Colgate 的公告明确说,当时没有证据表明其 Moodle 数据被访问或泄露,停服是保护措施。判断这些事件时,应分别看维护公告和安全调查结果。

机构原始公告:

  • 维基媒体基金会:https://diff.wikimedia.org/2026/10/21/impact-of-php-vulnerabilities-on-wikimedia-tools-and-services/
  • 莱比锡大学:https://www.urz.uni-leipzig.de/en/ueber-uns/newsportal/newsdetail/artikel/sicherheitsabschaltung-verschiedener-services-2026-10-21
  • 林奈大学:https://www.lnu.se/en/meet-linnaeus-university/current/news/driftinformation/it/261021-moodle/
  • Colgate 大学:https://www.colgate.edu/about/offices-centers-institutes/information-technology-services/its-updates/websites-may-suddenly

补丁已经发布,旧 PHP 也要处理

此次上游修复版本分别为 PHP 8.2.35、8.3.36、8.4.27 和 8.5.12。使用这些分支的站长,需要把真正服务网站的运行环境更新到对应修复版,或安装发行商明确覆盖这两个 CVE 的回移补丁。

PHP 8.1 及更早版本已停止上游安全维护,不过这次 PHP 安全团队额外提供了 7.4、8.0、8.1 的最小源码回移补丁。部分发行商和面板据此提供旧分支修复包。这给暂时无法迁移的旧网站留下了过渡办法,但旧分支的长期维护问题仍然存在。

判断是否修好,要看实际运行版本及软件包的安全公告。服务器里可能并存网站 PHP、面板 PHP、定时任务和后台守护进程使用的 PHP;安装了新包之后,旧工作进程也可能继续存活。对于使用 WordPress 等建站系统的用户,除了核对网页请求使用的版本,还要检查扩展加载和相关进程是否完成切换。

为什么有些网站宁可先下线

当漏洞可能在应用逻辑执行前触发时,网站里的“维护模式”未必能隔离风险,因为请求仍可能进入 PHP。还没拿到修复包、无法确定所有实例状态的机构,可能选择在 Web 服务器或代理层暂停相关入口,再逐步恢复。这是在业务可用性和暴露时间之间作出的应急取舍。

PHP 官方列出的配置调整和访问限制只能减少特定攻击路径,完整处理仍需要更新。对普通用户,最直接的影响可能是一段时间无法使用网站;对站长,恢复标准则应包括补丁生效、旧进程退出和业务验证,而不只是首页重新能打开。

PHP 官方安全公告:https://www.php.net/archive/2026.php#2026-10-21-5

PHP Foundation 的修复与披露说明:https://thephp.foundation/blog/2026/10/21/todays-php-security-release-and-how-were-strengthening-php-security/

© 版权声明

相关文章

没有相关内容!

暂无评论

您必须登录才能参与评论!
立即登录
none
暂无评论...