適用對象:在自有伺服器或雲端上執行 GitLab 的管理員(自架),以及使用 Ruby 開發應用程式的開發者。本頁依據 GitLab 的修補發布公告、Ruby 的官方公告、美國國家漏洞資料庫(NVD)與 CISA 的公開資料撰寫,不說明攻擊的運作方式。
続報待ち:この記事は公式発表に合わせて更新します
截至 2026 年 10 月 25 日 08:00(JST)まだ分かっていないこと
- 可觸發此漏洞的確切條件(GitLab 只表示「在特定條件下」)
- 利用狀態是否有任何變化(公開時未有報告)
- NVD 自身的評估(分析中)
GitLab 於 10 月 21 日發布修補版本,Ruby 團隊於 10 月 23 日發布修正版本。目前沒有遭利用的報告,此漏洞也未列入 CISA 的 KEV 目錄。GitLab 表示,細節將於發布後 90 天公開。若情況有變,本頁將會更新。
今天該做什麼(自架 GitLab)
檢查版本
在 Linux 套件(Omnibus)安裝上,於執行 GitLab Rails 的節點執行 sudo gitlab-rake gitlab:env:info,版本會顯示在「GitLab information」區段。以管理員身分登入後,也可以在管理區域看到版本。若為多節點架構,請逐一檢查每個節點。
升級到同一版本線的修補版本
若你目前是 19.4.x,請升級到 19.4.3;若是 19.3.x,請升級到 19.3.6,依此類推。本站認為,同一次要版本線內的修補升級通常不需要經過升級停靠點(仍建議用 GitLab 的工具確認)。GitLab 表示,單節點執行個體應預期停機,因為 GitLab 要等到遷移完成後才會啟動。多節點執行個體可使用零停機升級流程。
若是較舊版本,先檢查升級停靠點
GitLab 定義了不可跳過的必要升級停靠點。截至 2026 年 10 月,清單包括 GitLab 18 的 18.2、18.5、18.8 與 18.11,以及 GitLab 19 的 19.2、19.5、19.8 與 19.11(在 GitLab 19 的停靠點中,19.2 與 19.5 已發布)。請在 GitLab 的升級路徑工具中輸入目前版本與目標版本,以取得必須經過的版本。GitLab 表示,必須先升級到這些版本,才能升級到之後的版本,並且在每個停靠點都要等待背景遷移完成。
若無法立即升級,限制可連線的對象
GitLab 的公告除了升級之外沒有提供其他緩解方法。在完成升級前,本站建議以防火牆或 VPN 讓 GitLab 無法從網路外部連線,並關閉新帳號註冊。這兩項措施都無法關閉漏洞,因此仍要持續推進升級。
尋找入侵痕跡
GitLab 已為自架使用者發布兩項威脅偵測(公告中「Detecting CVE-2026-110264 Exploitation Attempts」一節)。若你有記錄監控,請載入這些規則。也請檢查不明的程序、檔案、管理員帳號與外連連線。請參閱如何檢查伺服器是否遭入侵。
我會受影響嗎?快速對照表
| 你執行的版本 | CVE-2026-110264(重大) | 同一次發布中的高風險與其他漏洞 | 目標版本 |
|---|---|---|---|
| 19.5.x,低於 19.5.1 | 受影響 | 受影響 | 19.5.1 |
| 19.4.x,低於 19.4.3 | 受影響 | 受影響 | 19.4.3 |
| 19.3.x,低於 19.3.6 | 受影響 | 受影響 | 19.3.6 |
| 19.0.x 至 19.2.x | 受影響(已在 19.0.10、19.1.9、19.2.9 修復) | 僅在 19.3.6 及之後修復 | 19.3.6 或更新版本 |
| 18.11.x,低於 18.11.13 | 受影響(已在 18.11.13 修復) | 僅在 19.3.6 及之後修復 | 19.3.6 或更新版本 |
| 18.10 及更舊版本(7.0 起) | 受影響 | 視漏洞而定 | 透過升級停靠點升級到較新版本 |
| GitLab.com | 已修補 | 已修補 | 無需處理 |
| GitLab Dedicated | 自 19.3.5-internal0、19.4.2-internal0 起已修補 | 相同 | 無需處理(依 GitLab 說明) |
其他各漏洞的受影響範圍不同(例如 CVE-2026-15723 自 10.1 起,CVE-2026-112212 自 18.3 起)。確切範圍請參考 GitLab 公告中的表格。
目前版本
修補前,重大漏洞仍存在
18.11.13 至 19.2.9
重大漏洞已修復,高風險漏洞仍存在
19.3.6 / 19.4.3 / 19.5.1
本次發布的所有修補
已揭露的內容(取自 GitLab 公告)
- CVE
- CVE-2026-110264(CWE-190:整數溢位)
- 嚴重程度
- 重大,CVSS v3.1 10.0(AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H,為 GitLab 的評等)
- 問題
- 在特定條件下,編譯特製正規表示式時的整數溢位可能讓未經驗證的使用者在 GitLab 伺服器上執行任意程式碼
- 受影響範圍
- GitLab CE/EE 7.0 起,低於 18.11.13、19.0.10、19.1.9、19.2.9、19.3.6、19.4.3 與 19.5.1
- 已修補
- GitLab.com;GitLab Dedicated 自 19.3.5-internal0 與 19.4.2-internal0 起
- 通報者
- 一位外部研究人員,透過 GitLab 在 HackerOne 上的漏洞獎金計畫通報
- 利用情況
- 公告未說明;截至 10 月 25 日未列入 CISA 的 KEV 目錄
同一次發布也修復了另外 11 個漏洞,其中兩個為高風險。CVE-2026-15723(CVSS 8.2)在同時啟用 OmniAuth SAML 與 LDAP 自動連結時,可能讓已驗證的使用者接管既有的 LDAP 帳號。CVE-2026-112212(CVSS 7.5)可能讓快取的 OAuth/OIDC 探索文件遭到污染,使特定流程被送到外部伺服器。其餘為五個中風險與四個低風險。
CISA 於 10 月 21 日的 SSVC 評估列出:利用狀態為「none」,可自動化為「yes」,技術影響為「total」。在尚無遭利用報告的情況下完成升級,是最省力的因應方式(本站觀點)。
根源在於 Ruby 的正規表示式引擎:給 Ruby 開發者
10 月 23 日,Ruby 團隊發布 Ruby 4.0.9、3.4.12 與 3.3.13,修復 Ruby 正規表示式引擎(Onigmo)的錯誤。這些更新修復了與 GitLab 所指派之四個 CVE 相關的三個錯誤(CVE-2026-89078、CVE-2026-93577、CVE-2026-97229 與 CVE-2026-110264)。除 CVE-2026-110264 外,另外三個已在 GitLab 19.4.1 與 19.4.2 中修復。
Regexp.timeout 無法提供保護
根據 Ruby 的公告,只有當應用程式從攻擊者可控的字串編譯正規表示式時(Regexp.new、Regexp.union、Regexp.compile,或如 /#{input}/ 的字串插值),這些錯誤才會被觸發。只使用開發者撰寫之正規表示式的應用程式不受影響。Regexp.timeout 無法防護這些錯誤,限制模式長度也不可靠。
Ruby 3.3 目前僅提供安全性維護,但因為 GitLab 為依賴這些修補的問題指派了 CVE,3.3.13 以例外方式納入這些修補。Ruby 3.2 已於 2026 年 4 月 1 日終止支援,且沒有修補版本。
GitLab 的 Linux 套件與雲原生映像檔內含 GitLab 自己的正規表示式修補,因此 GitLab 管理員需要更新 GitLab 本身,而非伺服器上的 Ruby。若你是從原始碼安裝 GitLab,本站建議也將該 Ruby 更新到修補版本。
風險做法
- 將搜尋框或篩選器的輸入直接傳入 Regexp.new
- 執行使用者註冊為伺服器端正規表示式的模式
- 以為 Regexp.timeout 或長度限制就能確保安全
- 停留在已終止支援的 Ruby 3.2 或更舊版本
較安全的做法
- 純文字搜尋時,使用 Regexp.escape,讓輸入按字面比對
- 思考是否真的需要讓使用者撰寫正規表示式
- 若必須如此,改用其他正規表示式引擎執行,或在隔離的程序中執行(本站觀點)
- 將 Ruby 升級到 4.0.9、3.4.12 或 3.3.13 或更新版本
你所依賴的 gem 或框架是否從使用者輸入建立正規表示式,無法只從自己的程式碼判斷,因此升級 Ruby 是最可靠的修復方式。關於監控相依套件,請參閱如何使用 osv-scanner 監控相依套件的 CVE。
自架 Git 伺服器常忽略的事
自己執行 GitLab 可以避免某些意外,例如誤將儲存庫設為公開,但修補的工作也轉到你身上。這個漏洞可追溯到 7.0,因此很久以前就停止更新的伺服器,需要經過最多的升級停靠點,工作量也最大。
本站觀點:平時至少應跟上到最新必要升級停靠點的前一個停靠點。如此一來,緊急升級只需一到兩個步驟,而不是一長串的升級鏈。關於自架的取捨,請參閱自架 Git 與 GitHub:哪個比較安全。
仍不明確的事項
| 項目 | 狀態 |
|---|---|
| 此漏洞的確切條件 | 未說明(「在特定條件下」;細節將於發布後 90 天公開) |
| 利用情況 | 未說明(截至 10 月 25 日未列入 CISA 的 KEV) |
| 公開的利用程式碼 | 未說明 |
| NVD 評估 | 分析中(GitLab 的評等為 10.0) |
| Ruby 錯誤本身的 CVE | Ruby 團隊尚未申請(可能會重新評估) |
資料來源
- 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」(2026 年 10 月 21 日)— docs.gitlab.com
- Ruby,「Regexp compilation fixes related to GitLab's CVE-2026-89078, CVE-2026-93577, CVE-2026-97229 and CVE-2026-110264」(2026 年 10 月 23 日)— ruby-lang.org
- Ruby,「Ruby Maintenance Branches」— ruby-lang.org
- GitLab,「Upgrade paths」— docs.gitlab.com
- GitLab,「Maintenance Rake tasks」(gitlab:env:info)— docs.gitlab.com
- NIST NVD,「CVE-2026-110264」— nvd.nist.gov
- CISA,「Known Exploited Vulnerabilities Catalog」— cisa.gov
更新紀錄
2026-10-25:首次發布,依據 GitLab 修補發布公告、Ruby 官方公告、NVD 與 CISA 的 KEV 目錄撰寫(2026 年 10 月 23 日版本)。
延伸閱讀
- 自架的取捨:自架 Git 與 GitHub:哪個比較安全
- 排定優先順序:如何決定先修補哪些 CVE(CVSS、EPSS、KEV)
- 檢查是否遭入侵:如何檢查伺服器是否遭入侵
- 同一週的另一個執行環境修補:PHP 漏洞 CVE-2026-109618 與 CVE-2026-109619
- 名詞解釋:什麼是 RCE(遠端程式碼執行) / 什麼是 CVSS