Day 296

這兩天一堆軟體發資安更新,PHP、Go、Node.js、Java、GitLab 都有,該修哪裡?

Day 296 這兩天一堆軟體發資安更新,PHP、Go、Node.js、Java、GitLab 都有,該修哪裡? — 投影片 1Day 296 這兩天一堆軟體發資安更新,PHP、Go、Node.js、Java、GitLab 都有,該修哪裡? — 投影片 2Day 296 這兩天一堆軟體發資安更新,PHP、Go、Node.js、Java、GitLab 都有,該修哪裡? — 投影片 3Day 296 這兩天一堆軟體發資安更新,PHP、Go、Node.js、Java、GitLab 都有,該修哪裡? — 投影片 4Day 296 這兩天一堆軟體發資安更新,PHP、Go、Node.js、Java、GitLab 都有,該修哪裡? — 投影片 5
1 / 5

昨天整理了 PHP 的兩個重大漏洞。這兩天的資安更新不只這一件:Oracle、Go、Node.js 在處理同一批有問題的網站憑證,PHP 和 Node.js 各自還有程式漏洞,GitLab 也修了一個滿分(10 分)的漏洞。另一條線是鎖定 AI 平台的入侵:雲端部署平台 Railway 的客戶環境變數被外部存取,LLM 轉送工具 LiteLLM 有一版被塞入竊取憑證的程式。要更新什麼,先看你實際使用哪一種軟體;公告很急,但不代表每個人都要更新所有軟體。

私鑰弱到能算出來,Go、Node.js、Java 都在更新

連線到網站時,憑證用來證明「這個網站真的是它宣稱的那個網站」。幫網站核發憑證的機構 eMudhra,有八張中繼憑證的私鑰因產生方式出錯而弱到能被算出來,其中六張可以核發網站用的 HTTPS 憑證。Mozilla 的人員自己把私鑰還原了出來,Chrome 和 Firefox 已直接封鎖那些憑證。Mozilla 10 月 17 日收到通報,20 日公開;這幾天各套軟體陸續發布修補。這是私鑰可以被冒用的風險;不能直接推論已有哪個網站遭到冒名。瀏覽器與伺服器程式不一定使用同一份憑證清單,兩邊要分別確認。

網站之外,程式也會用憑證驗證連線。Go 10 月 20 日公告更新,讓驗證程式拒絕已知不可信的中繼憑證,清單裡包含受影響的 eMudhra 憑證;Node.js 10 月 21 日的安全更新也調整了內建憑證清單。Oracle 同一天發出的 CVE-2026-91403 警報,影響的是部分 Java SE 和 GraalVM 版本處理安全連線的元件,OpenJDK 公告確認也是這八張中繼憑證。Oracle 評為 9.1 分(CVSS 3.1,滿分 10 分);在受影響條件下,風險在於連線可能信任冒名憑證,讓資料被讀取或竄改。PHP 生態系的 composer/ca-bundle 也在 10 月 20 日更新憑證清單。這幾項更新處理的是同一批弱私鑰;PHP 本身的兩個程式漏洞則要另外安裝 PHP 安全更新。

維護服務時,先把 Go 更新到 1.26.10 或 1.27.3,並以新版重新建置、部署程式;Node.js 的 22、24、26 版分別更新到 22.23.4、24.22.1、26.12.1,再重新部署。使用 composer/ca-bundle 的 PHP 專案,檢查該套件是否更新到 1.4.16 或 1.6.0。程式若改用作業系統或自行設定的憑證清單,也要確認那份清單已更新;只更新程式本身,未必會更新另一份憑證清單。

使用 Oracle Java SE 或 GraalVM 的人,要先對照 Oracle 列出的受影響版本:Java SE 包括 8u511、11.0.33、17.0.21、21.0.13、25.0.5、27.0.1,GraalVM 也有受影響版本,再依官方的修補文件 CPU426 取得對應的更新。公開警報沒有列出修補完成的確切版號。Oracle 將 Java 8u511 列為受影響,OpenJDK 則列出 8u512 及更舊版本;請依你使用的發行版查證,不要只看版號推定已修好。

獨立安裝的 OpenJDK 暫時無法升級時,官方提供攔截受影響憑證的 blocked.certs 清單與操作說明;JDK 8 的檔名是 blacklisted.certs,有自行加入的項目要保留。套用前先照自己使用的 Java 發行版文件確認。

PHP 與 Node.js 還各有程式漏洞

PHP 的 CVE-2026-109618 與 CVE-2026-109619 是另外兩個漏洞。在特定條件下,未登入的攻擊者可能讓網站背後的電腦執行程式。PHP 官方 10 月 21 日釋出的修補版是 8.5.12、8.4.27、8.3.36、8.2.35。由主機商或設備廠商代管、內建 PHP 的服務,要確認業者提供的安全更新。

昨天寫到的觀察是:有人發送攻擊請求、有人試探網站,但當時還沒有找到可核對的具名入侵案例。紐西蘭國家資安中心 10 月 22 日表示,已有實際利用這些漏洞的通報,並提醒維運者檢查是否遭到未授權存取。它沒有列出受害單位或攻擊細節。這是需要提高警覺的新通報,仍不能把每個預防性下線的網站都算成受害者。

Node.js 這次除了更新憑證清單,還修了十個 Node.js 本身的漏洞,包括 Brotli 解壓縮問題(CVE-2026-111497,在特定資料處理情境下可能執行程式),以及驗證網站身分時可能判斷錯誤的問題。更新到上面的修補版本,才能一起取得這些修正。Node.js 的程式漏洞、Go 和 Java 的憑證信任更新、PHP 的兩個漏洞,各有不同的影響條件。

GitLab 另有一個滿分漏洞

程式碼協作平台 GitLab 10 月 21 日也發布更新,修掉一個評為滿分 10 分(CVSS 3.1)的漏洞(CVE-2026-110264)。在特定條件下,未登入的人可能讓 GitLab 伺服器執行程式。問題出在處理某種特製規則字串時的整數溢位。

GitLab 這個漏洞和前面的憑證事件無關,是 GitLab 自己的問題。GitLab 官方的雲端服務 GitLab.com 已經更新;自行架設 GitLab 的人要盡快升級到官方列出的修補版(如 19.5.1、18.11.13 等)。同一批更新還修了十幾個其他漏洞。這件事只影響自己架 GitLab 的單位,一般使用者不需要特別處理。

Railway 與 LiteLLM:鎖定 AI 平台的另一條戰線

雲端部署平台 Railway(開發者用來把網站或服務跑在它雲端上的服務)10 月 21 日公告,外部人員可能存取到部分客戶加密的環境變數,其中一部分也可能取得解密後的值。環境變數裡常放 API 金鑰、資料庫連線字串與私有套件庫憑證,Railway 建議客戶輪替這些憑證;平台一度暫停部署,10 月 22 日起按方案分批恢復。Railway 把這起事件連到「一波針對平台業者、意圖拿到 AI 推論服務金鑰的攻擊」。影響範圍目前仍在調查,Railway 說「相信僅影響一部分客戶」,並會以電子郵件通知受影響的人。

另一端是 LLM 轉送工具 LiteLLM(把一個介面統一轉送到 OpenAI、Anthropic、本地模型等多家服務的開源軟體)。10 月 21 日 11:39–13:23(UTC)之間,PyPI 上的 litellm 1.107.0 版、以及 Docker Hub 上的 v1.107.0、latest、main-latest、main-stable 等標籤,被攻擊者植入會偷憑證並長期執行遠端程式的檔案(例如 cook.pth、sitecustomize.py)。惡意套件和映像已下架,官方確認「所有之前的版本都是安全的」,建議鎖回 1.106.2;用過 1.107.0 的機器要刪掉這些檔案、強制停止背景的 Python 程序,並把 IAM 角色、各家 API 金鑰、資料庫密碼等憑證全部輪替。企業版私有登錄沒有受影響。

這兩起事件和前面的憑證、PHP、GitLab 漏洞無關,但共通點是:攻擊者繞過你自己的機器,直接去拿你放在平台或套件庫上的憑證。有用 Railway 部署或曾在這段時間安裝 LiteLLM 1.107.0 的人,優先按官方指引輪替金鑰與重建環境。

經營網站或維護應用程式的人,先盤點代管主機、容器與已部署程式實際使用的 PHP、Go、Node.js、Java 版本;對照各官方公告更新,測試後重新部署。使用自行管理的憑證清單,就連那份清單一起檢查。自己架 GitLab 的單位,也要確認是否已升級到修補版。有用 Railway 的,先按它的指引輪替環境變數與私有登錄憑證;有安裝 LiteLLM 的,確認版本不是 1.107.0 並重新建置環境。由客戶自行管理的 Java 環境(例如在 OCI 虛擬機器上執行 Java),更新由客戶負責;Oracle 代管的雲端服務由 Oracle 處理服務範圍內的更新。收到警報信,還要先查自己的產品、部署方式和實際版本,才能知道要不要自行處理。

如果只是使用網站,服務暫停時先看該網站的公告。資料外洩與否要看服務方的調查和通知;資安公告的嚴重程度不能直接當作你的帳號已外洩的證據。


PHP 官方安全更新(版本與 CVE):https://www.php.net/archive/2026.php#2026-10-21-5
PHP 漏洞公告(CVE-2026-109618):https://github.com/php/php-src/security/advisories/GHSA-w8hw-w9fx-j79w
PHP 漏洞公告(CVE-2026-109619):https://github.com/php/php-src/security/advisories/GHSA-6wmf-4rv5-p3rp
紐西蘭國家資安中心 10 月 22 日通報:https://www.ncsc.govt.nz/alerts/cve-2026-109618-and-cve-2026-109619-affecting-php/
eMudhra 憑證事件(Mozilla 討論串):https://groups.google.com/a/mozilla.org/g/dev-security-policy/c/0R3XLJL6FuE/m/yRUuJMj6AAAJ
eMudhra 私鑰成因(Mozilla 漏洞紀錄):https://bugzilla.mozilla.org/show_bug.cgi?id=2083449
Go 安全公告及更新版本:https://groups.google.com/g/golang-announce/c/66pojueaQek
Go 漏洞紀錄(CVE-2026-111943):https://pkg.go.dev/vuln/GO-2026-6809
Go 修補程式(封鎖憑證的公開金鑰雜湊):https://github.com/golang/go/commit/7f86f957633ee31a1c17a1eb8452ca7a3d9bc141
Mozilla 受影響憑證清單(可對照 Go 的雜湊):https://groups.google.com/a/mozilla.org/group/dev-security-policy/attach/ebe6751f7ad1/impacted-intermediates.json?part=0.1
Node.js 10 月安全更新與十個漏洞:https://nodejs.org/en/blog/vulnerability/october-2026-security-releases
GitLab 10 月 21 日安全更新(CVE-2026-110264 與受影響版本):https://docs.gitlab.com/releases/patches/patch-release-gitlab-19-5-1-released/
composer/ca-bundle 1.6.0:https://github.com/composer/ca-bundle/releases/tag/1.6.0
composer/ca-bundle 1.4.16:https://github.com/composer/ca-bundle/releases/tag/1.4.16
Oracle 安全警報(CVE-2026-91403,Java SE / GraalVM 受影響版本):https://www.oracle.com/security-alerts/alert-cve-2026-91403.html
Oracle 修補文件(CPU426;可能需支援帳號):https://support.oracle.com/support/?documentId=CPU426
OpenJDK 10 月 21 日公告與暫時防護步驟:https://openjdk.org/groups/vulnerability/advisories/2026-10-21
Oracle 自行管理與代管責任說明:https://docs.oracle.com/en-us/iaas/Content/cloud-adoption-framework/security.htm
Railway 10 月 21 日安全事件狀態頁:https://status.railway.com/incident/QH8L8B3E
Railway 事件說明(GitGuardian 整理):https://blog.gitguardian.com/railway-october-2026-incident-environment-variables/
LiteLLM 10 月 21 日供應鏈事件官方公告:https://docs.litellm.ai/blog/security-incident-oct-21-2026
LiteLLM 事件技術分析(Socket):https://socket.dev/blog/litellm-compromise