CISA 於美國時間2026年10月29日,把 GitLab 嚴重漏洞 CVE-2026-97229(CVSS 10.0)加入「已知被利用漏洞」(KEV)目錄。如貴公司、開發團隊或供應商自行架設 GitLab,請今天檢查版本:部分安裝方式即使升級了 GitLab,漏洞仍未修補。
事件經過
GitLab 於2026年10月12日發布修補。根據 GitLab 公告,漏洞源於 CI/CD 設定所用的正規表示式編譯器出現整數溢位,未經驗證的用戶在特定條件下可借特製的正規表示式,在 GitLab 伺服器上執行任意程式碼。
- 受影響版本:自行管理(self-managed)的 GitLab 社群版(CE)及企業版(EE),包括19.2.8之前的19.2、19.3.5之前的19.3,以及19.4.2之前的19.4。
- 不受影響:GitLab.com 及 GitLab Dedicated。GitLab 表示兩者在公告發布前已完成修補。
- 注意:19.3.4 並未包含修補,19.3 系列的修補版本是19.3.5。
問題的根源在 Ruby 內置的正規表示式引擎 Onigmo。GitLab 的做法是修補其官方安裝套件及容器映像內附帶的 Ruby;Ruby 官方則於10月23日在 Ruby 3.3.13、3.4.12 及 4.0.9 推出修補。
真實攻擊案例:Alpine Linux
Alpine Linux 於10月28日公布,一個新註冊帳戶在10月20日及21日提交特製 CI 設定,令 GitLab 工作程序崩潰八次。Alpine 先誤升級至19.3.4,其後升級至19.3.6 仍有漏洞,因為其容器映像用的是標準 Ruby,而非 GitLab 修補過的 Ruby。Alpine 未發現攻擊成功的證據,但無法排除,並指成功的攻擊「不會造成崩潰,亦不會在網頁日誌留下痕跡」。Alpine 最終重建伺服器、重設所有密碼,並更換 GitLab 密鑰。
保安公司 Rapid7 在實驗環境重現了程式碼執行,前提是攻擊者先把惡意的 .gitlab-ci.yml 提交到公開項目;如伺服器容許任何人註冊及建立項目,這個條件很容易達到。
為甚麼與香港中小企有關
不少網站設計公司、初創企業及 IT 團隊在雲端伺服器架設 GitLab,管理原始碼及 CI/CD 流程。Alpine 指出,攻擊一旦成功,可能外洩 CI/CD 變數、Runner 權杖、Webhook 及整合服務憑證、雙重驗證(2FA)密鑰和私人儲存庫。CI/CD 變數常存有雲端金鑰及部署密碼,GitLab 失守便可能波及正式網站及雲端帳戶。
現在應該怎樣做
- 確認是否使用自行管理的 GitLab。如只使用 GitLab.com,這個漏洞毋須處理。
- 升級至所用版本系列的最新修補版本。這個漏洞的最低修補版本為19.4.2、19.3.5 及 19.2.8;截至本文撰寫時最新為19.5.3、19.4.5、19.3.7、19.2.10,並已修補影響範圍更廣的另一嚴重漏洞 CVE-2026-110264。單一伺服器升級時會短暫停機。
- 沒有使用官方安裝套件的,要檢查 Ruby。從原始碼安裝或使用自建容器映像的,Ruby 須升級至3.3.13、3.4.12、4.0.9 或更新版本。
- 修補前先減少暴露。關閉公開註冊,禁止不受信任的用戶建立或寫入公開項目,限制匿名存取,並考慮只容許經 VPN 或指定 IP 連接。
- 留意異常跡象。參考 GitLab 的偵測規則(例如「Onigmo native worker crash」),並檢查10月中以來有沒有不明新帳戶、工作程序反覆崩潰或 502 錯誤。
- 曾經暴露的,應更換密鑰。考慮更換 CI/CD 變數、Runner 權杖、部署金鑰、存取權杖及存放在 GitLab 的雲端憑證,並要求所有用戶啟用多重身份驗證(MFA)。
- 懷疑受到入侵,應保留日誌並通報 HKCERT。
定期而經過測試的修補管理流程,是應對這類漏洞的最佳方法。我們的網絡安全及合規團隊可協助評估風險,託管支援服務亦可負責日常修補及監察。
常見問題
我們用的是 GitLab.com,需要做甚麼嗎?
就這個漏洞而言不需要,GitLab.com 及 GitLab Dedicated 已完成修補。自行架設的 GitLab Runner 是另一元件,GitLab 最新公告亦要求 Runner 用戶因另一問題更新。
已經升級了 GitLab,是否就安全?
未必。19.4.2、19.3.5、19.2.8 只修補這個漏洞;另一嚴重漏洞 CVE-2026-110264(CVSS 10.0)要到19.5.1、19.4.3、19.3.6、19.2.9 才修補,所以應升級至最新修補版本(撰寫時為19.5.3、19.4.5、19.3.7、19.2.10)。官方 Linux 安裝套件及映像已包括修補過的 Ruby;自行安裝 Ruby 的,要另外檢查 Ruby 版本。Alpine 的經歷說明,單看 GitLab 版本號碼可能誤判。
有香港公司受到攻擊嗎?
我們未見有關香港受害者的公開報告。CISA 的列表只確認漏洞已被利用,沒有指明攻擊對象。
其他 Ruby 應用程式會受影響嗎?
根據 Ruby 官方說明,只有把攻擊者可控制的輸入編譯成正規表示式的應用程式才受影響,但更新 Ruby 仍然是穩妥的做法。
資料來源
- CISA:〈CISA Adds Two Known Exploited Vulnerabilities to Catalog〉,2026年10月29日
- CISA 已知被利用漏洞(KEV)目錄(CVE-2026-97229)
- GitLab:〈GitLab Critical Patch Release: 19.4.2, 19.3.5, 19.2.8〉
- GitLab:〈GitLab Critical Patch Release: 19.5.1, 19.4.3, 19.3.6, 19.2.9, 19.1.9, 19.0.10, 18.11.13〉
- GitLab:〈GitLab Patch Release and Security Update: 19.5.3, 19.4.5, 19.3.7, 19.2.10, 19.1.10, 19.0.11, 18.11.14〉
- Ruby:〈Regexp compilation fixes related to GitLab's CVE-2026-89078, CVE-2026-93577, CVE-2026-97229 and CVE-2026-110264〉,2026年10月23日
- Alpine Linux:〈GitLab security incident: attempted exploitation of CVE-2026-97229〉,2026年10月28日
- Rapid7:〈CVE-2026-97229: Critical Unauthenticated Remote Code Execution in GitLab〉
- HKCERT:〈GitLab 多個漏洞〉保安公告,2026年10月22日
