News

2026-10-27

繼 PHP2Shell 之後,Node.js 爆 HTTP2Shell 漏洞:Brotli 影響範圍、修補版本與 CDN 防護

繼 PHP2Shell 之後,Node.js 的 Brotli 漏洞 Node2Shell 擴大為 HTTP2Shell,Python、Bun、Envoy 等全數受影響。本文整理 CVE-2026-111497 影響範圍、修補版本、目前攻擊狀況,以及 CDN 與 WAF 能做到的防護。

繼 PHP2Shell 之後,Node.js 爆 HTTP2Shell 漏洞:Brotli 影響範圍、修補版本與 CDN 防護
background image
目錄

➤前情提要:10 月的 PHP2Shell 風暴
 ➤HTTP2Shell 是什麼:Brotli 解碼器的越界寫入漏洞
 ➤從 Node2Shell 到 HTTP2Shell:為什麼改名
 ➤HTTP2Shell 影響範圍與修補版本
 ➤HTTP2Shell 容易被忽略的四個重點
 ➤HTTP2Shell 目前受影響狀況:已開始掃描,PHP2Shell 前例不容輕忽
 ➤CDN 與 WAF 可以怎麼防護 HTTP2Shell
 ➤HTTP2Shell 應急處理步驟
 ➤HTTP2Shell 常見問題
 ➤結語:2Shell 系列漏洞接連爆發,修補空窗期越來越短

前情提要:10 月的 PHP2Shell 風暴

10 月資安界最先引爆的是 PHP2Shell:PHP 的兩個重大漏洞(CVE-2026-109618、CVE-2026-109619)讓攻擊者不用登入,就能在網站伺服器上遠端執行程式碼。漏洞細節在修補推出前就已外流,公開揭露前四天就出現攻擊嘗試,美國 CISA、歐盟 ENISA 也接連發布緊急示警。


PHP2Shell 已造成的實際衝擊

PHP2Shell 的衝擊並不只停留在警告。修補程式在日本時間 10 月 21 日晚間公布後,日本各地掀起緊急維護潮,政府、金融機構、零售業、交通運輸與汽車產業都陸續暫停部分網站或線上服務,連日本首相高市早苗的個人官網都一度關閉,日本氣象廳網站也在凌晨進行緊急系統維護。超市因 App 無法使用而暫停會員集點,一般民眾的購物、支付、交通與娛樂都受到波及。

更嚴重的是,有企業直接因此結束營運。兩款 2011 年上線、營運超過十年的日本遊戲,因為伺服器與 PHP 都跑在老舊環境上,無法安全修補,選擇直接停服:旅遊遊戲《World Quest》在修補發布約 21 分鐘後就宣布當天停止服務;《僕の魔界を救って!》則在緊急維護約兩小時後宣布結束營運,營運方表示無法在讓玩家資料暴露於風險的情況下繼續經營。原因在於 PHP 官方修補只涵蓋 8.2 到 8.5 版,更舊的版本已不再提供官方更新。

影響也不只在日本。南韓科學技術資訊通信部將民間網路危機警戒等級提升至「注意」;台灣數位發展部資安署則在收到修補程式後一小時內發布資安警訊,提醒政府機關與企業儘速更新。

PHP2Shell 的修補潮還沒結束,另一個名字裡帶著「2Shell」的漏洞又接著登場。這次的主角起初看起來只是 Node.js 的問題,追查下去才發現,源頭是幾乎所有 HTTP 服務都會用到的壓縮技術 Brotli。

完整的 10 月資安事件整理,可參考《2026年10月資安事件整理》。


HTTP2Shell 是什麼:Brotli 解碼器的越界寫入漏洞

HTTP2Shell(CVE-2026-111497)是 Google 開發的壓縮程式庫 Brotli 解碼器中的記憶體越界寫入漏洞,影響 Brotli 1.0.3 到 1.2.0 版。只要程式會解壓縮 Brotli 資料,攻擊者就可能送出特製的壓縮資料,讓服務當機、讀取記憶體內容,甚至遠端執行程式碼。

Brotli 是現代網站常用的壓縮技術,HTTP 傳輸時以 Content-Encoding: br 標示。許多 HTTP 伺服器與用戶端會自動解碼 Brotli 內容,這也是這個漏洞影響範圍如此大的原因:就算程式碼裡從來沒有引用 Brotli,只要使用的執行環境或套件內建了有問題的解碼器,就可能受到影響。

項目內容
CVE 編號CVE-2026-111497
其他名稱HTTP2Shell、Node2Shell、Python2Shell、Broccoli2Shell
嚴重程度CVSS 4.0 評分 9.2,重大(Critical)
漏洞類型越界寫入(CWE-787),起因是未檢查回傳值(CWE-252)
問題位置Brotli C 語言解碼器 c/dec/decode.c
受影響版本Brotli 1.0.3 至 1.2.0
修補版本Brotli 1.0.10、1.1.1、1.2.1
攻擊條件不需要帳號,送出特製的 Brotli 壓縮資料即可觸發

值得注意的是,這個問題從 2018 年 3 月的 Brotli 1.0.3 就已存在。修正程式碼早在 2026 年 2 月 27 日就併入 Google 的公開程式庫,但當時沒有發布新版本,也沒有資安公告,直到 10 月 Node.js 推出修補後才被外界注意。


從 Node2Shell 到 HTTP2Shell:為什麼改名

Node2Shell、Python2Shell、HTTP2Shell、Broccoli2Shell 都是同一個漏洞 CVE-2026-111497,不是新的漏洞。名字一路改變,反映的是外界對影響範圍的認知不斷擴大:


一、Node2Shell。Node.js 最先推出修補,研究人員以 Node.js 命名。

二、Python2Shell。研究人員證實 PyPI 上的 Brotli 與 brotlicffi 套件也受影響。

三、HTTP2Shell。10 月 23 日深夜,資安情報團隊 Aikido 指出漏洞影響範圍延伸到 Python 與其他語言,將名稱升級為 HTTP2Shell,意思是任何透過 HTTP 解碼 Brotli 的系統都可能受影響;Bun 官方在 10 月 24 日也採用這個名稱。

四、Broccoli2Shell。Wiz Research 在 10 月 25 日的文章中使用的名稱。


要注意的是,Node.js 官方公告、CVE 紀錄與 Brotli 的版本說明都沒有使用這些暱稱,查詢修補資訊時,以 CVE-2026-111497 搜尋最準確。


HTTP2Shell 影響範圍與修補版本

受影響的不只是 Node.js,凡是內建有問題 Brotli 解碼器的執行環境、語言套件、代理伺服器與系統函式庫都在範圍內。以下為截至 10 月 27 日的主要修補版本:

類別項目修補版本注意事項
執行環境Node.js22.23.4/24.22.1/26.12.1Node.js 20 及更早版本已停止支援,沒有修補;容器映像要重建
執行環境Bun1.4.4用 bun build --compile 打包的程式要重新編譯
PythonBrotli(PyPI)1.2.1安裝後 requests、urllib3、httpx、aiohttp 解碼 Brotli 時會用到;要重新產生 lockfile
Pythonbrotlicffi1.2.1.0同上
代理伺服器Envoy1.40.0/1.39.3/1.38.6/1.37.8有啟用 Brotli 解壓縮者務必更新
服務網格Istio1.31.2/1.30.6/1.29.9使用 Envoy 的 Brotli 程式庫
原生程式庫Google Brotli(libbrotli)1.0.10/1.1.1/1.2.1所有其他版本的源頭;靜態連結的 curl 等工具要重新編譯
Linux 發行版Debian、Alpine 等依發行版公告Debian 回補修正但保留舊版號,以發行版公告為準
其他語言Ruby brotli gem、PHP brotli 擴充0.9.1、0.21.1其他語言的 Brotli 套件也陸續推出修補

微軟也已針對 .NET、Visual Studio、PowerShell 等產品展開修補,Chromium 同樣已更新。


受影響清單只會越來越長

Brotli 被大量軟體直接內建,很多產品的使用者根本不知道自己用了 Brotli。截至 10 月 25 日,執行環境、語言套件與代理伺服器大多已修補,但 DuckDB、ClickHouse、Apache Arrow 等資料處理工具,以及 7-Zip 分支、MuPDF 1.27.x、EDK II 韌體、woff2 字型工具等檔案解析軟體,仍有部分尚未修補。

這份清單預期會繼續變長。企業不能只看新聞列出的產品,應主動盤點內部所有可能內建 Brotli 的軟體,並持續追蹤各原廠公告。


HTTP2Shell 容易被忽略的四個重點

網路上的討論多半停在「快更新 Node.js」,但以下四點才是企業最容易漏掉的地方。


一、掃描工具可能兩頭誤判

許多產品是把 Brotli 直接打包在程式裡,依賴清單上看不到,掃描工具就會漏抓。例如內建 Brotli 的 .NET 服務或 Parquet 資料處理程式,掃描結果可能顯示正常,實際上卻有漏洞。反過來,Debian、Ubuntu 等發行版是把修正回補到原版號,已修補的套件可能因為版本號沒變而被誤判為有漏洞。Aikido 也指出,截至 10 月 23 日,pip-audit、Dependabot、Safety 都還沒標示出有問題的 Python 套件。


二、攻擊可能從兩個方向進來

第一個方向是攻擊者直接對伺服器送出 Brotli 壓縮的請求內容,例如 Express 5、body-parser 2、Envoy 與 Istio 都會解碼這類請求。第二個方向是反過來:你的程式主動連到攻擊者控制的網站,對方回傳惡意的 Brotli 回應,Node.js 的 fetch() 和安裝了 Brotli 套件的 Python HTTP 用戶端都會自動解碼。第二種情境常被忽略,例如爬蟲、Webhook、第三方 API 串接都屬於這一類。


三、程式碼沒用 Brotli,也可能中招

只要使用的執行環境或套件內建了有問題的解碼器,就算自己的程式碼從來沒有引用 Brotli,仍可能受到影響。檢查時要看的是整個執行環境,而不只是專案的依賴清單。


四、更新後要重建才算完成

更新套件之後,容器映像要重建、lockfile 要重新產生、靜態連結 Brotli 的程式要重新編譯。只改設定檔、沒有重新部署,執行中的服務仍然是舊版本。


HTTP2Shell 目前受影響狀況:已開始掃描,PHP2Shell 前例不容輕忽

截至 10 月 27 日,還沒有企業公開證實因 HTTP2Shell 遭到入侵,但攻擊者的掃描已經開始。對照同月的 PHP2Shell,企業不需要等到真的被駭,光是緊急停機修補、甚至因舊系統無法修補而被迫結束營運,就已經造成實際損失,HTTP2Shell 絕對不能輕忽。

面向目前狀況
遭入侵企業尚無企業或資安機構公開證實
CISA 已遭利用漏洞清單截至 10 月 24 日未列入;CISA 10 月 23 日的評估為「尚無利用、無法自動化、技術影響為完全」
攻擊程式Imperva 在實驗室中成功於 Node.js 24.22.0(arm64)執行程式碼;資安業者 ELLIO 在四個 x86-64 目標上重現成功。GitHub 上公開的攻擊程式則只對刻意削弱過的版本有效
實際攻擊ELLIO 表示其感測器已記錄到攻擊流量,但目前為單一業者的觀察,尚未獲其他機構證實
掃描活動已有自稱 node2shell-check 的工具在網路上探測哪些主機會解碼 Brotli;同一來源也曾掃描 PHP2Shell、Palo Alto、FortiOS 等漏洞

資安圈對嚴重程度也有不同看法:有研究人員認為這個漏洞實際上只能造成服務中斷(DoS),Red Hat 也表示目前沒有可靠的公開攻擊程式能穩定執行程式碼;但 Imperva 與 ELLIO 的實驗結果顯示,遠端執行程式碼是可行的。


恐慌中的雜訊:小心假工具與詐騙

每次重大漏洞爆發,都會伴隨大量趁機而來的雜訊。這次已出現打著 HTTP2Shell、Node2Shell 名號的「免費掃描工具」與攻擊程式儲存庫,有些可能本身就是惡意程式;甚至還有人推出名為 $HTTP2SHELL 的加密貨幣代幣,與漏洞修補毫無關係。企業請以 Node.js、Python、Google Brotli 等官方公告與可信任的資安業者為準,不要下載來路不明的檢測工具。

從 PHP2Shell 的經驗來看,從「實驗室可行」到「大規模緊急應變」的距離往往只有幾天,而跑在老舊環境、無法升級的系統,最後可能只剩停止服務一條路。HTTP2Shell 也有相同處境:Node.js 20 及更早版本已停止支援、沒有修補可用。目前雖然還沒有確認的受害案例,但掃描已經開始,企業應把握這段空窗期完成修補,並及早汰換已停止支援的版本。


CDN 與 WAF 可以怎麼防護 HTTP2Shell

CDN 與 WAF 能擋住「從外部送進來」的惡意 Brotli 請求,替修補爭取時間,但無法取代更新,也擋不到程式主動對外連線時收到的惡意回應。


CDN 與 WAF 做得到的事

過濾 Brotli 壓縮的請求內容:攻擊者對伺服器送出的 Brotli 請求,會先經過網站前端的 CDN 與 WAF。大多數網站並不需要接收訪客以 Brotli 壓縮的請求內容,可以設定規則,阻擋或檢查帶有 Content-Encoding: br 的請求,避免惡意資料直接送到後端的 Node.js、Envoy 等服務。

爭取修補空窗期:修補 Node.js、Python 與各種內建 Brotli 的元件需要時間,尤其是還沒推出修補的產品。在前端先擋住攻擊路徑,可以降低修補完成前被攻擊的風險。

隱藏後端架構:網站透過 CDN 對外服務時,攻擊者看到的是 CDN 節點,不容易直接探測後端用了哪些元件與版本,也能降低被掃描工具鎖定的機會。


CDN 與 WAF 做不到的事

擋不到對外連線收到的惡意回應:當你的程式主動連到外部網站(例如爬蟲、Webhook、第三方 API),對方回傳的惡意 Brotli 回應不會經過網站前端的 WAF,這一類只能靠更新套件或暫時停用 Brotli 解碼來處理。

無法取代修補:前端防護是爭取時間的手段,最終仍要完成所有元件的更新與重新部署。


選擇 CDN 服務商時也要確認

CDN 與反向代理本身也會處理 Brotli 壓縮,Envoy、Istio 都在受影響名單中。企業可以向使用中的 CDN 服務商確認,對方的節點是否已完成 HTTP2Shell 的檢查與修補。


HTTP2Shell 應急處理步驟

一、盤點。列出所有使用 Node.js、Bun、Python、Envoy、Istio 的服務,以及可能內建 Brotli 的資料庫、資料處理與檔案解析工具。

二、確認版本。Node.js 是否為 22.23.4、24.22.1、26.12.1 以上;Python 的 Brotli 是否為 1.2.1 以上、brotlicffi 是否為 1.2.1.0 以上;系統的 libbrotli 以發行版安全公告為準。不要只相信單一掃描工具的結果。

三、更新並重新部署。更新後重建容器映像、重新產生 lockfile、重新編譯靜態連結的程式,並確認執行中的服務已換成新版。

四、處理已停止支援的版本。使用 Node.js 20 及更早版本的服務已無修補可用,應盡快規劃升級。

五、前端暫時防護。修補完成前,可透過 CDN 或 WAF 阻擋不必要的 Brotli 壓縮請求。

六、暫時停用 Brotli 解碼。無法立即更新、且對外連線的程式,可暫時移除 Python 的 Brotli 套件或停用相關解碼功能。但要注意,伺服器仍可能回傳 Brotli 內容,不保證會自動改用 gzip。

七、持續追蹤。受影響清單仍在增加,定期檢查各原廠公告與 CVE-2026-111497 的最新資訊。


HTTP2Shell 常見問題

HTTP2Shell 和 Node2Shell 是不同的漏洞嗎?▾不是。HTTP2Shell、Node2Shell、Python2Shell、Broccoli2Shell 都是同一個漏洞 CVE-2026-111497,只是隨著影響範圍擴大,外界使用的名稱不同。查詢修補資訊時,建議直接以 CVE 編號搜尋。
我的程式沒有用到 Brotli,也需要更新嗎?▾需要確認。Node.js、Bun 等執行環境本身就內建 Brotli 解碼器,Python 只要環境中安裝了 Brotli 套件,常見的 HTTP 請求函式庫就會自動使用。檢查時要看整個執行環境,而不只是自己的程式碼。
掃描工具說沒問題,就代表安全嗎?▾不一定。許多軟體把 Brotli 直接打包在程式裡,掃描工具可能漏抓;部分 Python 套件的漏洞資料庫在初期也尚未更新。建議同時核對各元件的實際版本與原廠公告。
HTTP2Shell 已經被用來攻擊了嗎?▾截至 10 月 27 日,尚無企業公開證實遭入侵,CISA 也未將其列入已遭利用漏洞清單;但已有資安業者觀察到掃描與攻擊流量。同月的 PHP2Shell 已讓日本大量網站緊急停機,甚至有遊戲因舊系統無法修補而結束營運,建議以「即將被大規模利用」的標準盡快修補。
用了 CDN 就不用修補了嗎?▾不行。CDN 與 WAF 可以擋下從外部送進來的惡意 Brotli 請求,爭取修補時間,但擋不到程式對外連線時收到的惡意回應,最終仍要完成所有元件的更新。

結語:2Shell 系列漏洞接連爆發,修補空窗期越來越短

從 PHP2Shell 到 HTTP2Shell,10 月接連出現影響範圍極廣的遠端執行漏洞。這次的 Brotli 漏洞更提醒企業:風險不只來自自己的程式碼,也藏在每一個執行環境與套件裡,而且修補清單還在持續變長。

面對修補需要時間、攻擊卻不會等待的現實,企業除了加快盤點與更新,也需要在網站前端建立第一道防線。SkyCloud 騰雲運算是台灣唯一自主研發的 CDN 原廠,SkyEdge CDN 與 SkyWAF 可在網站前端過濾可疑請求,協助企業在修補完成前降低風險。想了解如何針對 HTTP2Shell 加強防護,歡迎聯繫我們的技術團隊。



資料來源:
✓Debian Security Tracker:CVE-2026-111497(OSV)
✓SecurityWeek:Node2Shell: Brotli Flaw Triggers Patching Across Microsoft, Node.js, Python Packages
✓Phoenix Security:HTTP2Shell / Node2Shell (CVE-2026-111497)
✓Phoenix Security:HTTP2Shell Expansion
✓ELLIO:Node2Shell RCE on stock Node.js builds
✓Tanium:HTTP2Shell: Find and Fix Vulnerable Brotli Copies
✓Strobes:HTTP2Shell: The Brotli RCE Hitting Node.js, Python and More
✓Axonius:Node2Shell / HTTP2Shell (CVE-2026-111497)
✓Brandefense:Node2Shell: Fixed Node.js Versions and Check
✓中央社:PHP爆重大資安漏洞 日本政府、銀行、企業網站大規模停擺
✓動區動趨:真有遊戲因 PHP 漏洞關門了,兩款日本 15 年老遊戲結束營運
✓4Gamers:《World Quest》因 PHP 重大漏洞即日停止營運
✓Inven Global:Critical PHP Vulnerability Sparks Aftershocks in Japanese Game Industry
✓iThome:資安署因應 PHP 漏洞發布警訊

上一篇:GoDaddy SSL 憑證撤銷事件整理:40 萬張憑證失效原因、影響與更換步驟

SkyCloud 提供免費測試服務

滿意後再正式啟用!

check-black 親身體驗高速、安全的穩定服務

check-black先測試再決定,零風險、零壓力

邀請您親自體驗我們產品的優越性能,了解 SkyCloud 的速度、可靠性與靈活性,先行測試,滿意後再正式啟用

background imagebackground image