// 威脅簡報
GitLab AI Gateway 提示範本沙箱逃逸:有 Duo Agent Platform 權限的使用者可能在閘道上執行任意指令
- CVSS
- 9.9 CRITICAL
- CISA KEV
- 未列入
- 弱點類型
- CWE-1336
- 主題
- AI 安全
AI 審稿 2026-10-13(未經人工)指令測試:未提供漏洞重現:未進行驗證紀錄 ↓
GitLab AI Gateway 的自訂 flow 提示範本沒有妥善處理特殊元素,有 Duo Agent Platform 權限的已登入使用者在特定條件下可能逃出沙箱,在閘道上執行任意指令。
| 誰會中 | 自行架設(self-hosted)GitLab AI Gateway 的組織,版本落在 18.1.6 到 19.2.4 之前、19.3 到 19.3.2 之前,或 19.4 到 19.4.1 之前。使用 GitLab 代管閘道的 GitLab.com、GitLab Dedicated 與 Self-Managed 客戶不需處理。 |
|---|---|
| 後果 | 在特定條件下(GitLab 沒有說明是哪些條件),攻擊者能逃出提示範本的沙箱,在 AI Gateway 上執行任意指令。GitLab 評為「嚴重」,GitLab 公告給出的 CVSS 3.1 為 9.9。 |
| 現在該做什麼 | 把自架的 AI Gateway 升級到 19.2.4、19.3.2、19.4.1 或更新版本。18.1.6 到 19.1 的版本線沒有列出修補版,最低修補版是 19.2.4;但 GitLab 的 AI Gateway 安裝指南要求使用與 GitLab 主版本、小版本(vX.Y)對應的 self-hosted-vX.Y.*-ee 閘道映像,而公告沒說 19.2.4 閘道能不能搭配 GitLab 19.1 以前的版本。ThreatFrontier 的建議:可能要先把 GitLab 本體升到 19.2 以上,使用版本不對應的閘道前先詢問 GitLab 支援(這不是 GitLab 的官方建議)。目前沒有公布的暫時緩解方式。 |
| 受影響版本 | 18.1.6 起到 19.2.4 之前、19.3 到 19.3.2 之前、19.4 到 19.4.1 之前 |
| 修好的版本 | 19.2.4、19.3.2、19.4.1 以上;GitLab 代管的閘道已部署修補 |
| CVSS 向量 | 顯示完整向量CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H |
| 時間點 |
|
藍隊應對手冊
確認、修補 / 緩解、應變、強化。版本符合受影響條件不等於已被入侵;檢查沒有結果也不等於安全,每一項都有能證明與不能證明的範圍。標記的步驟對應下方攻擊流程裡可以擋下攻擊的那一步。
- 01確認你是否自架 AI Gateway 以及版本
只有自架的 AI Gateway 需要處理。版本落在 18.1.6 到 19.2.4 之前、19.3 到 19.3.2 之前、19.4 到 19.4.1 之前就受影響。使用 GitLab 代管閘道的 GitLab.com、Dedicated 與 Self-Managed 客戶已受保護。
- 02官方沒有提供入侵檢查方法
根據 The Hacker News,公告沒有說明如何判斷閘道在更新前是否已遭攻擊。PlainCVE 的建議:檢視近期由誰建立或修改了自訂 flow 設定,以及閘道主機上是否有不尋常的程序或對外連線。這些只是一般性的調查方向,不是官方偵測指標。
- 01升級到 19.2.4、19.3.2、19.4.1 或更新版本
這是官方釋出的修補版本。18.1.6 到 19.1 的版本線沒有列出修補版,最低修補版是 19.2.4(The Hacker News 的整理)。相容性提醒:GitLab 的 AI Gateway 安裝指南(https://docs.gitlab.com/install/install_ai_gateway/)要求使用與 GitLab 主版本、小版本(vX.Y)對應的 self-hosted-vX.Y.*-ee 閘道映像,公告沒說 19.2.4 閘道能不能搭配 GitLab 19.1 以前的版本。ThreatFrontier 的建議(不是 GitLab 的官方建議):可能要先把 GitLab 本體升到 19.2 以上,並在使用版本不對應的閘道前先詢問 GitLab 支援。
- 02還不能升級:沒有公布的替代方案
目前沒有列出可以暫時替代升級的做法。PlainCVE 的建議:在升級前暫時收緊 Duo Agent Platform 的存取權限,但這不能保證阻擋攻擊。
- 01懷疑遭入侵時,把閘道當成已失守處理
PlainCVE 的建議(我們查閱的來源沒有列出替代方案或入侵檢查方法):隔離閘道主機,從乾淨環境重新部署修補版本,並輪替閘道持有的憑證與金鑰。這是預防性做法,不代表已確認有資料外洩。
完整修復步驟與說明
- 先確認是不是自架。 使用 GitLab 代管閘道的客戶不需動作,GitLab 已部署修補。
- 依目前版本線選擇目標版本:
| 目前版本 | 升級到 |
|---|---|
| 18.1.6 到 19.1.x | 最低修補版是 19.2.4(這些版本線沒有列出修補版;相容性見下方第 3 點) |
| 19.2.x | 19.2.4 以上 |
| 19.3.x | 19.3.2 以上 |
| 19.4.0 | 19.4.1 以上 |
- 18.1.6 到 19.1.x 先確認相容性。 GitLab 的 AI Gateway 安裝指南寫明:GitLab 版本是 vX.Y.-ee 時,要使用最新的 self-hosted-vX.Y.-ee 閘道映像;而公告沒有說 19.2.4 閘道能不能搭配 GitLab 19.1 或更舊的版本,也沒說舊版本線會不會有修補(The Hacker News 也有相同的整理)。ThreatFrontier 的建議(不是 GitLab 的官方建議):可能需要先把 GitLab 本體升到 19.2 以上,並在使用版本不對應的閘道前先詢問 GitLab 支援。
- 沒有暫時替代方案。 根據 The Hacker News,目前沒有列出無法升級時的緩解方式,公告也沒有提供判斷是否已遭攻擊的方法。藍隊手冊中的權限收緊與調查方向都是 PlainCVE 的建議,不是官方指引。
- GitLab 表示發布公告前已主動聯繫自架 AI Gateway 的客戶;若你是這類客戶,也可以回頭查看是否收過這份通知。
攻擊流程
從左到右是攻擊發生的順序。藍色盾牌代表這一步可以被擋下,越早擋下越好。點圖示可看細節。
由上到下是攻擊發生的順序。藍色盾牌代表這一步可以被擋下,越早擋下越好。點圖示可看細節。
- 攻擊者
已登入且有 Duo Agent Platform 權限的使用者
攻擊者必須是已認證的使用者,並且能使用 Duo Agent Platform。這不是匿名就能發動的攻擊。
防禦: 只把 Duo Agent Platform 權限開給需要的人(PlainCVE 的建議;它只能縮小範圍,不能取代修補)。
- 攻擊者
送出特製的 flow 設定
GitLab 公告說弱點在自訂 flow 的提示範本,攻擊者透過「特製的 flow 設定」發動;特製內容是什麼,GitLab 沒有公開。
- 你的系統
提示範本的特殊元素未妥善中和
CVE 紀錄把它歸為 CWE-1336(範本引擎中的特殊元素未妥善中和)。修補提交(0141f228、449740bc、caec81e3;該頁含攻擊程式,本站不連結)的提交訊息顯示修補是封鎖 Jinja 範本中對非 namespace 物件的 block-set 寫入;具體機制與「特定條件」GitLab 沒有說明。
防禦: 升級到 19.2.4、19.3.2、19.4.1 或更新版本。
- 你的系統
逃出提示範本沙箱
範本原本被限制在沙箱(隔離環境)裡執行,這一步突破了限制。
防禦: 升級到修補版本。
- 攻擊者
在 AI Gateway 上執行任意指令
攻擊者可以在閘道主機上執行自己想要的指令。
防禦: 讓閘道以最小權限執行、限制它能連到的網路與憑證(PlainCVE 的建議)。
影響範圍
| 條件 | 是否受影響 |
|---|---|
| 自架 AI Gateway,版本 18.1.6 起到 19.1 版本線 | 受影響,而且這些版本線沒有列出修補版,最低修補版是 19.2.4(相容性見「修復建議」) |
| 自架 AI Gateway,19.2.x 且低於 19.2.4 | 受影響 |
| 自架 AI Gateway,19.3.x 且低於 19.3.2 | 受影響 |
| 自架 AI Gateway,19.4.0 | 受影響 |
| 自架 AI Gateway,19.2.4、19.3.2、19.4.1 以上 | 已修補 |
| GitLab.com、GitLab Dedicated,或使用 GitLab 代管閘道的 Self-Managed | 官方表示已受保護,不需處理 |
攻擊者必須是已登入的使用者,並且有 Duo Agent Platform(GitLab 的 AI 代理功能)的存取權。GitLab 也說只有「在特定條件下」才會發生,但沒有說明是哪些條件。
18.1.6 只是公告列出的最早受影響版本;GitLab 沒有說問題是不是從這一版開始出現。
原理
AI Gateway 是 GitLab 與 AI 模型之間的中介服務。使用者可以在 Duo Agent Platform 中定義自訂的 flow(一連串 AI 代理步驟),flow 裡會用到提示範本:由範本引擎把佔位符號換成實際內容。
CVE 紀錄把這個漏洞歸為 CWE-1336(範本引擎中的特殊元素未妥善中和),這一類弱點指的是範本引擎沒有妥善處理輸入裡的特殊元素。GitLab 說提示範本有沙箱(限制能做什麼的隔離環境),但在特定條件下(GitLab 未說明),已登入、有 Duo Agent Platform 權限的使用者能用特製的 flow 設定逃出沙箱,最後在 AI Gateway 上執行任意指令。特製內容具體如何被範本引擎處理,GitLab 沒有說明。
GitLab 沒有另外發布技術說明。修補版本 19.2.4、19.3.2、19.4.1 以 GitLab 公告與 CVE 紀錄為準。OSV 把修補版本對應到 ai-assist 程式庫中的三個提交:0141f228(tag self-hosted-v19.2.4-ee)、449740bc(19.3.2)、caec81e3(19.4.1)(這些提交頁含攻擊程式,本站不連結)。依 ai-assist 的 tag 清單(GitLab API),這三個提交分別合併自 security-fix/jinja-nsref-assignblock-19-2-ee、19-3-ee、19-4-ee 分支,提交訊息顯示修補是封鎖 Jinja 範本中對非 namespace 物件的 block-set 寫入。下面的程式碼只是這一類弱點的概念示意,不是 GitLab 的程式碼。
有問題的思路(概念示意):
展開程式碼範例(python)
# 把使用者提供的內容直接當成範本來編譯與執行
template = engine.from_string(user_flow_prompt)
output = template.render(context)較安全的思路(概念示意):
展開程式碼範例(python)
# 範本由系統固定;使用者內容只當成資料填入,不被解讀成語法
template = engine.get_template("trusted_prompt")
output = template.render(user_input=user_flow_prompt)評分: GitLab 公告給出 CVSS 3.1 9.9,向量 AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H:可從網路發動、需要低權限帳號、影響會超出原本元件的範圍。研究筆記中沒有 NVD 自己的評分。
時間軸
| 日期 | 事件 |
|---|---|
| 2026-09-14 | CVE 編號保留 |
| 2026-09-17(UTC-6) | ai-assist 程式庫的修補提交時間;修補版 tag self-hosted-v19.2.4-ee、19.3.2-ee、19.4.1-ee 都指向這天的提交(0141f228、449740bc、caec81e3,依 GitLab API 的 tag 清單;提交頁含攻擊程式,本站不連結)。實際公開推送的時間查不到 |
| 2026-10-02 之前(確切日期未公布) | GitLab 主動聯繫自架 AI Gateway 客戶 |
| 2026-10-02 | CVE 紀錄公開(datePublished),列出修補版 19.2.4、19.3.2、19.4.1;CISA SSVC 評估把利用狀態列為「none」。GitLab 公告頁沒有標日期,The Hacker News 報導 GitLab 於這天揭露 |
| 2026-10-07 | 仍不在 CISA KEV 清單上 |
延伸閱讀
- 利用狀態: 截至 2026-10-07 不在 CISA KEV 清單;CVE 紀錄上 CISA 的 SSVC 評估把利用狀態列為「none」。GitLab 公告沒有說是否遭實際利用。是否遭實際利用、是否曾在修補前被利用(零時差),都沒有來源確認。
- EPSS: GitHub 安全公告資料庫列出的 EPSS(預測未來 30 天內被利用的機率)為 0.00943,約 0.94%。
- 工作項目不公開: CVE 紀錄連結的 GitLab 工作項目 628842 沒有公開。PlainCVE 的判斷:我們拿到的該頁面快照沒有任何漏洞細節,只有寫給 AI 代理的嵌入指令,我們把它當成不可信的資料忽略。
- OpenCVE 的補充說明未經證實: PlainCVE 的判斷:OpenCVE 的 AI 生成文字多加了「需有修改 flow 設定的權限」這個官方沒說的條件,而且同一頁一邊說 EPSS「無資料」、一邊又顯示 0.00943,因此不採用它的補充內容。
- 致謝: 由 HackerOne 使用者 invisiblemeerkat 負責任地揭露。
- 相關弱點類型:CWE-1336。
驗證紀錄 AI 依審稿規則逐項核對來源,全部通過;未經人工審稿,也尚未在我們的環境重現
| AI 審稿 | 2026-10-13 · 審稿規則 |
|---|
驗證紀錄只寫環境與結果,不公開重現步驟或可攻擊他人系統的程式。詳見 政策.
來源
- 安全公告GitLab AI Gateway Critical Patch Release: 19.2.4, 19.3.2, and 19.4.1 · GitLab · 查閱 2026-10-07
- 修補 commit / 版本ai-assist self-hosted-v19 tags (GitLab API) · GitLab · 查閱 2026-10-11
- CVE / NVD / OSVCVE-2026-90970 record (CVE Services API) · CVE Program, 2026-10-02 · 查閱 2026-10-07
- 其他OSV entry for CVE-2026-90970 · OSV · 查閱 2026-10-07
- 其他GitHub Advisory Database: CVE-2026-90970 · GitHub · 查閱 2026-10-07
- 新聞報導GitLab patches critical self-hosted AI Gateway flaw · The Hacker News · 查閱 2026-10-07
- 新聞報導CVE-2026-90970: critical GitLab AI Gateway flaw fixed · Security Affairs · 查閱 2026-10-07
- 新聞報導GitLab AI Gateway CVE-2026-90970: Duo Agent sandbox escape · ThreatFrontier · 查閱 2026-10-07
- 其他Install the GitLab AI Gateway · GitLab · 查閱 2026-10-11
- 其他OpenCVE: CVE-2026-90970 · OpenCVE · 查閱 2026-10-07
媒體簡報
一句話
GitLab 於 2026 年 10 月 2 日公開 CVE-2026-90970,並公告 AI Gateway 的嚴重修補版本 19.2.4、19.3.2 與 19.4.1(修補版 tag 所指的提交時間為 2026 年 9 月 17 日,實際公開推送時間不明)。在特定條件下,有 Duo Agent Platform 權限的已登入使用者可透過特製的 flow 設定逃出提示範本沙箱,在 AI Gateway 上執行任意指令。只有自架 AI Gateway 的客戶需要升級;GitLab 代管的閘道已完成修補。截至 2026 年 10 月 7 日,這個漏洞不在 CISA 已知遭利用漏洞清單上。
關鍵數字
- 嚴重度
- CVSS 3.1 9.9(GitLab 公告),GitLab 評為「嚴重」 docs.gitlab.com
- 修補版本
- 19.2.4、19.3.2、19.4.1 docs.gitlab.com
- CVE 公開
- 2026-10-02 cveawg.mitre.org
- 弱點類型
- CWE-1336(範本引擎特殊元素未中和) cveawg.mitre.org
- 回報者
- HackerOne 使用者 invisiblemeerkat docs.gitlab.com
已確認
- 在特定條件下,有 Duo Agent Platform 權限的已登入使用者可逃出提示範本沙箱,在 AI Gateway 上執行任意指令(GitLab 公告)。
- 修補版本為 19.2.4、19.3.2、19.4.1;GitLab 代管的閘道已部署修補。
- 截至 2026-10-07 不在 CISA KEV 清單上;CVE 紀錄上 CISA 的 SSVC 評估把利用狀態列為「none」。
尚未確認 / 說法不一
- 是否已遭實際利用、是否曾在修補前被利用,沒有任何來源說明。
- 「特定條件」具體是什麼,GitLab 沒有說明。
- 漏洞從哪個版本開始存在不明;18.1.6 只是列出的最早受影響版本。
- OpenCVE 的 AI 生成說明多加了「需有修改 flow 設定的權限」這個條件,官方沒有這樣說。
可引用的一句話
範本本該只是填空的表格,一旦它能被當成程式執行,能影響範本的使用者可能藉此在閘道上執行指令。
圖片
引用時請標示「PlainCVE」並附上本頁連結。 完整引用格式見下方「如何引用本頁」。有事實錯誤請回報.
GitLab AI Gateway 提示範本沙箱逃逸:有 Duo Agent Platform 權限的使用者可能在閘道上執行任意指令 GitLab 於 2026 年 10 月 2 日公開 CVE-2026-90970,並公告 AI Gateway 的嚴重修補版本 19.2.4、19.3.2 與 19.4.1(修補版 tag 所指的提交時間為 2026 年 9 月 17 日,實際公開推送時間不明)。在特定條件下,有 Duo Agent Platform 權限的已登入使用者可透過特製的 flow 設定逃出提示範本沙箱,在 AI Gateway 上執行任意指令。只有自架 AI Gateway 的客戶需要升級;GitLab 代管的閘道已完成修補。截至 2026 年 10 月 7 日,這個漏洞不在 CISA 已知遭利用漏洞清單上。 關鍵數字: - 嚴重度:CVSS 3.1 9.9(GitLab 公告),GitLab 評為「嚴重」(https://docs.gitlab.com/releases/patches/other-patches/patch-release-gitlab-ai-gateway-19-4-1-released) - 修補版本:19.2.4、19.3.2、19.4.1(https://docs.gitlab.com/releases/patches/other-patches/patch-release-gitlab-ai-gateway-19-4-1-released) - CVE 公開:2026-10-02(https://cveawg.mitre.org/api/cve/CVE-2026-90970) - 弱點類型:CWE-1336(範本引擎特殊元素未中和)(https://cveawg.mitre.org/api/cve/CVE-2026-90970) - 回報者:HackerOne 使用者 invisiblemeerkat(https://docs.gitlab.com/releases/patches/other-patches/patch-release-gitlab-ai-gateway-19-4-1-released) 已確認: - 在特定條件下,有 Duo Agent Platform 權限的已登入使用者可逃出提示範本沙箱,在 AI Gateway 上執行任意指令(GitLab 公告)。 - 修補版本為 19.2.4、19.3.2、19.4.1;GitLab 代管的閘道已部署修補。 - 截至 2026-10-07 不在 CISA KEV 清單上;CVE 紀錄上 CISA 的 SSVC 評估把利用狀態列為「none」。 尚未確認 / 說法不一: - 是否已遭實際利用、是否曾在修補前被利用,沒有任何來源說明。 - 「特定條件」具體是什麼,GitLab 沒有說明。 - 漏洞從哪個版本開始存在不明;18.1.6 只是列出的最早受影響版本。 - OpenCVE 的 AI 生成說明多加了「需有修改 flow 設定的權限」這個條件,官方沒有這樣說。 「範本本該只是填空的表格,一旦它能被當成程式執行,能影響範本的使用者可能藉此在閘道上執行指令。」— PlainCVE https://plaincve.date/vulns/cve-2026-90970-gitlab-ai-gateway-template-sandbox-escape
如何引用本頁
本文採 CC BY 4.0,轉載請保留署名與連結。
PlainCVE 團隊(2026)。《GitLab AI Gateway 提示範本沙箱逃逸:有 Duo Agent Platform 權限的使用者可能在閘道上執行任意指令》。PlainCVE。https://plaincve.date/vulns/cve-2026-90970-gitlab-ai-gateway-template-sandbox-escape(查閱日期:YYYY-MM-DD)BibTeX
@misc{cve202690970gitlabaigatewaytemplatesandboxescape2026,
title = {GitLab AI Gateway 提示範本沙箱逃逸:有 Duo Agent Platform 權限的使用者可能在閘道上執行任意指令},
author = {PlainCVE 團隊},
year = {2026},
howpublished = {PlainCVE},
url = {https://plaincve.date/vulns/cve-2026-90970-gitlab-ai-gateway-template-sandbox-escape},
note = {更新於 2026-10-13}
}