CVE-2026-111497, dubbed "Node2Shell" (also referred to as "HTTP2Shell" and "Broccoli2Shell"), is a critical buffer overflow (out-of-bounds write) vulnerability in the Google Brotli decoder (c/dec/decode.c). It affects Google Brotli versions 1.0.3 through 1.2.0 on all platforms and is widely embedded in Node.js, Python packages (brotli, brotlicffi), .NET, Bun, Envoy, Istio, ClickHouse, DuckDB, Apache Arrow, PAN-OS, and many other software ecosystems. The vulnerability was reported by OpenAI Codex Security researchers (Khai Tran and Sylvie Mayer) and publicly disclosed on October 22, 2026, with Node.js security releases issued on October 21, 2026. It carries a CVSS v3.1 base score of 9.8 (Critical) and a CVSS v4.0 base score of 9.2 (Critical) (GitHub Advisory, Node.js Advisory).
The root cause is an out-of-bounds write (CWE-787) combined with an unchecked return value (CWE-252) in the Brotli streaming decoder. When the decoder encounters an invalid block-switch in a malformed Brotli-compressed stream, it incorrectly reports the condition as a temporary need for more input rather than a permanent format error. As a result, the streaming decoder continues appending input bytes to an internal eight-byte buffer beyond its bounds, corrupting adjacent decoder state memory. An attacker who can supply crafted Brotli-compressed data to any application that decompresses it (e.g., via node:zlib, HTTP Content-Encoding: br, or any library binding to the vulnerable C decoder) can trigger this condition without authentication or user interaction. The fix, applied in Brotli commits 0ed4268, b418fa8, da98063, and 50a9b70, adds proper rejection of invalid block-switch structures (GitHub Advisory, Node.js Advisory).
Successful exploitation can result in process memory corruption, disclosure of sensitive memory contents, denial of service (crash), or remote code execution on the affected system. Because the vulnerable Brotli C decoder is bundled in Node.js (reachable via zlib.brotliDecompress, createBrotliDecompress, and fetch() with Content-Encoding: br), Python PyPI packages, .NET, Bun, Envoy, Istio, PAN-OS, and dozens of other widely deployed software products, the blast radius is exceptionally broad. Researchers demonstrated RCE on official Node.js 24.x Linux/ARM64 builds, and the vulnerability also affects supply-chain dependencies across Go, Perl, and other ecosystems that bundle the vulnerable C library (GitHub Advisory, Node.js Advisory, Palo Alto Networks).
CVE-2026-111497 is actively exploited in the wild and was added to the CISA Known Exploited Vulnerabilities (KEV) catalog with a federal patch deadline of October 29, 2026 (CISA KEV, Security Affairs). Multiple public proof-of-concept repositories exist on GitHub demonstrating DoS and memory corruption; Imperva and Ellio.tech independently validated RCE on stock Node.js builds (Imperva Blog, Ellio.tech Blog). The EPSS score is approximately 32.8% (with the GitHub Advisory reporting an 87.99th percentile exploitation probability). Honeypots logged active attack attempts, and Sophos reported in-the-wild exploitation (Sophos). No specific threat actor attribution has been publicly confirmed.
Accept-Encoding: br.NBLTYPES (number of block types) field in the metablock header to trigger the decoder's erroneous "need more input" path instead of a format error. Tools like craft_payloads.py from public PoC repositories generate such payloads by bit-flipping NBLTYPES fields or using structured fuzzing.Content-Encoding: br header (e.g., curl -X POST https://target/api/endpoint -H 'Content-Encoding: br' --data-binary @malformed.br), or via any other channel where the application decompresses attacker-controlled Brotli data (WebSocket, file upload, etc.).BROTLI_DECODER_ERROR_FORMAT_BLOCK_SWITCH.Content-Encoding: br containing malformed or unusually short Brotli payloads (< 30 bytes); repeated POST requests to API endpoints with Content-Encoding: br from unexpected source IPs; outbound connections from Node.js/Python/application processes to unknown external IPs following Brotli decompression activity.BROTLI_DECODER_ERROR_FORMAT_BLOCK_SWITCH errors absent on unpatched builds (patched builds emit this error; absence on a system that should be patched may indicate bypass); Node.js crash dumps or core files in application directories; unexpected process exits with signal SIGSEGV or SIGABRT from the application process./tmp; new cron jobs or systemd units created by the application service account; modified Node.js binary or Brotli shared library (libbrotlidec.so) timestamps./bin/sh, bash, curl, wget, python3); unexpected network connections initiated by the application process; elevated memory usage or heap corruption signals in APM telemetry during Brotli decompression operations.github.com/projectdiscovery/nuclei-templates (PR #17522); scanner tools including assetnote/node2shell-scanner, TahuCryptsi/node-brotli-check, and trailofbits/brotli-checker can fingerprint unpatched deployments by probing for the absence of BROTLI_DECODER_ERROR_FORMAT_BLOCK_SWITCH in error responses.Primary remediation: Update the Google Brotli library to version 1.0.10, 1.1.1, or 1.2.1. For specific ecosystems:
brotli to ≥ 1.2.1 and brotlicffi to ≥ 1.2.1.0 (GitHub Advisory).set system setting brotli-encoding disable) or Web UI (Palo Alto Networks).The vulnerability generated exceptional industry attention, being dubbed "Black October" alongside concurrent PHP and GitLab vulnerabilities. OpenAI was credited with discovering the flaw via its Codex Security team and published a dedicated advisory page. Imperva and Ellio.tech independently demonstrated RCE on official Node.js builds, publishing detailed technical write-ups (Imperva Blog, Ellio.tech Blog). Cloudflare deployed emergency WAF rules within days of disclosure. Microsoft issued an out-of-band .NET security update on a Sunday — an unusual move highlighting urgency. Fortinet published an outbreak alert for Node2Shell. SANS ISC and BleepingComputer covered active exploitation, with the latter reporting CISA's KEV addition (BleepingComputer). Security researchers on Mastodon, Bluesky, and X widely discussed the supply-chain implications, noting that the vulnerable Brotli C decoder is embedded in hundreds of software products beyond Node.js. The community coined multiple names for the vulnerability (Node2Shell, HTTP2Shell, Broccoli2Shell) reflecting its cross-ecosystem impact. JFrog Research published "Brotli2Shell" analysis extending the scope beyond Node.js and HTTP stacks (JFrog Research).
주요 리눅스 배포판과 그 릴리스 전반에 걸친 가용성을 수정하세요.
bionic (esm-apps)
nodejs
bionic (esm-infra)
brotli: 1.0.3-1ubuntu1.3+esm1
devel
brotli: 1.2.0-4ubuntu0.1
focal (esm-apps)
nodejs
focal (esm-infra)
brotli: 1.0.7-6ubuntu0.1+esm1
jammy
brotli: 1.0.9-2ubuntu0.1
jammy (esm-apps)
nodejs
noble
brotli: 1.1.0-2ubuntu0.1
OpenShift
openshift/ose-rhel-coreos-8
RHEL 8
:appstream:brotli-0:1.0.6-5.el8_10.src
RHEL 9
:appstream:firefox-0:140.10.0-1.el9_0.src
RHEL 10
brotli-0:1.1.0-6.el10_0.3.src
소스: 이 보고서는 AI를 사용해 생성되었습니다
무료 취약점 평가
9개 보안 영역에서 클라우드 보안 관행을 평가하여 위험 수준을 벤치마킹하고 방어의 허점을 파악하세요.
맞춤형 데모를 받아보세요
"내가 본 최고의 사용자 경험은 클라우드 워크로드에 대한 완전한 가시성을 제공합니다."
"Wiz는 클라우드 환경에서 무슨 일이 일어나고 있는지 볼 수 있는 단일 창을 제공합니다."
"우리는 Wiz가 무언가를 중요한 것으로 식별하면 실제로 중요하다는 것을 알고 있습니다."