// 威脅簡報

Continue CLI Bash 權限規則繞過:在已允許的指令後面串接,就能執行沒被核准的指令

CVSS
7.7 HIGH
CISA KEV
未列入
弱點類型
CWE-863

PlainCVE 團隊 · 發布 2026-10-19 · AI 輔助 · 媒體簡報 ↓

AI 審稿 2026-10-19(未經人工)指令測試:未提供漏洞重現:未進行驗證紀錄 ↓

Continue CLI 1.5.47 以前(含)的版本把 Bash 允許規則套用在整串指令上,被植入指示的 AI 代理可在已核准指令後串接其他指令並直接執行。

誰會中使用 npm 套件 @continuedev/cli 1.5.47 以前(含)的開發者,而且權限設定中存在 Bash 前綴允許規則(例如在核准畫面選擇「Continue + don't ask again」時留下的,或自己設定的;單次按「Continue」不會留下規則)。
後果如果代理讀到被植入指示的程式庫檔案或網頁,沒被核准的指令可能在不跳出確認的情況下,以執行代理的使用者權限執行。
現在該做什麼目前沒有修補版本:npm 上的最新版 1.5.47 本身就在受影響範圍內。PlainCVE 建議移除寬鬆的 Bash 前綴允許規則,並避免在不受信任的環境或以高權限執行代理。
受影響版本1.5.47 以前(含)的所有版本
修好的版本沒有修補版本:npm 上的最新版 1.5.47 本身就在受影響範圍內(README 提到的 2.0.0 在 npm 上查不到)
CVSS 向量
顯示完整向量CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
時間點
  • 首次公開 2026-09-17

藍隊應對手冊

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

DETECT確認我受影響嗎?有沒有入侵跡象?
  1. 01確認是否安裝受影響版本

    在安裝 Continue CLI 的電腦上用終端機執行;如果是裝在專案內,到專案資料夾執行並拿掉 -g。@continuedev/cli 1.5.47 以前(含)都在 CVE 的受影響範圍內,而 1.5.47 就是 npm 上的最新版。

    唯讀查詢
    npm ls -g @continuedev/cli
  2. 02檢查有沒有 Bash 前綴允許規則

    必須存在 Bash(名稱*) 這類允許規則,繞過才成立。檢查你權限設定中所有 Bash(名稱*) 這類允許規則,不論是在核准畫面選擇「Continue + don't ask again」時留下的,還是自己設定的。

MITIGATE修補 / 緩解先修補;還不能修補時先擋住
  1. 01移除寬鬆的 Bash 前綴允許規則

    PlainCVE 的判斷:讓每個 shell 指令都要求核准,可能可以降低曝險。沒有來源直接這樣建議,也沒有來源顯示有官方修補。

  2. 02不要在不受信任的環境或以高權限執行代理

    第三方網站(OffSeq)的建議,不是官方指引。

RESPOND應變發現入侵跡象時
  1. 01懷疑被利用時,檢查代理執行過的指令

    PlainCVE 的建議:留意以已核准指令開頭、後面卻串接其他指令的紀錄,並檢查代理當時讀取的程式庫或網頁。來源沒有提供官方偵測指引。

HARDEN強化長期避免同類問題
  1. 01把 AI 代理讀到的外部內容視為不可信

    程式庫檔案與抓取的網頁都可能夾帶給 AI 的指示。

  2. 02留意專案維護狀態

    官方表示 continuedev/continue 程式庫已不再積極維護、改為唯讀,未來未必會有修補。

完整修復步驟與說明

目前沒有修補版本。 npm registry 上 @continuedev/cli 的最新版是 1.5.47,本身就在受影響範圍內;沒有來源指出已合併的修補。研究者的 GitHub issue #13288(該頁含攻擊程式,本站不連結)仍未關閉,也沒有連結的分支或 PR。第三方追蹤網站 HOL Guard 與 OffSeq 也都表示修補狀態未回報或未確認。官方另表示 continuedev/continue 程式庫已不再積極維護、改為唯讀,因此不要預期會有後續修補。

  1. 確認版本。 在安裝 Continue CLI 的電腦上用終端機執行 npm ls -g @continuedev/cli(若是裝在專案內,到專案資料夾執行並拿掉 -g)。
  2. 關於 PR #12248。 有外部貢獻者提交過讓權限檢查改取「靜態與動態政策中較嚴格者」的 PR,但作者因不簽 CLA 自行關閉,沒有合併。PlainCVE 的判斷:該 PR 的說明沒有提到「比對前拆開串接指令」,即使合併也未必能完整修好這個 CVE。
  3. 沒有可以升級的修補版本。 官方 README 提到 CLI 的最終版 2.0.0,但 npm registry 上查不到這個版本;npm 上的最新版 1.5.47 仍在受影響範圍內。請套用下面的做法。
  4. PlainCVE 的建議。 移除寬鬆的 Bash(前綴*) 允許規則,讓 shell 指令每次都要求核准,可能可以降低曝險(沒有來源直接這樣說)。第三方網站 OffSeq 也建議在修補出現前,不要在不受信任的環境或以高權限執行代理;這不是官方指引。

攻擊流程

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

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

Continue CLI Bash 權限規則繞過:在已允許的指令後面串接,就能執行沒被核准的指令: 1. 在程式庫檔案或網頁裡藏入給 AI 的指示 → 2. 權限設定中存在 Bash 前綴允許規則 → 3. 代理讀到被植入的指示,在允許的指令後面串接其他指令 → 4. 權限檢查把整串指令當成符合規則而放行 → 5. 沒被核准的指令以使用者權限默默執行CVE-2026-109560 · Continue CLI Bash 權限規則繞過:在已允許的指令後面串接,就能執行沒被核准的指令攻擊者你的系統在程式庫檔案或網頁裡藏入給 AI 的指示 — 這稱為提示注入(prompt injection):把指令藏在代理會讀取的內容裡。攻擊者不需要任何權限。 1在程式庫檔案或網頁裡藏入給 AI 的指示權限設定中存在 Bash 前綴允許規則 — 這類規則可能是使用者自己設定的,也可能是在核准畫面選擇「Continue + don't ask again」時留下的:選擇「Continue + don't ask again」後,CLI 只取第一個指令名稱加上萬用字元,存成像 Bash(名稱*) 這樣的允許規則。單次按「Continue」不會留下規則。 2權限設定中存在 Bash前綴允許規則代理讀到被植入的指示,在允許的指令後面串接其他指令 — 串接方式是用 ;、&& 或 | 等符號接在已允許的前綴後面。 3代理讀到被植入的指示,在允許的指令後面串接其他指令權限檢查把整串指令當成符合規則而放行 — 研究者指出規則會變成正規表示式,比對整串指令而非只看第一個指令。另外,官方程式碼中靜態允許規則會蓋過動態安全評估(除非評估結果是「停用」)。 4權限檢查把整串指令當成符合規則而放行沒被核准的指令以使用者權限默默執行 — 研究者表示不會跳出確認提示。 5沒被核准的指令以使用者權限默默執行攻擊路徑可在此擋下PlainCVE · plaincve.date/vulns/cve-2026-109560-continue-cli-bash-permission-bypass · CC BY 4.0
Continue CLI Bash 權限規則繞過:在已允許的指令後面串接,就能執行沒被核准的指令: 1. 在程式庫檔案或網頁裡藏入給 AI 的指示 → 2. 權限設定中存在 Bash 前綴允許規則 → 3. 代理讀到被植入的指示,在允許的指令後面串接其他指令 → 4. 權限檢查把整串指令當成符合規則而放行 → 5. 沒被核准的指令以使用者權限默默執行CVE-2026-109560 · Continue CLI Bash 權限規則繞過:在已允許的指令後面串接,就能執行沒被核准的指令在程式庫檔案或網頁裡藏入給 AI 的指示 — 這稱為提示注入(prompt injection):把指令藏在代理會讀取的內容裡。攻擊者不需要任何權限。 1攻擊者在程式庫檔案或網頁裡藏入給 AI 的指示權限設定中存在 Bash 前綴允許規則 — 這類規則可能是使用者自己設定的,也可能是在核准畫面選擇「Continue + don't ask again」時留下的:選擇「Continue + don't ask again」後,CLI 只取第一個指令名稱加上萬用字元,存成像 Bash(名稱*) 這樣的允許規則。單次按「Continue」不會留下規則。 2你的系統權限設定中存在 Bash 前綴允許規則代理讀到被植入的指示,在允許的指令後面串接其他指令 — 串接方式是用 ;、&& 或 | 等符號接在已允許的前綴後面。 3你的系統代理讀到被植入的指示,在允許的指令後面串接其他指令權限檢查把整串指令當成符合規則而放行 — 研究者指出規則會變成正規表示式,比對整串指令而非只看第一個指令。另外,官方程式碼中靜態允許規則會蓋過動態安全評估(除非評估結果是「停用」)。 4你的系統權限檢查把整串指令當成符合規則而放行沒被核准的指令以使用者權限默默執行 — 研究者表示不會跳出確認提示。 5攻擊者沒被核准的指令以使用者權限默默執行攻擊路徑可在此擋下PlainCVE · CC BY 4.0plaincve.date/vulns/cve-2026-109560-continue-cli-bash-permission-bypass
圖片可自由用於報導與教學,採 CC BY 4.0,圖上已附出處。
  1. 攻擊者

    在程式庫檔案或網頁裡藏入給 AI 的指示

    這稱為提示注入(prompt injection):把指令藏在代理會讀取的內容裡。攻擊者不需要任何權限。

    防禦: 第三方建議:在修補出現前,不要在不受信任的環境執行代理。

  2. 你的系統

    權限設定中存在 Bash 前綴允許規則

    這類規則可能是使用者自己設定的,也可能是在核准畫面選擇「Continue + don't ask again」時留下的:選擇「Continue + don't ask again」後,CLI 只取第一個指令名稱加上萬用字元,存成像 Bash(名稱*) 這樣的允許規則。單次按「Continue」不會留下規則。

    防禦: PlainCVE 的判斷:移除寬鬆的 Bash 前綴允許規則,讓每個 shell 指令都要求核准。

  3. 你的系統

    代理讀到被植入的指示,在允許的指令後面串接其他指令

    串接方式是用 ;、&& 或 | 等符號接在已允許的前綴後面。

  4. 你的系統

    權限檢查把整串指令當成符合規則而放行

    研究者指出規則會變成正規表示式,比對整串指令而非只看第一個指令。另外,官方程式碼中靜態允許規則會蓋過動態安全評估(除非評估結果是「停用」)。

    防禦: 研究者提議:比對前先把複合指令拆開,逐段檢查。這是提議,尚未出貨。

  5. 攻擊者

    沒被核准的指令以使用者權限默默執行

    研究者表示不會跳出確認提示。

    防禦: 第三方建議:不要以高權限執行代理,限制可被造成的損害。

影響範圍

Continue CLI(npm 套件 @continuedev/cli)是一個 AI 程式助理(代理,agent),可以替你在終端機執行 shell 指令。執行前它會依照權限規則決定要不要先問你。

條件是否受影響
@continuedev/cli 1.5.47 以前(含),且存在 Bash 前綴允許規則(例如選擇「Continue + don’t ask again」時留下的,或自己設定的)受影響
1.5.47 以前(含),但沒有任何 Bash 前綴允許規則繞過需要一條已允許的前綴規則才成立
2.0.0官方 README 提到最終版 2.0.0,但 npm registry 上查不到這個版本,不能當成可以升級的選項

沒有修補版本。 npm registry 上 @continuedev/cli 的最新版是 1.5.47,它的 gitHead 正是 CVE 紀錄標為有問題程式碼的 commit(d3f60ba),本身就在受影響範圍內。

攻擊還需要另一個條件:攻擊者必須把指示放進代理會讀取的內容,例如程式庫裡的檔案或代理抓取的網頁(這稱為「提示注入」)。依 CVSS,攻擊者不需要任何權限。

原理

CVE 紀錄只要求存在「已允許的 Bash 前綴規則」,沒有限定規則從哪裡來;官方的權限檢查程式也以同樣方式比對所有規則。使用者自己設定的 Bash(名稱*) 規則同樣適用。核准 Bash 指令時,畫面有「Continue」「Continue + don’t ask again」「No, and tell Continue what to do differently」三個選項;只有選「Continue + don’t ask again」才會存規則,單次按「Continue」不會。選了「Continue + don’t ask again」時,官方程式碼只取第一個指令名稱,後面加上萬用字元,存成 Bash(名稱*) 這樣的規則。回報的研究者指出,這條規則會變成一個正規表示式,拿去比對整串指令,而不是只看第一個指令。所以只要開頭是被允許的名稱,後面用 ;、&& 或 | 串接什麼都會符合。

另外,官方的權限檢查程式中,只要靜態允許規則成立,就會蓋過動態安全評估的結果(除非評估結果是「停用」)。研究者表示,這類串接指令會默默執行,不會跳出確認提示,並以執行代理的使用者權限執行。這類錯誤屬於 CWE-863(授權檢查錯誤)。

有問題的思路(概念示意,不是原始程式碼):

展開程式碼範例(text)
規則 = "允許:以 <名稱> 開頭的任何字串"
if 整串指令 符合 規則:
    直接執行   # 串接在後面的指令也一起被放行

研究者提議的思路(提議,尚未出貨):

展開程式碼範例(text)
片段們 = 依 ; && || 把指令拆開
if 每一個片段 都各自符合允許規則:
    執行
else:
    詢問使用者

時間軸

日期事件
2026-04-28外部貢獻者的 PR #12248 公開描述 permissionChecker.ts 中靜態允許規則會蓋過動態政策評估(未提到指令串接);該 PR 後來未合併
2026-09-17研究者在 GitHub 公開 issue #13288(該頁含攻擊程式,本站不連結);也是 CVE 紀錄標示的公開日期
2026-10-12VulnCheck 發布 CVE 紀錄
2026-10-13截至此日未列入 CISA KEV;NVD 已收到但尚未分析
2026-10-16NVD 紀錄最後修改;目前狀態為 Deferred(暫緩分析)。NVD 資料沒有記錄狀態是哪一天改的

延伸閱讀

  • 評分: CNA(VulnCheck)提供 CVSS 4.0 7.7 與 CVSS 3.1 7.5,兩者都屬「高」。分數不同只是 CVSS 版本不同,來源並沒有矛盾。CVSS 3.1 把攻擊複雜度列為高、需要使用者互動;CVSS 4.0 則列為被動互動、且需要特定前提條件。
  • 利用狀況: 未列入 CISA KEV。沒有證據顯示已遭實際利用,也沒有證據顯示是否曾在修補前被利用;HOL Guard 表示其來源未標示為已知遭利用,但這不代表從未被利用。研究者的 GitHub issue #13288 附有重現內容(該頁含攻擊程式,本站不連結)。
  • CVE 來源: 這個 CVE 由 VulnCheck 指派,不是 Continue 專案本身;GitHub 顧問資料庫編號為 GHSA-f54m-g39v-qf2p,尚未經過審查。CVE 紀錄致謝 Akıner Kısa 與 Tardfyou。
  • 不要混淆: CVE-2026-76072 是另一個同樣影響 1.5.47 以前(含)版本的 VulnCheck CVE,問題是 headless 與 auto 模式下封鎖的破壞性指令清單不完整,與本頁不同(VulnCheck 對該 CVE 的公告,該頁含攻擊程式,本站不連結)。
  • 相關弱點類型:CWE-863。

驗證紀錄 AI 依審稿規則逐項核對來源,全部通過;未經人工審稿,也尚未在我們的環境重現

AI 審稿2026-10-19 · 審稿規則

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

來源

  1. CVE / NVD / OSVCVE-2026-109560 CVE record (JSON) · CVE Program (CNA: VulnCheck), 2026-10-12 · 查閱 2026-10-13
  2. CVE / NVD / OSVNVD API - CVE-2026-109560 · NIST · 查閱 2026-10-18
  3. 安全公告GitHub Advisory Database - GHSA-f54m-g39v-qf2p (unreviewed) · GitHub · 查閱 2026-10-13
  4. 其他npm registry - @continuedev/cli latest · npm · 查閱 2026-10-17
  5. 廠商說明continuedev/continue repository README · Continue · 查閱 2026-10-13
  6. 廠商說明permissionChecker.ts at d3f60ba · Continue (GitHub) · 查閱 2026-10-13
  7. 廠商說明policyWriter.ts at d3f60ba · Continue (GitHub) · 查閱 2026-10-13
  8. 廠商說明ToolPermissionSelector.tsx at d3f60ba · Continue (GitHub) · 查閱 2026-10-18
  9. 其他Pull request #12248 (closed, not merged) · continuedev/continue (GitHub) · 查閱 2026-10-13
  10. 其他CVE-2026-109560 - HOL Guard · HOL Guard · 查閱 2026-10-13
  11. 其他CVE-2026-109560: Incorrect Authorization in continuedev continue · OffSeq Radar · 查閱 2026-10-13

媒體簡報

一句話

Continue CLI 是一個能替開發者執行 shell 指令的 AI 程式助理。1.5.47 以前(含)的版本中,使用者在核准畫面選擇「Continue + don't ask again」的指令會變成一條寬鬆的允許規則(使用者自己設定的 Bash 前綴允許規則也一樣),攻擊者若在程式庫檔案或網頁中藏入指示,代理可能在已核准的指令後面串接其他指令並直接執行。目前沒有修補版本:npm 上的最新版 1.5.47 本身就在受影響範圍內,而官方已表示該程式庫不再積極維護。

關鍵數字

嚴重度
CVSS 4.0 7.7;CVSS 3.1 7.5(皆由 CNA VulnCheck 提供) cveawg.mitre.org
受影響版本
@continuedev/cli 1.5.47 以前(含) cveawg.mitre.org
問題回報公開
2026-09-17(CVE 紀錄的公開日期;研究者的 GitHub issue #13288 同日開立,該 issue 含攻擊程式,本站不連結) cveawg.mitre.org
CVE 公開
2026-10-12 cveawg.mitre.org
維護狀態
官方表示程式庫已不再積極維護、唯讀 github.com

已確認

  • 1.5.47 以前(含)的 Continue CLI 可在已允許的 Bash 前綴後串接指令,執行使用者沒核准的指令。
  • 官方程式碼中,選擇「Continue + don't ask again」時只存第一個指令名稱加萬用字元(單次「Continue」不存規則),且靜態允許規則會蓋過動態安全評估(除非評估結果是「停用」)。
  • 研究者的 GitHub issue #13288(該頁含攻擊程式,本站不連結)附有重現內容,且該 issue 仍未關閉、沒有連結的修補。
  • 沒有修補版本:npm registry 上 @continuedev/cli 的最新版是 1.5.47,在受影響範圍內。
  • NVD 目前狀態為 Deferred(暫緩分析;紀錄最後修改 2026-10-16)。

尚未確認 / 說法不一

  • 官方 README 提到 CLI 的最終版 2.0.0,但 npm registry 上查不到這個版本,無法確認它是否存在或是否已修補。
  • 沒有證據顯示已遭實際利用,也不知道是否曾在修補前被利用;它未列入 CISA KEV。

可引用的一句話

你要它別再問的是一個指令,系統記住的卻是「以這個字開頭的任何東西」。

圖片

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

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

如何引用本頁

本文採 CC BY 4.0,轉載請保留署名與連結。

PlainCVE 團隊(2026)。《Continue CLI Bash 權限規則繞過:在已允許的指令後面串接,就能執行沒被核准的指令》。PlainCVE。https://plaincve.date/vulns/cve-2026-109560-continue-cli-bash-permission-bypass(查閱日期:YYYY-MM-DD)
BibTeX
@misc{cve2026109560continueclibashpermissionbypass2026,
  title  = {Continue CLI Bash 權限規則繞過:在已允許的指令後面串接,就能執行沒被核准的指令},
  author = {PlainCVE 團隊},
  year   = {2026},
  howpublished = {PlainCVE},
  url    = {https://plaincve.date/vulns/cve-2026-109560-continue-cli-bash-permission-bypass},
  note   = {更新於 2026-10-19}
}