// 威脅簡報

GitLab AI Gateway 提示範本沙箱逃逸:有 Duo Agent Platform 權限的使用者可能在閘道上執行任意指令

CVSS
9.9 CRITICAL
CISA KEV
未列入
弱點類型
CWE-1336
主題
AI 安全

PlainCVE 團隊 · 發布 2026-10-12 · 更新 2026-10-13 · 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
時間點
  • 首次公開 2026-10-02

藍隊應對手冊

確認、修補 / 緩解、應變、強化。版本符合受影響條件不等於已被入侵;檢查沒有結果也不等於安全,每一項都有能證明與不能證明的範圍。標記的步驟對應下方攻擊流程裡可以擋下攻擊的那一步。

DETECT確認我受影響嗎?有沒有入侵跡象?
  1. 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 客戶已受保護。

  2. 02官方沒有提供入侵檢查方法

    根據 The Hacker News,公告沒有說明如何判斷閘道在更新前是否已遭攻擊。PlainCVE 的建議:檢視近期由誰建立或修改了自訂 flow 設定,以及閘道主機上是否有不尋常的程序或對外連線。這些只是一般性的調查方向,不是官方偵測指標。

MITIGATE修補 / 緩解先修補;還不能修補時先擋住
  1. 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 支援。

  2. 02還不能升級:沒有公布的替代方案

    目前沒有列出可以暫時替代升級的做法。PlainCVE 的建議:在升級前暫時收緊 Duo Agent Platform 的存取權限,但這不能保證阻擋攻擊。

RESPOND應變發現入侵跡象時
  1. 01懷疑遭入侵時,把閘道當成已失守處理

    PlainCVE 的建議(我們查閱的來源沒有列出替代方案或入侵檢查方法):隔離閘道主機,從乾淨環境重新部署修補版本,並輪替閘道持有的憑證與金鑰。這是預防性做法,不代表已確認有資料外洩。

HARDEN強化長期避免同類問題
  1. 01最小權限執行 AI 閘道

    PlainCVE 的建議:閘道只給必要的系統權限、網路連線與憑證,即使指令被執行,影響也有限。

  2. 02盤點誰能建立或修改 flow

    PlainCVE 的建議:定期檢查 Duo Agent Platform 的使用者名單,移除不需要的權限。

完整修復步驟與說明
  1. 先確認是不是自架。 使用 GitLab 代管閘道的客戶不需動作,GitLab 已部署修補。
  2. 依目前版本線選擇目標版本:
目前版本升級到
18.1.6 到 19.1.x最低修補版是 19.2.4(這些版本線沒有列出修補版;相容性見下方第 3 點)
19.2.x19.2.4 以上
19.3.x19.3.2 以上
19.4.019.4.1 以上
  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 支援。
  2. 沒有暫時替代方案。 根據 The Hacker News,目前沒有列出無法升級時的緩解方式,公告也沒有提供判斷是否已遭攻擊的方法。藍隊手冊中的權限收緊與調查方向都是 PlainCVE 的建議,不是官方指引。
  3. GitLab 表示發布公告前已主動聯繫自架 AI Gateway 的客戶;若你是這類客戶,也可以回頭查看是否收過這份通知。

攻擊流程

從左到右是攻擊發生的順序。藍色盾牌代表這一步可以被擋下,越早擋下越好。點圖示可看細節。

由上到下是攻擊發生的順序。藍色盾牌代表這一步可以被擋下,越早擋下越好。點圖示可看細節。

GitLab AI Gateway 提示範本沙箱逃逸:有 Duo Agent Platform 權限的使用者可能在閘道上執行任意指令: 1. 已登入且有 Duo Agent Platform 權限的使用者 → 2. 送出特製的 flow 設定 → 3. 提示範本的特殊元素未妥善中和 → 4. 逃出提示範本沙箱 → 5. 在 AI Gateway 上執行任意指令CVE-2026-90970 · GitLab AI Gateway 提示範本沙箱逃逸:有 Duo Agent Platform 權限的使用者可能在閘道上執行任意指令攻擊者你的系統已登入且有 Duo Agent Platform 權限的使用者 — 攻擊者必須是已認證的使用者,並且能使用 Duo Agent Platform。這不是匿名就能發動的攻擊。 1已登入且有 DuoAgent Platform 權限的使用者送出特製的 flow 設定 — GitLab 公告說弱點在自訂 flow 的提示範本,攻擊者透過「特製的 flow 設定」發動;特製內容是什麼,GitLab 沒有公開。 2送出特製的 flow 設定提示範本的特殊元素未妥善中和 — CVE 紀錄把它歸為 CWE-1336(範本引擎中的特殊元素未妥善中和)。修補提交(0141f228、449740bc、caec81e3;該頁含攻擊程式,本站不連結)的提交訊息顯示修補是封鎖 Jinja 範本中對非 namespace 物件的 block-set 寫入;具體機制與「特定條件」GitLab 沒有說明。 3提示範本的特殊元素未妥善中和逃出提示範本沙箱 — 範本原本被限制在沙箱(隔離環境)裡執行,這一步突破了限制。 4逃出提示範本沙箱在 AI Gateway 上執行任意指令 — 攻擊者可以在閘道主機上執行自己想要的指令。 5在 AI Gateway 上執行任意指令攻擊路徑可在此擋下PlainCVE · plaincve.date/vulns/cve-2026-90970-gitlab-ai-gateway-template-sandbox-escape · CC BY 4.0
GitLab AI Gateway 提示範本沙箱逃逸:有 Duo Agent Platform 權限的使用者可能在閘道上執行任意指令: 1. 已登入且有 Duo Agent Platform 權限的使用者 → 2. 送出特製的 flow 設定 → 3. 提示範本的特殊元素未妥善中和 → 4. 逃出提示範本沙箱 → 5. 在 AI Gateway 上執行任意指令CVE-2026-90970 · GitLab AI Gateway 提示範本沙箱逃逸:有 Duo Agent Platform 權限的使用者可能在閘道上執行任意指令已登入且有 Duo Agent Platform 權限的使用者 — 攻擊者必須是已認證的使用者,並且能使用 Duo Agent Platform。這不是匿名就能發動的攻擊。 1攻擊者已登入且有 Duo Agent Platform 權限的使用者送出特製的 flow 設定 — GitLab 公告說弱點在自訂 flow 的提示範本,攻擊者透過「特製的 flow 設定」發動;特製內容是什麼,GitLab 沒有公開。 2攻擊者送出特製的 flow 設定提示範本的特殊元素未妥善中和 — CVE 紀錄把它歸為 CWE-1336(範本引擎中的特殊元素未妥善中和)。修補提交(0141f228、449740bc、caec81e3;該頁含攻擊程式,本站不連結)的提交訊息顯示修補是封鎖 Jinja 範本中對非 namespace 物件的 block-set 寫入;具體機制與「特定條件」GitLab 沒有說明。 3你的系統提示範本的特殊元素未妥善中和逃出提示範本沙箱 — 範本原本被限制在沙箱(隔離環境)裡執行,這一步突破了限制。 4你的系統逃出提示範本沙箱在 AI Gateway 上執行任意指令 — 攻擊者可以在閘道主機上執行自己想要的指令。 5攻擊者在 AI Gateway 上執行任意指令攻擊路徑可在此擋下PlainCVE · CC BY 4.0plaincve.date/vulns/cve-2026-90970-gitlab-ai-gateway-template-sandbox-escape
圖片可自由用於報導與教學,採 CC BY 4.0,圖上已附出處。
  1. 攻擊者

    已登入且有 Duo Agent Platform 權限的使用者

    攻擊者必須是已認證的使用者,並且能使用 Duo Agent Platform。這不是匿名就能發動的攻擊。

    防禦: 只把 Duo Agent Platform 權限開給需要的人(PlainCVE 的建議;它只能縮小範圍,不能取代修補)。

  2. 攻擊者

    送出特製的 flow 設定

    GitLab 公告說弱點在自訂 flow 的提示範本,攻擊者透過「特製的 flow 設定」發動;特製內容是什麼,GitLab 沒有公開。

  3. 你的系統

    提示範本的特殊元素未妥善中和

    CVE 紀錄把它歸為 CWE-1336(範本引擎中的特殊元素未妥善中和)。修補提交(0141f228、449740bc、caec81e3;該頁含攻擊程式,本站不連結)的提交訊息顯示修補是封鎖 Jinja 範本中對非 namespace 物件的 block-set 寫入;具體機制與「特定條件」GitLab 沒有說明。

    防禦: 升級到 19.2.4、19.3.2、19.4.1 或更新版本。

  4. 你的系統

    逃出提示範本沙箱

    範本原本被限制在沙箱(隔離環境)裡執行,這一步突破了限制。

    防禦: 升級到修補版本。

  5. 攻擊者

    在 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-14CVE 編號保留
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-02CVE 紀錄公開(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 · 審稿規則

驗證紀錄只寫環境與結果,不公開重現步驟或可攻擊他人系統的程式。詳見 政策.

來源

  1. 安全公告GitLab AI Gateway Critical Patch Release: 19.2.4, 19.3.2, and 19.4.1 · GitLab · 查閱 2026-10-07
  2. 修補 commit / 版本ai-assist self-hosted-v19 tags (GitLab API) · GitLab · 查閱 2026-10-11
  3. CVE / NVD / OSVCVE-2026-90970 record (CVE Services API) · CVE Program, 2026-10-02 · 查閱 2026-10-07
  4. 其他OSV entry for CVE-2026-90970 · OSV · 查閱 2026-10-07
  5. 其他GitHub Advisory Database: CVE-2026-90970 · GitHub · 查閱 2026-10-07
  6. 新聞報導GitLab patches critical self-hosted AI Gateway flaw · The Hacker News · 查閱 2026-10-07
  7. 新聞報導CVE-2026-90970: critical GitLab AI Gateway flaw fixed · Security Affairs · 查閱 2026-10-07
  8. 新聞報導GitLab AI Gateway CVE-2026-90970: Duo Agent sandbox escape · ThreatFrontier · 查閱 2026-10-07
  9. 其他Install the GitLab AI Gateway · GitLab · 查閱 2026-10-11
  10. 其他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 設定的權限」這個條件,官方沒有這樣說。

可引用的一句話

範本本該只是填空的表格,一旦它能被當成程式執行,能影響範本的使用者可能藉此在閘道上執行指令。

圖片

下載分享圖(PNG) · 攻擊流程圖(可下載)

引用時請標示「PlainCVE」並附上本頁連結。 完整引用格式見下方「如何引用本頁」。有事實錯誤請回報.

如何引用本頁

本文採 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}
}