一套用 nginx 當反向代理、後面接 PHP 與 Node.js、核心是 Linux、再用 Python 的 LiteLLM 串 AI 模型的服務,在 2026 年 10 月幾乎每一層都需要處理:nginx、Linux 核心、PHP、Node.js 各自修補了重大漏洞,eMudhra 憑證私鑰外洩牽動 Go、Rust、Python 的根憑證,npm 與 PyPI 上都出現竊取憑證的惡意版本,Zeabur、Railway 兩個部署平台與 AI 程式工具 OpenCode 也公告使用者的金鑰可能外洩。

這些事件的處理方式分成兩類。軟體漏洞要更新並重新部署才會生效;金鑰與環境變數外洩則要更換憑證,更新套件無法補救。以下依台灣時間整理每起事件的經過、受影響版本與處置方式。

2026 年 10 月資安事件時間線

十一起事件涵蓋網頁伺服器、作業系統核心、程式語言執行環境、憑證機構、npm 與 Python 套件、AI 程式工具與雲端部署平台。

台灣時間元件與用途事件處置來源
10 月 5 日function-flag 等 npm 套件:npm 是 Node.js 的套件倉庫資安公司 Checkmarx 公布 MALFEX 行動:同一名攻擊者的 8 個惡意套件累計下載約 4 萬次,在 Windows 上安裝遠端控制木馬或竊密程式npm 已在 10 月 8 日前全數下架;裝過的專案要移除套件、更換金鑰 公告與分析
10 月 8 日tensorlake:AI 應用開發平台 Tensorlake 的 npm SDK0.5.144 被植入 Shai-Hulud 家族的竊密程式,安裝時就會執行,蒐集 npm、GitHub、雲端憑證與 AI 工具設定,再用竊得的 npm 權限發布更多受感染套件先清除常駐程式,再重建環境、更換金鑰 公告與分析
10 月 14 日nginx:網頁伺服器與反向代理;njs 是它的 JavaScript 模組1.30.6、1.31.7 修補五個漏洞;同日 njs 1.0.2 修補兩個 XML 處理漏洞更新、重新啟動 公告與分析
10 月 14–16 日Zeabur:雲端部署平台(PaaS)內部憑證遭盜用,約 322 萬筆環境變數紀錄被讀取更換金鑰 公告與分析
10 月 15 日Linux 核心:作業系統核心,也負責處理虛擬機的網路封包PwnEscape(CVE-2026-99999),虛擬機可影響宿主機更新核心、重開機 公告與分析
10 月 17–18 日OpenCode:開源 AI 程式開發 Agent;Console 是官方線上主控台Console 遭入侵,約 1.4% 使用者連結的外部模型服務 API Key 可能外洩到服務商撤銷並更換 Key 公告與分析
10 月 18–20 日eMudhra:印度的憑證機構(CA),簽發讓瀏覽器與程式驗證 HTTPS 網站身分的憑證八把中繼 CA 私鑰可被復原瀏覽器與各語言信任庫已緊急封鎖;使用者要更新信任庫、重新建置 公告與分析
10 月 21 日PHP:伺服器端程式語言兩個未登入即可遠端執行程式碼的漏洞更新、重新部署 公告與分析
10 月 21 日(美國時間)Node.js:JavaScript 執行環境修補十個漏洞,包含 Brotli 解碼器遠端執行程式碼更新、重新部署 公告與分析
10 月 21 日LiteLLM:BerriAI 開發的開源 Python 套件與 proxy,用同一套介面呼叫多家 AI 模型 API,常當公司內部的 AI 閘道1.107.0 是惡意版本,安裝後會竊取憑證重建環境、更換金鑰 公告與分析
10 月 21 日(美國時間)Railway:雲端部署平台(PaaS)客戶環境變數可能遭存取,部分已被解密更換金鑰 公告與分析

PaaS(Platform as a Service)是把程式碼交給平台就能自動建置、部署的雲端服務;資料庫密碼、API Key 這類設定,通常存成平台上的「環境變數」。這也是 Zeabur 與 Railway 的事件需要使用者自行更換金鑰的原因。

瀏覽器、作業系統與 Go、Rust、Python 等語言,各自內建一份信任的根憑證清單,稱為信任庫。CA 私鑰外洩後,可能被拿來簽出會被信任的假憑證,所以各家要把它移出清單或加入封鎖,程式更新信任庫後才會拒絕這些憑證。

nginx 1.30.6 修補五個漏洞

nginx 是常見的網頁伺服器,也常放在 PHP、Node.js 等應用程式前面當反向代理,負責接收連線、處理 HTTPS 再轉給後端。10 月 14 日 nginx 發布穩定版 1.30.6 與主線版 1.31.7,一次修補五個 CVE,官方評級都是 medium。 nginx 1.30 變更紀錄

CVE觸發條件可能結果受影響版本
CVE-2026-15176請求網址經 rewrite 改寫後,再由 alias 對應到檔案路徑worker 程序緩衝區溢位0.1.29–1.31.6
CVE-2026-93479計算含變數的字串,影響文件根目錄計算與請求紀錄worker 程序緩衝區溢位1.30.0–1.30.5、1.31.2–1.31.6
CVE-2026-95101啟用 HTTP/3略過 client_max_body_size 限制,或在轉送的請求中注入資料1.25.0–1.31.6
CVE-2026-97629輪替 TLS session ticket 金鑰其中一把金鑰未初始化,可能被偽造 session1.23.2–1.31.6
CVE-2026-97205非同步檔案 I/O(AIO)搭配 SSI 的 include virtualuse-after-free0.8.11–1.31.6

CVE-2026-15176 的影響範圍從 0.1.29 開始,也就是 2005 年的版本,問題存在了二十一年。五個漏洞都需要特定設定才會觸發,但 alias、rewrite 與含變數的 root、access_log 在一般網站設定中相當常見,很難只靠檢查設定排除風險。 nginx 安全公告

同一天 nginx 的 JavaScript 模組 njs 也發布 1.0.2,修補解析 XML 時的記憶體洩漏(CVE-2026-101025)與 XML 屬性值不一致影響簽章驗證(CVE-2026-101019),有用 njs 處理 XML 的網站要一起更新。 njs 變更紀錄

修補方式是更新到 1.30.6、1.31.7 或之後的版本,並重新啟動 nginx。使用 Linux 發行版套件時,發行商可能把修正回補到原本的版號,要以發行商的安全公告為準;Docker 部署則要拉取新映像並重建容器。reload 只會重新讀取設定,執行中的程序仍是舊版;可以用下列指令確認與套用:

# 查看已安裝的 nginx 版本
nginx -v

# 確認設定沒有錯誤後重新啟動,讓新版本的程序接手
nginx -t && systemctl restart nginx

Zeabur 遭入侵,322 萬筆環境變數紀錄外洩

Zeabur 是提供一鍵部署的雲端平台,可以把網站、資料庫等服務部署到平台的共用叢集,或 Zeabur 代管、只跑單一使用者服務的專屬主機。依 Zeabur 公布的初步報告,攻擊者在台灣時間 10 月 14 日上午 9 點 36 分首次使用 Zeabur 的 AWS 金鑰,四分鐘後以管理員 token 進入共用叢集,最後一次活動是 10 月 16 日清晨 5 點 05 分,前後超過 40 小時。 Zeabur 事故初步報告

這是 Zeabur 繼 8 月底金鑰外洩後,兩個月內第二次資安事件。前一次同樣涉及內部憑證遭盜用、專案環境變數被讀取,當時確認暴露的內容與處置方式整理在 Zeabur 金鑰外洩事件介紹 。Zeabur 認定這次事件的根本原因是「長期有效的管理員憑證以明文保存,而且能從公開網路使用」。共用叢集的管理員 token 從 2024 年建立後沒有到期日,又以明文寫進設定檔儲存庫;8 月的資安事件後,這些明文憑證沒有一起更換。目前推測攻擊者用 8 月外洩的 GitHub App 私鑰讀取了這個儲存庫,但最初的入口尚未確認。

範圍已確認或可能外洩的內容
平台資料庫3,218,965 筆服務環境變數紀錄、321,810 個帳號的 email、使用者名稱與電話
共用叢集9 個地區所有服務的環境變數與秘密資料;攻擊者在 865 個資料庫服務內執行過指令,取走多少資料無法得知
使用者的 GCP 專屬主機101 台主機遭 root 登入,其中 50 台被加入 SSH 金鑰
備份台北(tpe1)與香港(hkg1)地區的資料庫備份可能被下載

Zeabur 建議所有使用者更換環境變數裡的每一組憑證,順序是先到各服務商撤銷舊金鑰、再更新設定並重新部署;用過專屬 GCP 主機的使用者,則要把主機當成已遭入侵,備份資料後重建。

第二次事件後,Zeabur 創辦人林沅霖在 10 月 17 日宣布將結束營運、退出雲端部署市場:即日起停止新購專屬主機與網域,12 月 1 日起停用專屬主機續約,主機會依各自到期日關閉,共用叢集上的服務也會先暫停;12 月 31 日所有專屬主機與共用叢集全面停止運作。因此備份與搬遷要依實際到期日安排,不能把年底當成所有服務都能正常運作的保證。 Zeabur 結束營運公告

Linux 核心 PwnEscape 讓虛擬機影響宿主機

PwnEscape(CVE-2026-99999)是 Linux 核心 IPv4 網路處理的漏洞,屬於 VM escape 類型:虛擬機裡的程式可以突破隔離,影響執行它的宿主機。研究者 Paulos Yibelo 在 Vercel 舉辦的沙盒資安挑戰中發現這個問題,9 月 4 日私下通報核心維護者,修正在 10 月 14 日合併進主線,CVE 於 10 月 15 日公開。 AlmaLinux 說明

虛擬機送出封包時,可以請宿主機代為計算校驗和(checksum)。宿主機核心沒有驗證這份由虛擬機提供的資訊,計算結果會寫回已經檢查過的 IPv4 標頭,把標頭長度從 20 位元組改成 60 位元組。後續的封包分割程式依照錯誤的長度,把宿主機記憶體的內容複製進對外送出的封包。研究者在自己的實驗環境中,進一步利用這個寫入在宿主機上以 root 身分執行程式。 PWNAI 研究說明

AlmaLinux 特別說明,PwnEscape 雖然名稱有 escape,卻不是 KVM 的漏洞,問題在主機核心的網路程式碼,從 2008 年起就存在。Red Hat 評估本機攻擊者也能觸發,不限於虛擬機,因此一般伺服器同樣需要更新;官方目前沒有可替代更新的緩解方式。 Red Hat CVE-2026-99999

發行版修補狀態(10 月 22 日查核)
Debian 13(trixie)linux 6.12.113-1(DSA-6568-1)
Debian 12(bookworm)linux 6.1.190-1(DLA-4841-1)
AlmaLinux 8、9、10修補核心已在 testing 套件庫,尚未進入正式套件庫
Ubuntu 16.04–26.1010 月 19 日更新時仍標示 Vulnerable
RHEL 8、9、10全部標示受影響,修補由各產品線處理

租用 VPS 的使用者,宿主機由雲端業者負責,但自己的虛擬機核心仍要依發行版公告更新並重開機。自己架設 KVM、Proxmox 等虛擬化主機的使用者,重開機前要先遷移或關閉上面的虛擬機。各發行版的最新狀態可在 Ubuntu 與 Debian 的安全追蹤頁查詢。

OpenCode Console 遭入侵,模型 API Key 可能外洩

OpenCode 是開源的 AI 程式開發 Agent,可以在終端機或桌面 App 裡讀寫程式碼、執行指令,並接上 Anthropic、OpenAI、Google 等多家模型。OpenCode Console 是官方的線上主控台,使用者可以在上面連結外部模型服務商的 API Key。

OpenCode 在台灣時間 10 月 18 日凌晨 2 點 08 分發文,表示前一晚發生與「大規模蒸餾攻擊」有關的資安事件,影響約 1.4% 的 Console 使用者,範圍是連結了外部模型服務商的部分使用者。受影響的人已經收到 email 通知,沒收到信的使用者不在影響範圍內。OpenCode 表示事件仍在處理中,正與 Anthropic、OpenAI、Google 合作處置,入侵方式與事後報告目前都還沒公布。 OpenCode 公告

蒸餾(distillation)是把另一個模型的輸出當成訓練資料,訓練出能力相近的模型,過程需要大量呼叫商業模型。拿別人的 API Key 呼叫,費用就落在 Key 的主人身上;據媒體報導,部分受影響使用者在金鑰被撤銷前已出現非預期的模型費用。

在 OpenCode Console 刪除 Key,只會讓 Console 不再使用它,Key 本身在服務商那邊仍然有效。收到通知的使用者要到 Anthropic、OpenAI、Google 各自的主控台撤銷舊 Key、產生新 Key,並檢查 10 月 17 日以後的用量與帳單;在服務商設定用量上限,也能限制 Key 外洩時的損失。

eMudhra 憑證私鑰外洩,各語言根憑證跟著更新

eMudhra 以 emSign 品牌簽發 HTTPS 與程式碼簽章憑證。台灣時間 10 月 18 日凌晨研究者通報,eMudhra 八個中繼 CA 的私鑰小得異常,可以從公開憑證直接算出來,其中一把的數值是 4;這八把金鑰也經過 Sectigo 的 AAA Certificate Services 根憑證交叉簽署。Chrome、Firefox 當天封鎖,Apple、Microsoft 隨後跟進。事件經過、私鑰為何是 4,以及假憑證的風險,在 eMudhra 私鑰事件解析 有完整說明。

瀏覽器以外的程式多半依賴系統或自帶的信任庫,需要分別更新。Go 在多數平台使用系統的根憑證,但 1.27.3 與 1.26.10 另在 crypto/x509 加入封鎖清單(CVE-2026-111943),封鎖內容編譯在執行檔裡,要用新版重新建置程式才有效;Rust 的 webpki-roots 1.0.10 與 Python 的 certifi 2026.10.19 都移除了 emSign ECC Root CA – G3;Node.js 則在 10 月 21 日的安全更新一併更新根憑證。 Go 安全公告 、 webpki-roots 1.0.10 、 certifi 2026.10.19

PHP 兩個漏洞未登入即可遠端執行程式碼

PHP 在 10 月 21 日發布緊急更新,修補 CVE-2026-109618 與 CVE-2026-109619,CVSS v4.0 評分皆為 9.2。一個發生在記憶體不足時的錯誤處理流程,另一個是 worker 程序沿用前一次請求已釋放的狀態;在 Apache mod_php 上,攻擊者可以在網站程式碼執行之前觸發遠端程式碼執行,PHP-FPM 也在影響範圍內。 PHP 安全公告

修補版本是 8.2.35、8.3.36、8.4.27 與 8.5.12。PHP 8.1、8.0 與 7.4 沒有新的正式版本,官方只提供最小的原始碼回補,更舊的分支則沒有回補,主要做法是遷移到受支援的分支;WordPress 站長要確認的是主機上的 PHP,更新 WordPress 核心不會換掉 PHP。官方預告、日本首相呼籲修補、各業者預防性停站的經過,以及無法立即更新時的暫時措施,整理在 PHP 緊急安全更新解析 。

Node.js 修補十個漏洞,包含 Brotli 遠端執行程式碼

Node.js 是在伺服器上執行 JavaScript 的環境,常用來架設 API 與網頁後端。10 月 21 日(美國時間)Node.js 發布 22.23.4、24.22.1 與 26.12.1,修補十個漏洞,其中四個為 High。 Node.js 10 月安全發布

CVE內容受影響版本線
CVE-2026-111497Brotli 解碼器越界寫入,可能遠端執行程式碼22、24、26
CVE-2026-105483IP 位址以全形數字書寫時,可略過 TLS 憑證主機名稱檢查24、26
CVE-2026-106069主機名稱被寬鬆解析成 IP 位址時,可略過 TLS 憑證主機名稱檢查22、24、26
CVE-2026-105482dns.resolve 遇到含 NUL 字元的名稱時會截斷22、24、26

Brotli 是常見的 HTTP 壓縮格式,Node.js 的 Brotli 解壓由內建的 zlib 模組提供。官方沒有說明觸發條件,會解壓外部 Brotli 資料的程式,例如處理 Content-Encoding: br 的 HTTP 回應,宜優先更新。另外三個 High 中,兩個是 TLS 憑證的主機名稱檢查可被略過,影響以 TLS 驗證對方身分的程式;一個是 dns.resolve 遇到含 NUL 字元的名稱時會截斷。

Node.js 20 與 25 已結束支援,這次沒有修補版本,需要升級到 22、24 或 26。Docker 部署要把基底映像換成修補版號並重新建置;Node.js 執行環境更新後,應用程式也要重新啟動才會載入新版本。

LiteLLM 1.107.0 是竊取憑證的惡意版本

LiteLLM 是 BerriAI 開發的開源 Python 套件與 proxy,用同一套介面呼叫 OpenAI、Anthropic、Google 等上百種模型 API,常被拿來當公司內部的 AI 閘道。10 月 21 日台灣時間晚上 7 點 39 分到 9 點 23 分之間,PyPI 上的 litellm==1.107.0 是攻擊者發布的惡意版本;Docker Hub 的 v1.107.0、latest、main-latest、main-stable 標籤也在晚上 7 點 46 分到 10 點 20 分之間指向惡意映像。 LiteLLM 事件公告

LiteLLM 惡意版本透過 Python 啟動機制執行,讀取環境變數與金鑰並外傳
受影響環境即使未 import LiteLLM,也可能觸發惡意程式。

惡意版本在套件裡放了 Python 啟動時會自動執行的檔案,所以只要安裝了,就算程式沒有 import litellm,每次啟動 Python 都會執行。LiteLLM 說明它會竊取憑證並載入遠端執行程式碼的工具。JFrog 的分析指出,它蒐集 SSH 與雲端金鑰、環境變數、AI 工具的登入 token,以及 LiteLLM proxy 資料庫裡的模型 API Key,另有每小時向外下載程式碼執行的機制,分析當下這條路徑處於休眠,但隨時可能被重新啟用。 JFrog 分析

依 LiteLLM 的說明,攻擊者用開發者的憑證覆寫分支保護規則,把發布流程改成從仿冒的 Berri-AI/litellm 儲存庫建置。開發者的 GitHub CLI token 推測是從一個對外暴露的內部 LiteLLM 部署的 log 取得:LiteLLM 表示觀察到 Claude Code 在特定情況下會把使用者的 GitHub CLI OAuth token 放進回應內容,若 proxy 記錄回應內容,token 可能出現在 LiteLLM 的 log 裡。入口目前仍在調查。LiteLLM 在 3 月也曾因 CI 工具遭入侵而發布 1.82.7、1.82.8 兩個惡意版本,經過整理在 npm 與 pip 供應鏈攻擊解析 。

在上述時段安裝過 1.107.0 或啟動過這些映像的環境,LiteLLM 建議視為已遭入侵:先不要在該環境執行 pip,因為任何 Python 啟動都會再次觸發惡意程式;刪除 site-packages 裡的 cook.pth、cook.py、sitecustomize.py,結束持有 /tmp/remote_code_loader.lock 的背景程序,再重建虛擬環境或映像,並更換該主機能存取的所有金鑰。版本先固定在 litellm==1.106.2 或更早的明確版號。

# 不經過 Python,直接找惡意版本留下的檔案
find / -name 'litellm-1.107.0.dist-info' -o -name 'cook.pth' 2>/dev/null

重建環境時,在 requirements.txt 固定版本,避免再拉到最新版:

# requirements.txt
litellm==1.106.2

找到這些檔案代表確實受影響;沒找到則無法證明環境乾淨,安裝時間落在上述時段內仍應更換金鑰。

Railway 客戶環境變數遭存取

10 月 21 日(美國時間)雲端部署平台 Railway 公告偵測到存放客戶環境變數的系統出現異常活動,未經授權的第三方可能存取了加密後的環境變數,其中一部分已取得解密後的內容。Railway 已通知上游服務商主動撤銷金鑰,並在調查期間暫停所有部署。 Railway 資安公告

Railway 初步判斷受影響的可能只是部分使用者,但建議所有人都更換存在 Railway 上的環境變數與私有映像倉庫的憑證,並檢查這些服務的 log。Railway 認為這次事件屬於近期一連串針對平台公司的攻擊,目標是入侵 AI 推論服務商;入侵方式與受影響人數尚未公布,10 月 22 日另外發布了檢查 GCP 與 AWS 異常存取的建議。

事件的共同點與處理順序

Zeabur、OpenCode、LiteLLM、Tensorlake 與 Railway 五起事件外洩的都是金鑰:環境變數、雲端憑證與 AI 模型的 API Key。這類 Key 被盜用後可以直接產生費用,攻擊者不需要再入侵其他系統就能變現。Railway 的公告提到攻擊目標是 AI 推論服務,OpenCode 表示事件與大規模蒸餾攻擊有關,LiteLLM 與 Tensorlake 的惡意版本都特別蒐集 AI 工具的 token 與設定,Zeabur 也在事後發現一組使用者的 OpenAI Key 遭到濫用,推測與這次外洩有關。

軟體漏洞的更新部署與金鑰外洩的撤銷更換流程
金鑰外洩後,必須到服務商撤銷舊金鑰。

軟體漏洞類的事件,更新套件只是第一步。容器要重建映像才會換掉裡面的 PHP、Node.js 與根憑證,Go 程式要重新編譯才會帶入新的封鎖清單,Linux 核心要重開機才會載入。金鑰外洩類的事件則要到每個服務商撤銷舊金鑰、產生新金鑰,再更新部署。

使用中的元件確認方式修補目標
nginxnginx -v 或發行商公告1.30.6、1.31.7 以上;有用 njs 時 njs 1.0.2 以上
Linux 核心uname -r 對照發行版公告含 CVE-2026-99999 修正的核心,並重開機
PHP網站實際使用的 PHP 版本8.2.35、8.3.36、8.4.27、8.5.12
Node.jsnode -v22.23.4、24.22.1、26.12.1
Go 程式建置時使用的 Go 版本以 1.27.3 或 1.26.10 重新建置
Python certifi排除惡意套件感染後,再用 pip show certifi 確認2026.10.19 以上
Rust webpki-rootscargo tree -i webpki-roots1.0.10 以上
LiteLLM不啟動 Python,檢查套件目錄、安裝紀錄與映像 digest固定 1.106.2;裝過 1.107.0 要重建並換金鑰
npm 專案在 lockfile 搜尋 tensorlake、function-flag 等套件名稱移除;裝過 tensorlake 0.5.144 要先清除常駐程式再換金鑰
OpenCode Console是否收到 OpenCode 通知信、服務商用量到服務商撤銷並更換 API Key
Zeabur、Railway平台上的環境變數清單逐一撤銷舊金鑰並更換

常見問答

以下補充事件關聯、容器更新與搬遷後的金鑰處理。

這些事件彼此有關聯嗎?

目前沒有官方資料顯示這些事件出自同一個攻擊者。nginx、PHP、Node.js 與 Linux 核心是各自獨立發現的漏洞,eMudhra 是金鑰產生流程的錯誤;Railway 表示自己的事件屬於針對平台公司、以 AI 推論服務為目標的一連串攻擊,OpenCode 則把事件連結到大規模蒸餾攻擊,兩者都沒有點名其他事件。

使用 Docker 官方映像,更新後就完成修補了嗎?

還沒有,要重新拉取映像並重建容器。執行中的容器不會因為遠端標籤更新而自動替換;使用固定版號或映像 digest 時,也要先把設定改成修補後的版本。Linux 核心則屬於宿主機,容器重建不會更新核心。

容器內的 PHP 與 Node.js 需要重建部署,Linux 主機核心更新後需重開機
容器與宿主機的修補需要分別套用。

已經搬離 Zeabur,還需要更換金鑰嗎?

需要。外洩的是 10 月 14 日到 16 日存在平台上的環境變數,搬家只換了部署位置,舊金鑰仍然有效;搬到 Railway 的服務,還要再處理 Railway 這次事件。兩個平台的建議都是到服務商撤銷舊金鑰,再把新金鑰設定到目前的部署環境。

參考來源


Sponsored Links

發佈留言