研究報告拆解

CISA 將 PolyShell 與 Brotli 漏洞列入 KEV:數百個電商網站被入侵,Node.js 成為新目標

美國 CISA 確認 Adobe Commerce 的 PolyShell 漏洞(CVE-2026-48356)與 Google Brotli 解碼器漏洞(CVE-2026-111497)已遭主動攻擊。Sansec 觀察到攻擊者利用 PolyShell 入侵數百個電商網站,ELLIO 偵測到 Brotli 野外利用流量。91% 雲端環境有 Brotli 漏洞風險,82% 有公開暴露的 Node.js 實例。

30 秒看懂
  • 美國 CISA 於 2026 年 10 月 28 日將兩個漏洞加入 Known Exploited Vulnerabilities(KEV)清單:CVE-2026-48356(Adobe Commerce/Magento 的 PolyShell 漏洞,CVSS 9.3)與 CVE-2026-111497(Google Brotli 解碼器漏洞,CVSS 9.2)。Sansec 觀察到攻擊者利用 PolyShell 入侵數百個電商網站,在 Magento CMS block 中植入惡意 loader。
  • ELLIO 於 2026 年 10 月 27 日偵測到首起 Brotli(CVE-2026-111497,也稱 Broccoli2Shell、HTTP2Shell、Node2Shell)野外利用流量,來源 IP 94.154.43[.]7(荷蘭),攻擊目標為 Node.js v24.22.0。攻擊 payload 與公開 exploit 工具完全一致,顯示 RCE 已被用於大規模利用行動。
  • Wiz 警告 91% 雲端環境有資源暴露於 Brotli 漏洞風險,82% 雲端環境有公開暴露的 Node.js 實例。Brotli 是廣泛使用的開源壓縮函式庫,影響 Node.js、PHP、Python、Bun、Envoy Proxy、Istio、.NET、ClickHouse 等專案。美國聯邦機構必須在 2026 年 11 月 10 日前完成修補。

發生了什麼

想像你管理一個線上商店,使用 Adobe Commerce(Magento)平台。你以為只要定期更新、設定好防火牆,網站就是安全的。但攻擊者已經透過一個檔案上傳漏洞,在你的商店頁面中植入一段隱藏的程式碼,每個顧客在結帳時輸入的信用卡資料都會被傳送到攻擊者的伺服器。

或者你在雲端跑一個 Node.js 應用程式,接受使用者上傳的檔案並自動解壓縮。攻擊者送來一個精心構造的 Brotli 壓縮檔,你的應用程式在解壓縮時觸發記憶體錯誤,攻擊者取得遠端程式碼執行權限。

2026 年 10 月 28 日,美國 CISA(Cybersecurity and Infrastructure Security Agency) 將兩個漏洞加入 Known Exploited Vulnerabilities(KEV)清單,確認已有攻擊者主動利用:

  1. CVE-2026-48356(CVSS 9.3):Adobe Commerce 與 Magento 的 PolyShell 漏洞,允許上傳危險檔案並執行任意程式碼
  2. CVE-2026-111497(CVSS 9.2):Google Brotli 解碼器的漏洞(也稱 Broccoli2Shell、HTTP2Shell、Node2Shell),可破壞記憶體、洩漏敏感資料、遠端執行程式碼

來源:本文整理自 The Hacker News 於 2026 年 10 月 28 日發布的報導。原文連結,原文發布日期為 2026 年 10 月 28 日。

PolyShell:數百個電商網站已被入侵

PolyShell(CVE-2026-48356)是 Adobe Commerce 與 Magento 的一個檔案上傳漏洞,允許攻擊者上傳 webshell 並執行任意程式碼。

Sansec(荷蘭電商安全公司)觀察到攻擊者利用這個漏洞入侵數百個電商網站,在 Magento CMS block 中植入惡意 loader。這個 loader 會在訪客開啟頁面時,向攻擊者控制的伺服器請求下一階段的 payload。

攻擊目標不明

雖然已經發現數百個被植入 loader 的網站,但 Sansec 表示尚未取得下一階段的惡意程式,因此難以確定攻擊者的最終目標。

根據過往類似攻擊的經驗,最可能的目標是竊取顧客的信用卡資料(web skimmer),但也可能用於其他目的,例如:

  • 植入挖礦程式
  • 建立殭屍網路
  • 竊取商店管理員帳號
  • 作為跳板攻擊內部網路

攻擊活動持續超過一年

Sansec 評估這個攻擊活動至少從 2025 年 7 月開始,持續至今超過 15 個月。

本站先前已在 2026-10-26 的報導 中詳細拆解這起攻擊活動,包括攻擊者如何使用瀏覽器指紋識別躲避安全掃描器、如何將 payload 存入 localStorage 持久化。

Brotli:首起野外利用流量出現

CVE-2026-111497 是 Google Brotli 解碼器函式庫的一個漏洞。Brotli 是一個廣泛使用的開源壓縮演算法,被整合到許多專案中,包括 Node.js、PHP、Python、Bun、Envoy Proxy、Istio、.NET 等。

這個漏洞允許遠端未經身分驗證的攻擊者,透過精心構造的 Brotli 壓縮資料流:

  • 破壞相鄰的解碼器狀態記憶體
  • 洩漏敏感的記憶體內容
  • 造成拒絕服務(DoS)
  • 可能執行任意程式碼

首起野外利用:針對 Node.js

威脅情報公司 ELLIO 於 2026 年 10 月 27 日報告,其感測器偵測到 CVE-2026-111497 野外利用流量,攻擊目標為 Node.js v24.22.0。

攻擊來源 IP:94.154.43[.]7(地理位置:荷蘭)

這個 IP 位址之前也曾被觀察到攻擊 PHP2Shell(PHP 的兩個 RCE 漏洞)。

Payload 與公開 exploit 完全一致

ELLIO 分析攻擊 payload 後確認,這是一次真正的 Node2Shell RCE 利用嘗試,且與公開的 exploit 工具完全一致:

「攻擊者的 payload 是一個真正的、結構正確的 Node2Shell exploitation 嘗試……Brotli 資料流、staged displacement、pivot pair 與 delivery 都是正確的,並且與公開工具完全相同。這顯示 RCE 已被專注於大規模利用的操作者採用。」

這代表 Brotli 漏洞的 exploit 已經從概念驗證階段,進入大規模自動化利用階段。

另一起偵測:美國 IP

威脅情報公司 Previdian 的遙測資料顯示,截至 2026 年 10 月 27 日,已記錄到一次針對其蜜罐感測器的利用嘗試,來源為美國的 IP 位址。

目前尚不清楚這些利用行動的規模有多大。

Brotli 漏洞的觸發條件

Rapid7 解釋 Brotli 漏洞的觸發條件:

「能提供 Brotli 資料供應用程式解壓縮的攻擊者,可以破壞程序記憶體。根據 Node.js 的說明,這種破壞可能導致程序崩潰、洩漏敏感的程序記憶體、或遠端程式碼執行。因此,暴露程度取決於應用程式是否將攻擊者控制的壓縮資料傳遞給受影響的解碼器。」

這代表:

  • 如果應用程式接受使用者上傳的檔案並用 Brotli 解壓縮:高風險
  • 如果應用程式只解壓縮內部信任的資料:風險較低
  • 如果應用程式完全不使用 Brotli:無風險

但實務上,很多應用程式會處理外部來源的壓縮資料(HTTP 回應、上傳檔案、API 請求),且開發者可能不清楚底層使用了 Brotli。

91% 雲端環境有風險,82% 有公開的 Node.js

Wiz(Google 旗下雲端安全公司)警告:

  • 91% 雲端環境有資源暴露於 CVE-2026-111497 風險
  • 82% 雲端環境有公開暴露的 Node.js 實例

這是一個驚人的數字。這代表幾乎所有雲端環境都有某些資源使用 Brotli,且大多數有對外暴露的 Node.js 應用程式。

Node.js 並非全部有風險

Sysdig 強調,不是每個 Node.js 服務都有 Brotli 漏洞,而是「會解碼攻擊者影響的 Brotli 資料的服務」才有風險。

「Node2Shell 不是每個 Node.js 服務的漏洞,而是會解碼攻擊者影響的 Brotli 資料的服務的漏洞。Express 5 搭配預設的 JSON 解析會讓大量實例進入這個群組。到目前為止證明的影響是大規模崩潰,以及在狹窄組態下的程式碼執行,因此修補優先序應該依可達性決定。」

這代表:

  • Express 5 搭配預設 JSON 解析:高風險
  • 其他會處理外部 Brotli 資料的 Node.js 服務:高風險
  • 不處理外部壓縮資料的 Node.js 服務:風險較低

但由於判斷「是否處理外部 Brotli 資料」需要程式碼審查,最安全的做法仍是全面升級。

受影響專案與修補版本

由於 Brotli 是廣泛分發的開源函式庫,被眾多專案採用,這個漏洞引發了緊急回應,各廠商紛紛釋出修補或評估影響。

Node.js

修補版本:22.23.4、24.22.1、26.12.1

Node.js 官方公告沒有提供緩解措施,升級是唯一的完整修補方法。執行已停止支援版本的組織應遷移到支援的版本線。

PHP(Windows)

PHP 在 2026 年 10 月 26 日釋出 Windows 版本:8.5.12-1、8.4.27-1、8.3.36-1、8.2.35-1,修補 CVE-2026-111497。

這是在先前修補 PHP2Shell 漏洞(CVE-2026-109618/109619)的版本上,額外修補 Brotli 漏洞。

其他專案

報導列出的受影響專案與修補連結包括:

  • Bun
  • Envoy Proxy
  • Istio
  • .NET
  • Python
  • ClickHouse
  • PHP Brotli 擴充套件
  • Ruby "brotli" gem

聯邦機構修補期限

美國 聯邦民間行政部門(FCEB)機構必須在 2026 年 11 月 10 日前針對這兩個漏洞(CVE-2026-48356 與 CVE-2026-111497)套用修補。

這個期限也可作為其他組織的參考:CISA 認為這兩個漏洞的嚴重程度需要在兩週內完成修補。

如何偵測與修補

立即檢查版本

  1. Adobe Commerce/Magento:確認是否已套用 APSB26-73 修補

    php bin/magento --version
    
  2. Node.js:升級至 22.23.4、24.22.1、26.12.1

    node -v
    
  3. PHP(Windows):升級至 8.5.12-1、8.4.27-1、8.3.36-1、8.2.35-1

    php -v
    
  4. 其他專案:檢查是否使用 Brotli,並依各專案安全公告升級

判斷 Brotli 暴露風險

檢查你的應用程式是否:

  • 接受使用者上傳的檔案並解壓縮
  • 處理外部 API 回應並解壓縮
  • 使用 Express 5 搭配預設 JSON 解析
  • 在 HTTP 層自動解壓縮 Brotli 編碼的請求

如果有任何一項,就應該立即升級。

Magento 商店的額外檢查

如果你管理 Magento 商店,除了升級到修補版本,還要:

  1. 稽核 cms_block 表,尋找可疑的外部 script
  2. 檢查 pub/media 目錄是否有 webshell
  3. 稽核管理員帳號清單

詳細步驟請參考本站先前的 Magento 攻擊拆解。

你可以學到什麼

站在攻擊者的角度:PolyShell 給了我數百個電商網站的入口,我能在每個顧客的瀏覽器中執行程式碼,竊取信用卡資料。Brotli 更廣泛——Node.js、PHP、Python,很多專案都用 Brotli 解壓縮,只要我能控制壓縮資料流,我就能破壞記憶體、遠端執行程式碼。91% 雲端環境有風險,82% 有公開的 Node.js,我有足夠的攻擊面可以選。

lessons本案的 6 個教訓
  1. 01
    兩個高嚴重度漏洞同時列入 KEV:CISA 同時將 PolyShell 與 Brotli 列入 KEV,代表兩者都已有主動攻擊,應同等重視。
  2. 02
    開源函式庫的漏洞影響廣泛:Brotli 是開源壓縮函式庫,被整合到 Node.js、PHP、Python 等眾多專案,一個漏洞就影響整個生態系。
  3. 03
    雲端環境的高曝險:91% 雲端環境有 Brotli 漏洞風險,82% 有公開的 Node.js,顯示雲端應用程式的供應鏈風險。
  4. 04
    從 PoC 到大規模利用很快:Brotli 漏洞的野外利用 payload 與公開 exploit 完全一致,顯示攻擊者能快速將 PoC 轉換為自動化利用工具。
  5. 05
    電商網站是持續目標:PolyShell 攻擊從 2025 年 7 月持續至今超過 15 個月,顯示電商網站是攻擊者的長期目標。
  6. 06
    修補緊急度高:聯邦機構只有兩週修補期限,顯示這兩個漏洞的嚴重性。
keywords重點學習:最需要學習的 10 個關鍵字6 個
  1. 01
    PolyShell(CVE-2026-48356)
    Adobe Commerce/Magento 的檔案上傳漏洞,允許上傳 webshell 執行任意程式碼,已被用於入侵數百個電商網站。
  2. 02
    Broccoli2Shell/HTTP2Shell/Node2Shell(CVE-2026-111497)
    Google Brotli 解碼器的漏洞,可破壞記憶體、洩漏敏感資料、遠端執行程式碼,影響 Node.js、PHP、Python 等專案。
  3. 03
    CISA KEV(Known Exploited Vulnerabilities)
    CISA 維護的已知被攻擊漏洞清單,列入此清單代表已有主動攻擊,應優先修補。
  4. 04
    Brotli
    開源壓縮演算法函式庫,被廣泛整合到各種專案中,一個漏洞影響整個生態系。
  5. 05
    CMS block
    Magento 用來渲染靜態內容的機制,攻擊者在此植入惡意 loader。
  6. 06
    Express 5
    Node.js 的網頁框架,搭配預設 JSON 解析時會處理 Brotli 壓縮資料,成為 Broccoli2Shell 的高風險目標。
try today今天就可以來試試約 15 分鐘

全部唯讀,不改任何設定;做完你會知道自己有沒有同樣的破口。

  1. 檢查 Adobe Commerce/Magento 版本與修補狀態
    php bin/magento --version
    看到什麼代表什麼:確認版本並對照 Adobe APSB26-73 公告,確認是否已套用 PolyShell 修補。
  2. 檢查 Node.js 版本
    node -v
    看到什麼代表什麼:確認版本是否為 22.23.4、24.22.1、26.12.1 或更新。若為舊版,立即升級。
  3. 檢查 PHP 版本(Windows)
    php -v
    看到什麼代表什麼:Windows 使用者確認版本是否為 8.5.12-1、8.4.27-1、8.3.36-1、8.2.35-1,已包含 Brotli 修補。
  4. 列出所有使用 Node.js 的服務
    ps aux | grep node
    看到什麼代表什麼:找出所有執行中的 Node.js 程序,評估哪些會處理外部壓縮資料。
  5. 檢查 Magento cms_block 表
    SELECT * FROM cms_block WHERE content LIKE '%<script%src=%'
    看到什麼代表什麼:若有指向陌生網域的 script(特別是 .click、.top),立即調查。
  6. 檢查雲端環境中使用 Brotli 的服務
    看到什麼代表什麼:在 AWS、Azure、GCP 等雲端平台清點使用 Node.js、Python、PHP 的服務,確認是否已更新。

如果你管理受影響的系統

  1. Magento 商店:立即套用 APSB26-73 修補,並稽核 cms_block 表與管理員帳號。
  2. Node.js 應用程式:升級到 22.23.4、24.22.1 或 26.12.1,無法升級的停止支援版本應遷移。
  3. Windows PHP:升級到包含 Brotli 修補的版本。
  4. 其他使用 Brotli 的專案:依各專案安全公告升級。
  5. 雲端環境:清點所有可能使用 Brotli 的資源,優先修補會處理外部資料的服務。

兩個漏洞都已列入 CISA KEV,聯邦機構只有兩週修補期限。今天就開始行動。

來源

分享
精選拆解直送信箱

每篇新文章一封:三點摘要、關鍵字定義、今天能做的一件事。

延伸閱讀

新聞稿拆解

Brotli 解碼器記憶體損壞:Node.js RCE 只是冰山一角

Google Brotli 解碼器的記憶體損壞漏洞 CVE-2026-111497 影響所有使用這段 C 程式碼的軟體,包括 Node.js、Bun、Python Brotli 與 brotlicffi 套件、Envoy 與 Istio 代理。精心設計的 Brotli 壓縮資料能覆寫緩衝區邊界外的記憶體,造成崩潰、記憶體洩漏或執行攻擊者控制的程式碼。Imperva 已展示在 Node.js 上執行程式碼的利用,但其他軟體尚未被證實可利用。這個漏洞在 2 月已修正但未被標記為安全問題,直到 10 月 21 日才統一發布修補。因為每個軟體都內嵌自己的 Brotli 解碼器副本,每個都必須各自更新。

  • 2026/10/24
  • 每日拆解
新聞稿拆解

Node.js 一次修了 10 個漏洞,升級的關鍵不是版本號,是重新部署

2026 年 10 月 21 日,Node.js 同時發布 22.23.4、24.22.1、26.12.1,最重的是 Brotli 解壓縮器的越界寫入,官方標題直接寫「可遠端執行程式碼」。三條線都有修,Node 20 已經停止支援、不會修。這篇拆開哪些伺服器真的在射程內、為什麼在 package.json 寫了 24.x 還不等於已經修好,以及我們自己做了什麼、還沒做什麼。

  • 2026/10/22
  • 每日拆解