PHP2Shell:两个关键PHP漏洞,一个泄露的禁令,以及关于漏洞利用的实际已知信息
PHP发布了针对两个关键远程代码执行漏洞CVE-2026-109618和CVE-2026-109619(称为PHP2Shell)的紧急修复程序。
PHP发布了针对两个关键远程代码执行漏洞CVE-2026-109618和CVE-2026-109619(称为PHP2Shell)的紧急修复程序。该版本于2026年10月21日发布。本期节目以通俗易懂的方式解释了这两个内存错误,为什么2024年审计的一个线索迟迟未修复,禁令如何泄露,以及哪些消息来源对利用情况有何说法。它还涵盖了GitLab同日发布的关键补丁版本以及新墨西哥州对Meta处以250亿美元罚款的命令。
本视频涵盖的内容
- PHP团队对这两个漏洞的CVSS v4.0评分为9.2。已修复的版本是PHP 8.2.35、8.3.36、8.4.27和8.5.12;PHP 7.4、8.0和8.1仅获得了源代码补丁。PHP表示更新是唯一完整的缓解措施。
- 第一个漏洞源于PHP在错误时刻内存不足时,请求只构建了一半。第二个漏洞源于一个指向某个请求内存的遗留指针,同一工作进程中的后续请求可以使用该指针。在带有mod_php的Apache上,第一个路径在应用程序代码之前运行。
- 一名PHP核心开发人员在2024年的一次审计中发现了内存问题的初步迹象。PHP基金会表示,相互竞争的修复方案存在权衡,一个基于共识的安全团队难以做出选择,他们称之为结构性失败。
- 基金会表示,CVE ID于10月20日泄露,Calif错误地发布了一个概念验证视频,Chainguard在发布前六个多小时发布了包含修复的构建镜像。Chainguard的CEO表示,当时已经有人受到攻击,而且他独立发现了这些漏洞。
- 消息来源对漏洞利用情况存在分歧。亚马逊于10月17日记录了一次尝试,后来表示PHP2Shell被广泛利用。watchTowr报告了野外利用。CISA在发布时未观察到漏洞利用,PHP团队在发布时未发现可用的漏洞。许多公开的概念验证脚本据报道无法工作。
- 检查所有运行PHP的地方,包括其他软件内部的副本,更新,重启工作进程,并审查10月17日以来的日志。
常见问题
PHP2Shell的两个漏洞是什么?
PHP2Shell指代两个PHP关键漏洞,CVE-2026-109618和CVE-2026-109619,PHP团队对两者的评级均为9.2。第一个漏洞是PHP在错误时刻内存不足时,请求只构建了一半,清理程序随后会信任它。第二个漏洞是留下一个指向某个请求内存的指针,同一工作进程中的后续请求可以使用该指针。两者都可能导致未经登录的代码执行。
哪些PHP版本有PHP2Shell的修复程序,不支持的版本呢?
PHP项目于10月21日在8.2.35、8.3.36、8.4.27和8.5.12版本中发布了修复程序。对于7.4、8.0和8.1版本,它只发布了源代码补丁,BleepingComputer报告称发行版和长期支持供应商可能会提供回溯修复。PHP表示没有完整的变通方案,因此更新或向供应商寻求打补丁的软件包是唯一安全的方案。
为什么一个已知的PHP内存漏洞直到2026年10月才修复?
PHP基金会表示,一名核心开发人员在2024年的一次安全审计中发现了内存问题的初步迹象,但当时没有已知的漏洞利用路径,而且每个候选修复都存在兼容性中断等权衡。安全团队通过共识做出决策,难以做出选择,基金会称之为由其决策过程和资源匮乏导致的结构性失败。
PHP2Shell是否正在被利用,利用难度如何?
消息来源存在分歧。亚马逊于10月17日记录了一次漏洞利用尝试,后来表示PHP2Shell被广泛利用,watchTowr报告了野外利用。CISA在发布时未观察到漏洞利用,PHP团队在发布时未发现可用的漏洞利用。watchTowr表示,大多数公开的漏洞利用脚本会导致崩溃或不起作用,VulnCheck发现代码执行仅在某些设置中有效。
The Daily Diff对PHP2Shell的裁决是什么?
The Daily Diff的裁决是SHIP IT:今晚发布PHP更新,因为新版本是唯一完整的修复。CISA表示要清查所有运行PHP的系统,包括其他软件内部的副本,应用补丁,如果PHP系统无法更新,则将其下线。亚马逊建议审查10月17日以来的日志,当时它发现了第一次尝试。
翻译的文字记录
译自英文原版旁白。可用音频和字幕由 YouTube 控制。
谁提前四天尝试了PHP2Shell?
0:00 安全禁令旨在在补丁发布之前保守漏洞的秘密。 亚马逊提前四天记录了一次针对PHP关键漏洞的尝试。 在这段视频中,是谁发现了它? 禁令是如何泄露的? 它到底有多糟糕? 而那个被指责泄密的公司的辩护出乎我的意料。 我会讲到它。 今天是10月22日星期四,这里是The Daily Diff。
0:21 PHP是一种脚本语言,在网页到达你之前,它会在服务器上构建网页。 它已经有三十多年的历史了,据估计, 它运行着大约百分之七十的网站,包括WordPress和维基百科背后的软件。 开发人员喜欢嘲笑它,通常是从PHP为他们服务的页面上。 它的维护是一个非营利组织,大约有十三名工程师。
两个PHP2Shell漏洞是什么?
0:41 周三,PHP发布了紧急修复程序,修复了两个关键漏洞,这些漏洞允许陌生人 在没有登录的情况下在服务器上运行代码。 它们合称为PHP2Shell,可以追溯到PHP 5.4版本。 这是第一个漏洞的通俗解释。 PHP为每个请求分配一个内存预算。 如果一个请求在恰好错误的时刻达到该限制, PHP会匆忙退出,并使请求只构建了一半。 然后,清理步骤会信任这个半构建的东西。
1:07 第二个漏洞是一个遗留问题。 致命错误可能会留下一个指向属于上一个请求的内存的注释。 同一工作进程处理下一个请求并遵循该注释。 到那时,该地址上住着其他人。 在带有mod PHP的Apache上,损坏发生在你的代码运行之前, 所以你的登录页面根本没有发言权。 Wiz说,即使是“Hello World”脚本也会受到影响。 修复程序取消了PHP因内存不足而紧急退出的功能。
1:32 现在,PHP不会在请求中途退出,而是在下一个安全点礼貌地停止。 奇怪的是,第一个线索有多古老。
一个已知漏洞为何等待两年才修复?
1:39 2024年,一次外部安全审计引导一名PHP核心开发人员发现了 内存问题的初步迹象。 当时没有已知的漏洞利用,而且每个修复都破坏了一些东西。 一个通过共识做出决定的团队无法做出选择,所以这个漏洞被搁置了。 然后到了八月份,发现者们在几天内接踵而至。
谁以及如何发现了PHP2Shell?
1:56 Calif研究员Ryan Austin于8月1日发现了它, 通过OpenAI的“修补星球”计划进行工作。 OpenAI独立报告了相同的根本原因。 几周后,Wiz使用Gemini和GPT模型发现了变体。 Austin说他使用了任何人都可以获得的模型,以及一个关于PHP旧漏洞隐藏位置的理论。 OpenAI说前沿人工智能是关键。 这个漏洞已经隐藏了十多年。 发布计划在星期四进行。
PHP2Shell的禁令是如何泄露的?
2:21 周二,两个CVE编号开始在网上流传, 发布时间错误,评分为十。 PHP将发布日期提前了一天。 那天晚上,Calif意外地发布了一个概念验证视频, 并且副本在删除后仍然存在。 周三早上,在发布前六个多小时, Chainguard发布了包含修复的构建镜像。 PHP表示,任何攻击者都可以在其他人等待的时候研究这个修复。
2:46 补丁也是一个diff,攻击者会阅读diff。
PHP2Shell是否正在被利用,由谁利用?
2:50 那么,谁实际上受到了攻击? 亚马逊的蜜罐在10月17日记录了一次尝试,后来表示 PHP2Shell被广泛利用。 watchTowr报告了野外利用。 Cisa表示,在发布时没有观察到任何情况,PHP团队在发布时也没有发现 可用的漏洞利用。 Cloudflare的CEO表示,在公告发布前的十小时内,他们看到了数千次尝试, 到周四早上达到了数百万次。
3:13 亚马逊在一个问题上很谨慎。 它不知道它最早的尝试是否会在真实系统上奏效。 一次尝试只是一次敲门。 那么,它到底有多糟糕? watchTowr表示,流行的公开漏洞利用大多会导致崩溃或不起作用。 VulnCheck表示,在某些设置中代码执行有效,但没有一个公开的漏洞利用 能够绕过标准x86服务器上的内存随机化。 研究员Elias Taylor表示,它远不如Log4Shell那么容易。
3:40 所有人仍然说要打补丁。 各国政府没有等待裁决。
政府下线了哪些服务?
3:44 美国国家安全局告诉无法打补丁的组织将PHP系统下线, 英国国家网络安全中心也给出了类似建议。 包括国家数字身份服务在内的荷兰网站, 以及一个巴黎警察网站都下线了。 维基媒体作为预防措施下线了几个系统。 Palo Alto Networks统计了超过2200万个暴露的实例。 一位澳大利亚教授提出了最尖锐的观点。 今天没有下线的网站才是值得担心的。
哪些PHP版本获得了修复?
4:11 PHP 8.2到8.5版本存在修复程序。 对于7.4、8.0和8.1版本, PHP只发布了源代码补丁。 旧版本无法从PHP项目获得任何东西,所以请咨询您的发行版。 变通方案可以降低风险,但PHP表示更新是唯一完整的 修复。这和昨天eMudhra事件的教训一样,
今晚你如何处理PHP2Shell?
4:32 因为修复存在并不意味着正在运行的进程已经包含了它。 在你的堆栈中找到所有的PHP,即使是隐藏在其他软件中的副本。 更新,重启工作进程,并检查10月17日以来的日志。 同日,GitLab发布了一个关键补丁版本,
今天还有什么发布了关键RCE补丁?
4:47 19.5.1。 其正则表达式编译器中的整数溢出 允许未经身份验证的用户在服务器上运行代码, 评分为十分。 GitLab.com已打补丁。 自管理安装需要更新。
为什么Meta被勒令支付250亿美元?
5:01 与此同时,在新墨西哥州,一名法官命令Meta公司支付250亿美元 因剑桥分析公司事件而受到罚款。 陪审团计算出超过4300万次违规,每次最高5000美元, 在法官削减之前总计约2200亿美元。 Meta表示将在上诉中胜诉。 现在是我承诺的辩护。
Chainguard对提前修复的辩护是什么?
5:19 Chainguard的CEO告诉The Register,他在一个星期五晚上自己发现了同样的漏洞, 此前他得知PHP即将发生一些事情,通过一个基本的提示来寻找 严重的漏洞。他说他提前发布是因为当时已经有人受到攻击。 如果你宁愿阅读而不是听我说, 每天早上你的收件箱都会收到免费的diff,在thedailydiff.dev, 链接在下面。所以今天的判决是SHIP IT。
什么获得了SHIP IT的认可?
5:39 今晚发布PHP更新,因为新版本号是唯一完整的 修复。这就是今天的diff。 我是来自Axrisi的Niko。 负责任地合并。
来源
- Today's PHP Security Release, and How We're Strengthening PHP SecurityThe PHP Foundation
- RCE via OOM corruption (GHSA-w8hw-w9fx-j79w)PHP security advisory
- RCE via stale global state (GHSA-6wmf-4rv5-p3rp)PHP security advisory
- Upcoming Critical PHP Security Releasephp.net
- php2shellCalif
- PHP2Shell: AI uncovers critical RCE vulnerabilities affecting 70% of the InternetWiz Research
- Amazon Threat Intelligence identifies PHP2Shell exploitation prior to public disclosure in MadPotAWS Security Blog
- Critical Vulnerabilities in PHP Require Immediate PatchingCISA
- Flaw in PHP computer language leads to shutdown of websites around worldThe Guardian
- What is PHP, and how bad is the computer language flaw causing website shutdowns globally?The Guardian
- PHP2Shell Exploitation Started Days Before PatchesSecurityWeek
- PHP2Shell: Responding to CVE-2026-109618 and CVE-2026-109619Tanium
- There isn't an easy exploit for this PHP vulnerabilityElias Taylor
- PHP blames supply chain security biz Chainguard for putting entire web at riskThe Register
- PHP2Shell: 22M exposed servers at risk as emergency patches releasedTechTarget
- PHP ships emergency patches for critical PHP2Shell flawsBleepingComputer
- GitLab Critical Patch Release: 19.5.1, 19.4.3, 19.3.6, 19.2.9, 19.1.9, 19.0.10, 18.11.13GitLab
- Meta ordered to pay $25 billion penalty in New Mexico Cambridge Analytica caseCNBC
- Tell HN: 2x PHP RCE CVEs with CVSS 10.0 IncomingHacker News



