HackerNews

HackerNews
PHP 五天内发布第二个 Windows 安全更新,修复 Brotli 代码执行漏洞

PHP 五天内发布第二个 Windows 安全更新,修复 Brotli 代码执行漏洞

给文章评分:

PHP 重新构建了 PHP 8.2 至 8.5 的官方 Windows 安装包,以修复 CVE-2026-111497——这些安装包所包含的 Brotli 压缩库中的一个缺陷。该缺陷可让攻击者破坏内存并可能执行代码。

PHP 表示,当 cURL 扩展自动解压 HTTP 响应时,可通过该扩展触及此缺陷。cURL 默认关闭该功能,但应用和 HTTP 客户端库可以将其开启。

重新构建的安装包编号为 8.5.12-1、8.4.27-1、8.3.36-1 和 8.2.35-1,距 10 月 21 日修复两个 PHP2Shell 远程代码执行漏洞的版本发布仅五天。它们使用相同的 PHP 源代码,因此那些修复仍然有效,并且现在包含 Brotli 1.2.1——即修复版本。

PHP 为每个安装包发布软件物料清单(SBOM),即其中包含组件的列表。对于上周四个版本的所有 x64 Non Thread Safe 构建,这些列表显示为 Brotli 1.2.0,即受影响版本之一。

PHP 建议 Windows 用户从其下载页面安装新的构建版本。由于 PHP 版本本身未变,php -v 在更新前后显示相同的版本号。文件名中的 -1(如 php-8.5.12-1-nts-Win32-vs17-x64.zip)以及下载页面上列出的 SHA-256 哈希可用于识别新构建。

自动解压意味着 cURL 向服务器请求压缩响应并将其解包。在 PHP 代码中,CURLOPT_ENCODING 选项将其开启,空值表示接受 cURL 支持的所有格式。

据其 7.16.1 版本和 8.3.1 版本中的代码,PHP HTTP 客户端库 Guzzle 对其通过 cURL 发送的请求默认设置该空值。基于该代码和 PHP 自身的描述,保留 Guzzle 默认设置的应用在上周的 Windows 构建上满足触及该缺陷的条件。The Hacker News 尚未在 Windows 系统上对此进行测试。

攻击将表现为来自 PHP 应用所联系服务器的一个特制压缩响应。

Google 在 CVSS 4.0 量表上将该缺陷评为 10 分中的 9.2 分,即严重。Red Hat 在 CVSS 3.1 量表上将其评为 8.1,即重要。

Imperva 研究人员在一个官方 Node.js 构建上通过该缺陷运行了代码,他们尝试了多次才成功。PHP 的公告未提及任何攻击。CISA 于 10 月 23 日的评估记录显示无利用情况,且截至当日更新,该缺陷未列入其已知被利用漏洞目录。

OpenAI 的研究人员发现了该缺陷。Google 在 10 月 21 日首次披露时于 Brotli 1.2.1、1.1.1 和 1.0.10 中修复了它。Node.js、Bun 及其他自带 Brotli 副本的软件也已发布修复。

PHP 的公告没有为尚无法更新的系统提供变通方法。OpenAI 建议在安装更新之前关闭 HTTP 客户端中的自动 Brotli 解压,并警告说仅从 Accept-Encoding 头中移除 br(Brotli 的名称)"并不能阻止服务器发送它"。

在 PHP 代码中,遵循该建议意味着不设置 CURLOPT_ENCODING,因为 cURL 在没有该选项时不会解压响应。在 Guzzle 中,这意味着将 decode_content 请求选项设置为 false,这会停止所有自动解码,因此 gzip 响应也会以压缩形式到达。


消息来源:thehackernews.com;
本文由 HackerNews.cc 翻译整理,封面来源于网络;
转载请注明“转自 HackerNews.cc”并附上原文
分享到:
hackernews

hackernews

该作者暂无简介