OpenAI红队曝Brotli高危RCE漏洞 静默八个月后引发全网升级

AI解压一个文件就沦陷?Brotli漏洞真相与边界 — AI技术投降派

AI技术投降派

上游修复因缺乏安全标签在代码库闲置八个月,表明未抵达终端运行时的底层补丁并不能消除供应链风险。

AI-assisted summary of AI解压一个文件就沦陷?Brotli漏洞真相与边界 — original source. Check the original for full context.

Source published:

Key ideas

  • OpenAI 红队在拆解内部隔离墙时发现了基础压缩库 Brotli 的远程代码执行漏洞 CVE-2026-111497(代号 Node2Shell),CVSS 评分达 9.2 分。 (0:00)
  • 漏洞根因为 C 语言解码器中布尔失败返回值具有“非法输入”与“等待更多输入”双重语义,外层调用方直接丢弃返回值致使 8 字节缓冲区发生越界写入。 (0:00)
  • 修复补丁虽于 2 月底合入主干,但因未打安全标签且未发版静置了 8 个月,导致依赖正式版的 Node.js 等运行时直到 10 月下旬才完成全线更新。 (2:30)
  • 该漏洞触发具有严格前提,仅影响服务端解压不可信数据的场景,网络盛传的“七成网站受威胁”与“四成使用 Brotli 即沦陷”纯属张冠李戴与方向搞反。 (4:45)

Detailed notes

## Background 本视频由“AI技术投降派”于 2026 年 10 月 26 日发布在哔哩哔哩平台。视频简介指出,内容源于此前讨论 OpenAI 断网训练时提及的红队挖掘成果,旨在深入讲透被命名为 Node2Shell 的 Brotli 压缩库高危远程代码执行漏洞(CVE-2026-111497),剖析其技术成因、长达八个月的供应链传导断层,并对网络夸大言论进行辟谣。

## TL;DR 视频深入剖析了评分高达 9.2 的 Brotli 解码器远程代码执行漏洞 CVE-2026-111497(Node2Shell)。该漏洞源于 C 语言布尔返回值双重语义混淆导致的“未检查返回值”经典缺陷,攻击者借此骗过解压状态机引发 8 字节缓冲区越界写入,但其触发前提是服务端主动解压不可信数据。漏洞补丁虽早在 2 月底就合入主干,却因未打安全标签且未发版而在上游静默躺了八个月,导致依赖正式版本的 Node.js、Bun 等下游生态严重滞后。作者同时辟谣了“波及全球七成网站”等张冠李戴的恐慌言论,并借由“心脏滴血”的历史教训警示开源供应链中补丁传导脱节的残酷现实。

## Atmosphere & style 视频整体呈现出一种冷静克制、抽丝剥茧的技术清流质感,叙事节奏紧凑而直击要害。主讲人以犀利透彻的语言解构底层代码缺陷与供应链乱象,既有“函数报告了问题但没人看报告”的黑色幽默,也有对行业公关话术与自媒体恐慌营销的冷峻降温。聆听体验既像是一堂硬核扎实的逆向安全复盘课,又带着对开源供应链脆弱现实的深层叹息与清醒审视。

## Bulletin - [00:00](https://www.bilibili.com/video/BV1MXHg6PEVZ?t=0s) OpenAI 红队在拆解内部隔离墙时发现了基础压缩库 Brotli 的远程代码执行漏洞 CVE-2026-111497(代号 Node2Shell),CVSS 评分达 9.2 分。 - [00:00](https://www.bilibili.com/video/BV1MXHg6PEVZ?t=0s) 漏洞根因为 C 语言解码器中布尔失败返回值具有“非法输入”与“等待更多输入”双重语义,外层调用方直接丢弃返回值致使 8 字节缓冲区发生越界写入。 - [02:30](https://www.bilibili.com/video/BV1MXHg6PEVZ?t=150s) 修复补丁虽于 2 月底合入主干,但因未打安全标签且未发版静置了 8 个月,导致依赖正式版的 Node.js 等运行时直到 10 月下旬才完成全线更新。 - [04:45](https://www.bilibili.com/video/BV1MXHg6PEVZ?t=285s) 该漏洞触发具有严格前提,仅影响服务端解压不可信数据的场景,网络盛传的“七成网站受威胁”与“四成使用 Brotli 即沦陷”纯属张冠李戴与方向搞反。

## Key takeaways - [00:00](https://www.bilibili.com/video/BV1MXHg6PEVZ?t=0s) CVE-2026-111497 是 Brotli 解码环节的高危远程代码执行漏洞,权威评分为 9.2 分,完整利用链代号为 Node2Shell。 - [00:00](https://www.bilibili.com/video/BV1MXHg6PEVZ?t=0s) 漏洞触发具有明确边界:必须是服务端主动解压攻击者可控的输入,裸 Node.js 服务器不会默认解压请求体,目前尚无野外实际利用。 - [00:00](https://www.bilibili.com/video/BV1MXHg6PEVZ?t=0s) 技术根因属于典型的“未检查返回值”缺陷:解码函数检测到伪造的块切换命令并返回 false,但调用方将其误判为需要更多输入而直接忽略,导致内部 8 字节缓冲区被越界写入。 - [02:30](https://www.bilibili.com/video/BV1MXHg6PEVZ?t=150s) 上游修复于 2 月底合入主干却未打安全标签未发版,静置 8 个月才由官方推出 3 个修复版本,凸显了开源供应链协同的脆弱性。 - [02:30](https://www.bilibili.com/video/BV1MXHg6PEVZ?t=150s) 下游生态出现修复分化:跟踪主干的 Envoy 和 Istio 提前修完,而依赖正式发版的 Node.js、Bun 及 Python 生态则被迫推迟到 10 月下旬跟进。 - [02:30](https://www.bilibili.com/video/BV1MXHg6PEVZ?t=150s) 受影响范围横跨多语言运行时、代理网关及操作系统分发包,甚至克隆包含恶意压缩包的代码仓库也存在理论触发风险。 - [02:30](https://www.bilibili.com/video/BV1MXHg6PEVZ?t=150s) 应急处置不仅需要在解码入口拦截不可信 br 数据或在网关配置阻断规则,更新软件后还必须物理重启服务,以确保静态编译的旧代码被彻底替换。 - [04:45](https://www.bilibili.com/video/BV1MXHg6PEVZ?t=285s) 澄清舆论谣言:“全球七成网站受威胁”实为同期 PHP 漏洞数据被误传,而“近四成网站采用 Brotli 危险”则混淆了服务端下发压缩资源与接收解压不可信数据的方向差异。 - [04:45](https://www.bilibili.com/video/BV1MXHg6PEVZ?t=285s) 类比 2014 年 Heartbleed 补丁一周出炉却耗时 9 年仍未完全落地的历史,再次印证了“补丁发布不是终点,传导到最后一台服务器才是”的供应链常态。 - [04:45](https://www.bilibili.com/video/BV1MXHg6PEVZ?t=285s) 该事件源于 OpenAI 内部红队的攻防演练,展现了 AI 安全团队在基础工程库深度挖掘上的实力,但也反映出从漏洞发现到全生态落地的漫长脱节。

## Detailed walkthrough ### [00:00](https://www.bilibili.com/video/BV1MXHg6PEVZ?t=0s) 漏洞本质、经典根因与触发边界

这个被权威评分体系定为 9.2 分(属于最高危档位)的远程代码执行漏洞,编号为 CVE-2026-111497,出在 Brotli 压缩算法的解码环节。安全公司为这条完整的攻击链起了一个代号——Node2Shell。作为全网最基础、最常见的压缩算法之一,Brotli 广泛应用于网页内容、字体、API 传输等场景,而其解码器中却藏着一个多年的隐患。攻击者通过构造一段恶意的压缩数据流,欺骗解压器的内部状态机,使其发生越界内存写入,最终实现任意代码执行。不过,这项漏洞要真正触发具有严格的前提条件:应用程序必须把攻击者可控的恶意数据主动交给 Brotli 进行解压;裸跑的 Node.js 服务器并不会默认自动解压请求体(Request Body),因此网传“任何网络请求都能随意打穿”纯属夸大,并且截至视频发文时,尚未在野外捕获到针对该漏洞的实际利用攻击。

```mermaid flowchart TD accTitle: Brotli 漏洞状态机与越界写入流程 accDescr: 展现恶意数据如何利用布尔返回值混淆骗过状态机并导致 8 字节缓冲区越界写入

subgraph Input["恶意输入构造"] A["声明:只有一组编码参数"] B["偷塞:包含块切换命令"] A --> B end

subgraph Decoder["解码器状态机"] C["解码函数检测到异常"] D["返回布尔假值 false"] E{"调用方语义误判"} F["当作'需要更多输入'处理<br/>直接丢弃返回值"] C --> D --> E --> F end

subgraph Overflow["内存越界"] G["状态机带病继续运行"] H["向仅 8 字节的内部缓冲区持续追加数据"] I["越界写入内存<br/>触发 RCE (Node2Shell)"] G --> H --> I end

Input --> Decoder F --> Overflow ```

该漏洞的技术根因在 C 语言代码库中堪称教科书级别的经典缺陷。在 Brotli 的数据流格式中,原本设计有“块切换命令”,用于在多组不同的编码参数之间灵活切换。攻击者故意在数据头声明自己只拥有一组参数,随后却在数据流里暗中塞入一条切换命令。解码函数在执行时实际上敏锐地发现了这种异常并返回了一个表示失败的值。但问题在于,在 C 语言的具体实现里,这个返回值只是一个布尔值(`false`),存在致命的双重语义混淆——它既代表“输入数据非法”,也可以代表“缓冲区已空,需要等待更多输入”。外层调用方在接到这个假值后,错误地将其按照“等待更多输入”来处理,将函数返回的错误状态直接抛弃。正如视频中所总结的那样:“函数发现了问题,也报告了问题,然后没有任何人看这份报告。” 解压器于是带着错误的内部状态继续运转,不断向一个仅有 8 字节大小的内部缓冲区追加写入数据,越界写入就此发生。这类缺陷在漏洞库中有成熟的分类归属,即典型的“未检查返回值”(Unchecked Return Value)。

- 漏洞编号:CVE-2026-111497,利用链代号 Node2Shell。 - CVSS 权威评分:9.2 分(高危级别)。 - 漏洞根因机制:C 语言布尔返回值双重含义混淆导致状态机失效,引发 8 字节内部缓冲区越界写入。

[02:30](https://www.bilibili.com/video/BV1MXHg6PEVZ?t=150s) 漫长八个月:供应链上游到下游的传导断层与影响面

该漏洞由 OpenAI 的安全团队在进行红队内部测试时挖出,并于当年 2 月通过协调披露流程正式上报。但随后的补丁修复与传导时间线却暴露了现代开源软件供应链的深层断裂。早在 2 月底,上游团队就已经把修复补丁合并到了 Brotli 的代码主干中;然而,上游既没有为这次合并打上任何安全标签(Security Advisory),也没有发布新的正式版本,补丁就在主干里静默躺了长达八个月。这导致了下游生态极其戏剧性的分化:紧跟主干分支拉取代码的项目(如 Envoy 和 Istio)在 10 月上旬就悄然完成了修复,其修复动作甚至比 Brotli 官方正式发版还要早;而依赖正式发版(Release Tag)的运行时系统只能干等,直到 10 月 21 日 Brotli 官方一口气推出三个修复版本后,Node.js 才紧急在三条版本线上全线更新,Bun 和 Python 生态也直到次日才匆匆跟进。“从修复写好到大多数生态真正用上,隔了整整八个月。”这直接印证了安全圈的一句一针见血的辛辣评价:“依赖库里的修复,在你的运行时发布之前,就不算修复。”

```mermaid flowchart LR accTitle: Brotli 补丁在开源供应链中的分发时间线 accDescr: 对比展示主干跟踪项目与依赖正式版本运行时的修复延迟差

subgraph Upstream["上游演进"] U1["2月:OpenAI 提交漏洞"] U2["2月底:补丁合入主干<br/>(无安全标签/未发版)"] U3["10月21日:官方正式发布<br/>三个修复版本"] U1 --> U2 --> U3 end

subgraph TrunkDownstream["主干依赖生态"] T1["Envoy / Istio<br/>(10月上旬悄悄修完)"] end

subgraph ReleaseDownstream["正式版本依赖生态"] R1["Node.js<br/>(10月21日三版本线连发)"] R2["Bun / Python<br/>(10月22日跟进发版)"] R3["Debian / 操作系统库<br/>(漫长滚动更新)"] end

U2 -->|"跟踪主干"| T1 U3 -->|"等待发版 (推迟8个月)"| R1 R1 --> R2 --> R3 ```

漏洞的影响清单拉开来极其庞大: - **运行时环境**:Node.js 多个活跃分支全线受影响并发布更新,Bun 亦在其列。 - **代理服务与网关**:只要开启了 Brotli 解压缩支持的 Envoy、Istio 均须升级。 - **开发与系统工具链**:命令行网络下载工具、各类包含 Brotli 的 Python 压缩包;甚至连克隆一个包含恶意压缩包的代码仓库,理论上都算一条触发利用的攻击路径。 - **操作系统发行版与浏览器**:以 Debian 为例,虽然系统底层的 Brotli C 库修复了,但系统打包分发的 Node.js 软件包在发文时仍未更新,使用命令行工具的用户必须等待系统发行版的安全滚动推送;同时主流浏览器厂商也并未发表公开修复声明。开源软件依赖是一层套着一层的,“修复要一层层落实”绝非官话套话,而是极其骨感的供应链现实。

针对线上生产环境的应急防护,官方指引给出了两条关键处置措施与一条网关策略: 1. 在更新未部署到位前,必须在应用程序的解码入口处切断并拦截所有不可信的 Brotli 压缩数据,其余如 Gzip 等压缩通道则不受影响,可以保留放行。 2. 完成软件版本更新后,必须对服务进行**物理重启或重新部署**。因为 Brotli 这类 C 库通常是以静态编译方式直接打入二进制程序中的,如果不执行重启,内存中的旧代码根本不会替换,打上的补丁也完全无法生效。 3. 在 WAF 及网关层面,运维人员可以直接下发规则拒绝带有 `br`(Brotli)编码的入站请求,部分主流云厂商在披露初期便已上线了此类防护规则。

[04:45](https://www.bilibili.com/video/BV1MXHg6PEVZ?t=285s) 关键认知纠偏与“Heartbleed”的历史警示

面对互联网上针对此漏洞的过度恐慌,视频进行了针对性的辟谣与边界划定。首先,网络上盛传的“全球七成网站面临瘫痪威胁”,纯属中文自媒体把同期曝出的一个 PHP 严重漏洞生态统计数据张冠李戴,硬生生扣在了 Brotli 头上,混淆了事实。其次,关于“近四成网站采用 Brotli 压缩因此全都危险”的论调,更是彻底搞反了数据流动方向。统计数据中“近四成网站支持 Brotli”,指的是 Web 服务器把静态资源使用 Brotli 压缩后发送给客户端浏览器解析渲染;而本次 CVE-2026-111497 漏洞的攻击面完全在解码端,针对的是**服务端主动去解压外部不可信输入**的特定场景,两者有着本质不同。

这种补丁传播脱节的现象在安全史上屡见不鲜。将时间轴拉长回望 2014 年爆发的 OpenSSL“心脏滴血”(Heartbleed)漏洞:当时官方补丁在一周之内就已经光速出炉,但由于供应链断层与运维惰性,漏洞公开两个月后全网仍有超过 30 万台服务器未打补丁,甚至到了整整 9 年之后,公网上依旧能探测到 19 万台裸奔的受威胁主机。安全研究人员感叹,这次 Brotli 事件不过是软件工程史上“分层修复”拖延症的再度重演。讲者对此总结道:“补丁的发布从来不是终点,传导到最后一台服务器才是。”

整场风波回溯到起点,最初是 OpenAI 内部设立的红队为了拆解自家的安全隔离墙、验证防御纵深,却在无意间顺手挖出了底层基础库的这颗陈年暗雷。通过协调披露计划,这次内部测试最终演变成了一场波及整个软件行业的大规模补丁行动。利用 AI 寻找软件漏洞这件事,在外界眼中或许常常被视为一种公关营销噱头,但也完全可能是展示底层工程硬实力的真功夫。然而正如讲者最后所言:“这次的八个月时间线至少说明一件事,发现只是第一步,让修复真正抵达每一台服务器,才是漫长的那部分。”

## Notable quotes > [04:45](https://www.bilibili.com/video/BV1MXHg6PEVZ?t=285s) 补丁的发布从来不是终点,传导到最后一台服务器才是。 — AI技术投降派

> [00:00](https://www.bilibili.com/video/BV1MXHg6PEVZ?t=0s) 函数发现了问题,也报告了问题,然后没有任何人看这份报告。 — AI技术投降派

## Mentioned Brotli, Node2Shell, CVE-2026-111497, OpenAI, Node.js, Bun, Python, Envoy, Istio, Debian, Heartbleed, OpenSSL, Gzip, PHP, AI技术投降派

## Video description 之前讲 OpenAI 断网训练时提过一句:红队拆自家隔离墙,顺手挖出了 Brotli 压缩库的远程代码执行漏洞。当时一句话带过,今天把它讲透。

这是什么漏洞:CVE-2026-111497,出在解码环节。攻击者构造恶意压缩数据,骗过解压器状态机,越界写入内存,最终执行任意代码,安全公司给它起了代号 Node2Shell。权威评分 9.2,最高那一档。但要说清前提:你的程序得把攻击者可控的数据交给 Brotli 解压,裸的 Node.js 服务器不会自动解压压缩请求体,&quot;任何请求都能打穿&quot;是夸大。截至发文没有野外利用。

根因很经典:恶意数据声明只有一组参数却偷塞切换命令,解码函数发现了、也返回了失败值——但这个布尔假值既表示&quot;非法&quot;也表示&quot;需要更多输入&quot;,调用方按后者处理,把返回值直接扔掉。一句话总结:函数发现了问题,也报告了问题,然后没有任何人看这份报告。

传导链更值得看:修复代码二月底就合进上游主干,没打安全标签没发版,静静躺了八个月。跟主干的 Envoy 和 Istio 十月上旬先修完,依赖正式发版的 Node.js 等到 10 月 21 日三线齐发,Bun 和 Python 第二天跟上。安全圈评论说透了:依赖库里的修复,在你的运行时发布之前,就不算修复。

照例辟两个谣:&quot;全球七成网站面临威胁&quot;是同期 PHP 漏洞的数字,跟 Brotli 无关;&quot;近四成网站用 Brotli 所以危险&quot;方向反了——那四成是压缩内容发给浏览器的统计,这次漏洞打的是服务端解压不可信数据的场景。

把时间轴拉长:Heartbleed 补丁一周就有,传导拖了九年。补丁的发布从来不是终点,传导到最后一台服务器才是。

披露页:patchtheplanet.org/brotli

[Source](https://www.bilibili.com/video/BV1MXHg6PEVZ)

中文简报

OpenAI红队曝Brotli高危RCE漏洞 静默八个月后引发全网升级 上游修复因缺乏安全标签在代码库闲置八个月,表明未抵达终端运行时的底层补丁并不能消除供应链风险。 视频深入剖析了评分高达 9.2 的 Brotli 解码器远程代码执行漏洞 CVE-2026-111497(Node2Shell)。该漏洞源于 C 语言布尔返回值双重语义混淆导致的“未检查返回值”经典缺陷,攻击者借此骗过解压状态机引发 8 字节缓冲区越界写入,但其触发前提是服务端主动解压不可信数据。漏洞补丁虽早在 2 月底就合入主干,却因未打安全标签且未发版而在上游静默躺了八个月,导致依赖正式版本的 Node.js、Bun 等下游生态严重滞后。作者同时辟谣了“波及全球七成网站”等张冠李戴的恐慌言论,并借由“心脏滴血”的历史教训警示开源供应链中补丁传导脱节的残酷现实。 OpenAI 红队在拆解内部隔离墙时发现了基础压缩库 Brotli 的远程代码执行漏洞 CVE-2026-111497(代号 Node2Shell),CVSS 评分达 9.2 分。 (0:00) 漏洞根因为 C 语言解码器中布尔失败返回值具有“非法输入”与“等待更多输入”双重语义,外层调用方直接丢弃返回值致使 8 字节缓冲区发生越界写入。 (0:00) 修复补丁虽于 2 月底合入主干,但因未打安全标签且未发版静置了 8 个月,导致依赖正式版的 Node.js 等运行时直到 10 月下旬才完成全线更新。 (2:30) 该漏洞触发具有严格前提,仅影响服务端解压不可信数据的场景,网络盛传的“七成网站受威胁”与“四成使用 Brotli 即沦陷”纯属张冠李戴与方向搞反。 (4:45)

Reading summary

Brotli 压缩组件的远程代码执行漏洞 CVE-2026-111497 源于 C 语言布尔返回值混淆导致的缓冲区越界写入,评分为 9.2 分;但其实际触发需应用程序主动解压恶意数据,网传“通杀全网网站”纯属夸大。该漏洞补丁在上游主干静默停滞八个月才正式发版,再次暴露出开源软件供应链自上而下传导断层的系统性困境。 技术根因与严格的触发边界 (0:00) 该漏洞代号为 Node2Shell,CVSS 评分为 9.2 分,核心缺陷属于典型的“未检查返回值”。在 Brotli 数据流设计中存在用于切换编码参数的块切换命令,攻击者在数据头声明仅有一组参数,却在数据流中暗塞切换命令。解码函数虽检测到异常并返回布尔值 false,但该返回值在 C 语言实现中兼具“输入非法”与“缓冲区已空需等待输入”的双重语义,导致外层调用方直接丢弃错误状态,驱动状态机带病运转,最终向仅 8 字节的内部缓冲区持续写入数据引发越界。 尽管破坏力达到远程代码执行级别,其在现实中的触发条件极为严苛。漏洞生效的前提是服务端主动将外部不可信输入交给 Brotli 执行解压。裸跑的 Node.js 服务器默认不会自动解压请求体,且截至发文时,安全社区尚未在野外捕获到实际利用攻击,并非任何网络请求都能随意打穿系统。 八个月传导断层与运维防护措施 (2:30) 该漏洞由 OpenAI 红队于当年 2 月通过协调披露流程上报,上游团队随后在 2 月底将修复补丁合入 Brotli 代码主干,但未附带安全标签亦未发布正式版本。这导致补丁在主干静默滞留长达八个月。下游生态随之严重分化:直接跟踪主干的 Envoy 和 Istio 于 10 月上旬完成修复;而依赖正式发版标签的 Node.js、Bun 与 Python 直到 10 月 21 日官方推出三个修复版本后才连发补丁跟进。在系统层级,即使底层 C 库修复,Debian 发行版打包的 Node.js 软件包在发文时仍未更新。 针对生产环境,官方与运维指南提出了明确的防御与生效动作:其一,在补丁完成部署前,应用程序需在解码入口直接拦截不可信的 Brotli 压缩数据,其余如 Gzip 格式可正常放行,网关及 WAF 亦可直接拒发带有 br 编码的请求;其二,由于 Brotli 往往以静态编译形式打入二进制程序,完成版本升级后必须对相关服务执行物理重启或重新部署,否则内存中的旧代码无法被替换。 舆论认知纠偏与历史漏洞镜鉴 (4:45) 针对外界对该漏洞的恐慌,视频进行了针对性澄清。自媒体广泛传播的“全球七成网站面临瘫痪”实为挪用同期某 PHP 漏洞的数据;而“近四成网站采用 Brotli 因而全部危险”的说法则混淆了数据流向——四成网站指的是服务端将静态资源压缩后发给浏览器端渲染,属于编码输出,而本次漏洞仅发生在服务端主动接收并解压外部不可信数据的反向场景中。 这种供应链修补拖延在历史上早有先例。2014 年 OpenSSL“心脏滴血”(Heartbleed)漏洞在官方一周内光速修复的情况下,两月后全网仍有逾 30 万台服务器未修,九年后依然残留 19 万台裸奔主机。讲者指出,这次事件再次证明依赖库中的修复若未随运行时发布便算不得真正修复,层层分发的供应链现实远比补丁编写本身漫长。 Brotli 漏洞虽然展示了利用 AI 红队测试挖掘底层陈年漏洞的工程实效,但补丁从代码主干到最终落地历经八个月的现实表明,开源生态各层级之间的信息与发版脱节,仍是制约底层软件安全落地的根本瓶颈。

Source quotes

[4:45] AI技术投降派: 补丁的发布从来不是终点,传导到最后一台服务器才是。 [0:00] AI技术投降派: 函数发现了问题,也报告了问题,然后没有任何人看这份报告。

Original transcript

[0:00] 之前我们讲OpenAI断网训练的时候提过一句红队拆自家隔离墙,顺手挖出了Brotley压缩库的远程代码执行漏洞。当时一句话带过,今天把他讲透。这是全网最常见的压缩算法之一。网页、字体、接口、传输都在用它。它的解码器里藏着一个多年的坑一段恶意的压缩数据一路解压下去可以在你的服务器上执行代码先说它是什么漏洞编号CVE2026年111497,出在解码环节。攻击者构造一段恶意的压缩数据,骗过解压器的状态机,让它越界写入内存。最终执行任意代码安全公司给这条利用链起了个代号执意过来是从节点到外壳评分是权威体系的9.2分最高那一档但要说清楚前提你的程序得把攻击者可控的数据交给Broadly解压裸的Node.js服务器不会自动解压压缩请求体任何请求都能打穿的说法是夸大截至发文也没有发现野外利用根音值得单独讲因为它太经典了在Broadly的数据流里有个快切换命令正常用来在多组编码参数之间切换恶意数据会声明自己只有一组参数,却偷偷塞进一条切换命令。解码函数其实发现了不对劲,返回了一个表示失败的值。问题在于这个返回值在C语言里是个布尔值。同一个假值有双重含义,既表示数据非法,也表示需要更多输入调用方看到甲值按等更多输入处理把返回直直接扔掉了于是解压器带着错误状态继续跑,往一个只有八字节的内部缓冲区不停追加数据,越界写入就这么发生了。一句总结韩树发现了问题也报告了问题然后没有任何人看这份报告这类缺陷在漏洞库里有个正式分类叫未检查返回职C语言的老毛病再看发现和传导发现方式OpenAI的安全团队今年二月报告走的是他们牵头的协调披露计划时间线很有意思修复代码二月底就合并进了Broadly的主干但上游没打安全标签也没发正式版本就那么静静躺着躺在主干里的修复对跟踪主干的下游是现成的旁边的Invoy和Estio十月上旬就悄悄修完了比上游发版还早但依赖正式发版的下游要等到10月21号那天上游一口气发了三个修复版本NodeJS三条版本线全线更新第二天BUN和Python的包跟上从修复鞋好到大多数生态真正用上,隔了整整八个月。安全圈有句评论把这事说透了,依赖库里的修复在你的运行时发布之前就不算修复。受影响名单拉出来一长串运行时这边Note.js全线要更棒也中招代理这边,启用Brotly解压的Envoy和Eastio要升级。工具链这边,命令行下载工具和Python的压缩库都在名单上,连克隆恶意代码仓库也算一条路径,而且传导还没走完。发行版这边,Debian的系统库修了,但它的Node.js报道发文时还没更新,用命令行工具的人要等系统库滚动。浏览器厂商没有公开声明修复药一层层落实,这句话不是套话,是供应链的现实。临时防护怎么做官方指南给了两条第一,更新部署之前,先在解码入口拦掉不可信的Broadly数据,其余压缩通道比如GZip可以保留。第二,更新之后必须重启或者重新部署服务,因为这类库往往静态编译进程序,不打重启,补丁不生效。另外网关层可以直接拒绝带Brotley编码的入战请求,不少云厂商已经上线了这类规则。赵立P两个谣,第一个,全球七成网站面临威胁,那个七成是同期PHP漏洞的生态数字跟Brotley无关。中文报道把两件事捆在一起讲,很容易计算。 [5:00] 第二个,近四成网站用Broadly,所以近四成网站危险,这四成说的是网站用Broadly压缩内容发给浏览器,方向反了。这次的漏洞打的是服务端解压不可信数据的场景,两码式。把时间轴拉长看,这一幕发生过。把时钟拨回2014年,OpenSSL的心跳漏洞,补丁一周内就有了。两个月后还有30万台服务器没修9年之后仍有19万台暴露在公网上安全研究者说这次的Brotly事件就是分层修复的重演补丁的发布从来不是终点传导到最后一台服务器才是回到故事的开头回头看OpenAI建红队本来是拆自家隔离墙的拆墙拆出来的漏洞经过协调披露变成了全行业的补丁用AI找漏洞这件事可以是营销也可以是真功夫这次的八个月时间线至少说明一件事发现只是第一步让修复真正抵达每一台服务器才是漫长的那部分这里是排报手册我们下期见