➤前情提要: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.js | 22.23.4/24.22.1/26.12.1 | Node.js 20 及更早版本已停止支援,沒有修補;容器映像要重建 |
| 執行環境 | Bun | 1.4.4 | 用 bun build --compile 打包的程式要重新編譯 |
| Python | Brotli(PyPI) | 1.2.1 | 安裝後 requests、urllib3、httpx、aiohttp 解碼 Brotli 時會用到;要重新產生 lockfile |
| Python | brotlicffi | 1.2.1.0 | 同上 |
| 代理伺服器 | Envoy | 1.40.0/1.39.3/1.38.6/1.37.8 | 有啟用 Brotli 解壓縮者務必更新 |
| 服務網格 | Istio | 1.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 常見問題
結語: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 漏洞發布警訊




