// 威脅簡報

Langflow MCP stdio 指令注入:伺服器設定裡寫什麼指令,主機就執行什麼

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

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

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

Langflow 1.10.3 以前會直接執行 MCP stdio 伺服器設定裡寫的任何指令,使用者(若對外可達且維持預設自動登入,甚至任何能連上的人)都能在主機上執行程式。

誰會中使用 langflow 1.1.2 至 1.10.3 以前、langflow-base 0.1.2 至 0.10.3 以前,或 lfx 1.10.3 以前的部署。1.9.0 到 1.10.2 只修了一半,仍受影響。
後果攻擊者能以 Langflow 執行程序的使用者身分,在 Langflow 主機上執行任意指令(遠端程式碼執行)。
現在該做什麼升級到 Langflow 1.10.3 以上(langflow-base 0.10.3、lfx 1.10.3)。暫時無法升級時,設定 LANGFLOW_AUTO_LOGIN=false、不要讓 Langflow 直接暴露在不受信任的網路,並只把帳號給信任的使用者。PlainCVE 的建議:IBM 公告把 Langflow OSS 1.0.0–1.10.3 列為仍受其他 MCP 相關漏洞影響,建議直接升到 1.11.0 以上(本漏洞的官方修補版本仍是 1.10.3)。
受影響版本langflow 1.1.2 以上、1.10.3 以前;langflow-base 0.1.2 以上、0.10.3 以前;lfx 1.10.3 以前(1.9.0–1.10.2 為部分修補,仍受影響)
修好的版本langflow 1.10.3 以上(含 1.11.0+)、langflow-base 0.10.3、lfx 1.10.3
CVSS 向量
顯示完整向量CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
時間點
  • 首次公開 2026-03-23

藍隊應對手冊

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

DETECT確認我受影響嗎?有沒有入侵跡象?
  1. 01確認套件版本

    langflow 低於 1.10.3、langflow-base 低於 0.10.3、lfx 低於 1.10.3 即受影響。注意 1.9.0–1.10.2 只修了一半,仍要升級。請在 Langflow 實際使用的 Python 環境執行下面的唯讀指令(例如先啟用對應的虛擬環境;用 Docker 部署的話,要在 Langflow 容器內執行)。指令把錯誤訊息藏起來了,所以沒有任何輸出只代表「這個環境沒裝這些套件」,不代表你安全,可能只是在錯的環境執行(PlainCVE 的提醒)。

    唯讀查詢
    pip show langflow langflow-base lfx 2>/dev/null | grep -iE '^(name|version)'
  2. 02確認是否仍開著自動登入

    LANGFLOW_AUTO_LOGIN 預設為 true;若此時 Langflow 對外可達,不需帳號就能利用。官方說明這個設定只適合開發用途。請到實際啟動 Langflow 的設定裡檢查:Langflow 的 .env 檔、Docker(docker compose 檔或 docker run 帶入的環境變數)或 systemd 服務設定,確認 LANGFLOW_AUTO_LOGIN 有明確設成 false。找不到這個設定,代表沿用預設的 true(PlainCVE 的提醒)。

  3. 03監看 Langflow 啟動的異常子程序

    這是 TheHackerWire 的建議,官方沒有提供偵測指引。注意指令在 Langflow「嘗試連線」時就會執行,即使介面顯示伺服器啟動失敗。

MITIGATE修補 / 緩解先修補;還不能修補時先擋住
  1. 01升級到 Langflow 1.10.3 以上(會變更環境)

    官方表示 1.10.3(及 1.11.0+)才完整修補:允許清單套用到實際執行處,並移除 bash -c。下面的指令會變更環境(升級已安裝的套件);請在 Langflow 實際使用的 Python 環境(例如對應的虛擬環境)中執行。

    會變更環境
    pip install -U "langflow>=1.10.3"
  2. 02PlainCVE 的建議:直接升到 1.11.0 以上

    IBM 的安全公告(https://www.ibm.com/support/pages/security-bulletin-langflow-affected-security-vulnerabilities-model-context-protocol-features)把 Langflow OSS 1.0.0–1.10.3 列為受其他 MCP 相關漏洞影響,並建議升級到 1.11.0 以上。因此 PlainCVE 建議直接升到 1.11.0 以上。這是 PlainCVE 的建議;本漏洞的官方修補版本仍是 1.10.3。

  3. 03還不能升級:關閉自動登入、不要對外開放

    官方建議設定 LANGFLOW_AUTO_LOGIN=false,並且不要讓 Langflow 直接暴露在不受信任的網路。

  4. 04只把帳號給信任的使用者

    官方建議。在未修補版本中,任何已登入的一般使用者都能利用這個漏洞。

RESPOND應變發現入侵跡象時
  1. 01把主機當成可能已遭入侵處理

    PlainCVE 的建議(手上資料未見官方事件應變指引):若發現可疑子程序,應假設攻擊者已取得 Langflow 程序使用者能存取的一切,並據此調查與清理。

  2. 02檢查 MCP 伺服器設定與流程

    PlainCVE 的建議:檢查 MCP 伺服器設定,以及流程中內嵌的 MCP Tools 元件,找出你不認得的指令。1.9.0–1.10.2 的使用者特別要看流程內嵌的設定,因為它們會繞過 API 檢查。

HARDEN強化長期避免同類問題
  1. 01注意 npx / uvx 的剩餘風險

    官方指出,即使在 1.10.3 以上,允許清單預設仍讓 npx 與 uvx 執行任何套件;多租戶部署應採用官方建議的額外強化設定。

  2. 02不要讓 Langflow 直接面對網際網路

    回報者曾找到數台對外開放且有漏洞的 Langflow 伺服器。

完整修復步驟與說明
  1. 升級三個套件到對應版本(會變更環境)。 在 Langflow 實際使用的 Python 環境中執行 pip install -U "langflow>=1.10.3";若直接使用 langflow-base 或 lfx,分別升到 0.10.3 與 1.10.3 以上。已在 1.9.0–1.10.2 的使用者也要升級,那段版本只修了一半。
  2. 升級後仍要注意。 官方指出允許清單預設仍讓 npx、uvx 執行任何套件;多人共用(多租戶)的部署應套用官方建議的額外強化設定。
  3. 自動登入。 官方說明 AUTO_LOGIN 只適合開發用途。PlainCVE 建議不論是否已升級,正式環境都設為 false。
  4. PlainCVE 的建議:直接升到 1.11.0 以上。 IBM 的安全公告把 Langflow OSS 1.0.0–1.10.3 列為仍受其他 MCP 相關漏洞影響,並建議升級到 1.11.0 以上,因此 PlainCVE 建議直接升到 1.11.0 以上。本漏洞的官方修補版本仍是 1.10.3。

攻擊流程

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

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

Langflow MCP stdio 指令注入:伺服器設定裡寫什麼指令,主機就執行什麼: 1. 連上 Langflow 並取得使用者身分 → 2. 寫入一個指定任意指令的 MCP stdio 伺服器設定 → 3. Langflow 嘗試連線時,透過 bash -c 啟動該指令 → 4. 指令以 Langflow 程序使用者身分在主機上執行CVE-2026-105697 · Langflow MCP stdio 指令注入:伺服器設定裡寫什麼指令,主機就執行什麼攻擊者你的系統連上 Langflow 並取得使用者身分 — 攻擊者需要能透過網路連到 Langflow。若維持預設的 LANGFLOW_AUTO_LOGIN=true,自動登入端點不需帳密就會發出 token(登入憑證),等於不需帳號;若已關閉自動登入,任何已登入的一般使用者(不必是管理員)都能利用。 1連上 Langflow 並取得使用者身分寫入一個指定任意指令的 MCP stdio 伺服器設定 — 可以透過 MCP 伺服器設定,或在流程(flow)裡放一個 MCP Tools 元件、或用 tweak(執行時覆寫參數)帶入設定。1.9.0–1.10.2 只在 REST API 檢查,流程內嵌或 tweak 的設定會繞過檢查。 2寫入一個指定任意指令的MCP stdio 伺服器設定Langflow 嘗試連線時,透過 bash -c 啟動該指令 — 只要 Langflow 嘗試連到這個伺服器(列出伺服器、載入工具、執行流程)指令就會跑起來,即使畫面顯示伺服器啟動失敗。舊版沒有允許清單,還包在 shell 裡執行。 3Langflow 嘗試連線時,透過 bash -c 啟動該指令指令以 Langflow 程序使用者身分在主機上執行 — 結果是遠端程式碼執行,權限等同 Langflow 執行程序的使用者,不一定是 root。 4指令以 Langflow 程序使用者身分在主機上執行攻擊路徑可在此擋下PlainCVE · plaincve.date/vulns/cve-2026-105697-langflow-mcp-stdio-command-injection · CC BY 4.0
Langflow MCP stdio 指令注入:伺服器設定裡寫什麼指令,主機就執行什麼: 1. 連上 Langflow 並取得使用者身分 → 2. 寫入一個指定任意指令的 MCP stdio 伺服器設定 → 3. Langflow 嘗試連線時,透過 bash -c 啟動該指令 → 4. 指令以 Langflow 程序使用者身分在主機上執行CVE-2026-105697 · Langflow MCP stdio 指令注入:伺服器設定裡寫什麼指令,主機就執行什麼連上 Langflow 並取得使用者身分 — 攻擊者需要能透過網路連到 Langflow。若維持預設的 LANGFLOW_AUTO_LOGIN=true,自動登入端點不需帳密就會發出 token(登入憑證),等於不需帳號;若已關閉自動登入,任何已登入的一般使用者(不必是管理員)都能利用。 1攻擊者連上 Langflow 並取得使用者身分寫入一個指定任意指令的 MCP stdio 伺服器設定 — 可以透過 MCP 伺服器設定,或在流程(flow)裡放一個 MCP Tools 元件、或用 tweak(執行時覆寫參數)帶入設定。1.9.0–1.10.2 只在 REST API 檢查,流程內嵌或 tweak 的設定會繞過檢查。 2攻擊者寫入一個指定任意指令的 MCP stdio 伺服器設定Langflow 嘗試連線時,透過 bash -c 啟動該指令 — 只要 Langflow 嘗試連到這個伺服器(列出伺服器、載入工具、執行流程)指令就會跑起來,即使畫面顯示伺服器啟動失敗。舊版沒有允許清單,還包在 shell 裡執行。 3你的系統Langflow 嘗試連線時,透過 bash -c啟動該指令指令以 Langflow 程序使用者身分在主機上執行 — 結果是遠端程式碼執行,權限等同 Langflow 執行程序的使用者,不一定是 root。 4你的系統指令以 Langflow 程序使用者身分在主機上執行攻擊路徑可在此擋下PlainCVE · CC BY 4.0plaincve.date/vulns/cve-2026-105697-langflow-mcp-stdio-command-injection
圖片可自由用於報導與教學,採 CC BY 4.0,圖上已附出處。
  1. 攻擊者

    連上 Langflow 並取得使用者身分

    攻擊者需要能透過網路連到 Langflow。若維持預設的 LANGFLOW_AUTO_LOGIN=true,自動登入端點不需帳密就會發出 token(登入憑證),等於不需帳號;若已關閉自動登入,任何已登入的一般使用者(不必是管理員)都能利用。

    防禦: 設定 LANGFLOW_AUTO_LOGIN=false,不要讓 Langflow 直接暴露在不受信任的網路,只把帳號給信任的人。

  2. 攻擊者

    寫入一個指定任意指令的 MCP stdio 伺服器設定

    可以透過 MCP 伺服器設定,或在流程(flow)裡放一個 MCP Tools 元件、或用 tweak(執行時覆寫參數)帶入設定。1.9.0–1.10.2 只在 REST API 檢查,流程內嵌或 tweak 的設定會繞過檢查。

    防禦: 升級到 1.10.3+,指令允許清單改在真正執行指令的地方檢查,涵蓋流程與 tweak。

  3. 你的系統

    Langflow 嘗試連線時,透過 bash -c 啟動該指令

    只要 Langflow 嘗試連到這個伺服器(列出伺服器、載入工具、執行流程)指令就會跑起來,即使畫面顯示伺服器啟動失敗。舊版沒有允許清單,還包在 shell 裡執行。

    防禦: 1.10.3 移除 bash -c 包裝,直接啟動程序,並在啟動前做最後檢查。

  4. 你的系統

    指令以 Langflow 程序使用者身分在主機上執行

    結果是遠端程式碼執行,權限等同 Langflow 執行程序的使用者,不一定是 root。

    防禦: TheHackerWire 建議監看 Langflow 使用者啟動的異常子程序。

影響範圍

套件(PyPI)受影響版本修補版本
langflow1.1.2 以上、1.10.3 以前1.10.3(含 1.11.0+)
langflow-base0.1.2 以上、0.10.3 以前0.10.3
lfx1.10.3 以前1.10.3
情境是否受影響
1.1.2–1.8.x受影響,完全沒有指令檢查
1.9.0–1.10.2仍受影響:API 會擋掉不允許的指令,但流程內嵌或 tweak 帶入的設定不經過這道檢查
1.10.3 以上官方表示已完整修補
預設 LANGFLOW_AUTO_LOGIN=true 且對外可達官方公告 GHSA-w794-rj3p-xv45(該頁含攻擊程式,本站不連結)說不需帳號即可利用
已關閉自動登入任何已登入的一般使用者(非管理員)仍可利用

攻擊者必須能透過網路連到 Langflow,並能進入 MCP 伺服器設定,或建立含 MCP Tools 元件的流程。

原理

Langflow 可以串接 MCP(讓 AI 呼叫外部工具的協定)伺服器。其中一種連線方式叫 stdio:Langflow 在自己的主機上啟動一個程式,再透過標準輸入/輸出跟它溝通。要啟動哪個程式、帶什麼參數,由使用者在設定裡填寫。

問題在於,1.10.3 以前 Langflow 對這些欄位完全照單全收:沒有允許清單,還把它包在 bash -c 裡交給 shell 執行。所以「設定一個 MCP 伺服器」實際上等於「在主機上執行任意指令」。只要 Langflow 嘗試連到這個伺服器(列出伺服器、載入工具、執行流程),指令就會跑起來,就算畫面顯示伺服器啟動失敗也一樣。這屬於 CWE-78(作業系統指令注入)。

這個問題可追溯到 PR #5148 加入的 MCP Stdio 元件(1.1.2–1.4.x 時期)。官方分兩步修補:

  • 1.9.0(PR #12290):在 REST API 的設定模型加上指令允許清單與參數、環境變數檢查。但真正執行指令的地方沒有檢查,也仍用 bash -c。
  • 1.10.3(PR #14036,commit eba285e):把同一套規則搬到真正執行的地方,涵蓋流程內嵌與 tweak 的設定,並移除 bash -c,改為不經 shell 直接啟動程序。

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

展開程式碼範例(python)
# 使用者填的指令原封不動交給 shell
run(["bash", "-c", f"exec {config.command} {' '.join(config.args)}"])

修好的思路:

展開程式碼範例(python)
# 在真正啟動前檢查允許清單,且不經過 shell
validate_against_allowlist(config.command, config.args, config.env)
spawn_directly(config.command, config.args)

時間軸

日期事件
2026-01-11OX Security 表示向 Langflow 通報此問題(出處:OX Security 自述,見其部落格文章〈Mother of all AI supply chains〉;該文含攻擊示範,本站不連結)
2026-03-18OX Security 表示 Langflow 在 GHSA 報告中確認收到
2026-03-23第一階段修補 PR #12290 在公開 repo 開立(後收錄於 1.9.0);PR 內文描述這個 MCP stdio 指令注入並引用 GHSA-w794-rj3p-xv45,依本站規則為首次公開
2026-07-13完整修補 PR #14036 開立
7 月 23 日釋出 1.10.3(GitHub 未顯示年份,PlainCVE 推斷為 2026 年)
2026-09-28維護者發布官方安全公告 GHSA-w794-rj3p-xv45(出處:該公告頁顯示的發布日;該頁含攻擊程式,本站不連結。CVE 紀錄的 source.advisory 欄位即為此編號)
2026-10-05CVE 紀錄公開
2026-10-06CISA SSVC 評估:利用情況 none、可自動化 no、技術衝擊 total
2026-10-07未列入 CISA KEV;NVD 狀態為「分析中」

延伸閱讀

  • 評分: CNA(GitHub)給 CVSS 3.1 9.9,官方公告 GHSA-w794-rj3p-xv45(該頁含攻擊程式,本站不連結)也標為 critical。NVD 截至 2026-10-07 仍在分析中,手上資料未見 NVD 評分。
  • 是否需要登入,官方說法不一: PR #12290 寫「未經認證的攻擊者」即可利用,沒有附帶條件;官方公告 GHSA-w794-rj3p-xv45(該頁含攻擊程式,本站不連結)則說只有在預設 AUTO_LOGIN 開啟時才不需帳號,CVSS 向量也標為需要低權限(PR:L)。
  • 利用情況: 沒有資料證實已遭實際利用或曾為零日。回報者曾找到數台對外開放且有漏洞的伺服器,但這不代表它們已被入侵。
  • 公開 PoC: 官方公告本身附有 1.5.0–1.8.x 的概念驗證(該頁含攻擊程式,本站不連結、不轉載);TheHackerWire 則說,截至其撰文時,尚無在公開研究程式庫中獨立發布的攻擊程式。
  • 相關漏洞: IBM 的安全公告涵蓋其他 Langflow MCP 漏洞(如 CVE-2026-17623),但沒有提到本 CVE;該公告把 Langflow OSS 1.0.0–1.10.3 列為受那些漏洞影響,並建議升級到 1.11.0 以上。PlainCVE 無法確認它們與本 CVE 是否重疊;基於該公告,PlainCVE 建議直接升到 1.11.0 以上(見「修復建議」)。
  • 偵測方面,官方沒有指引;TheHackerWire 建議監看 Langflow 使用者啟動的異常子程序。

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

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

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

來源

  1. CVE / NVD / OSVCVE-2026-105697 record (CVE Services API) · CVE Program, 2026-10-05 · 查閱 2026-10-07
  2. CVE / NVD / OSVNVD API - CVE-2026-105697 · NIST · 查閱 2026-10-07
  3. 修補 commit / 版本fix(security): harden MCP stdio configuration (#14036) — commit eba285e · Langflow (GitHub) · 查閱 2026-10-07
  4. 修補 commit / 版本Langflow v1.10.3 release · Langflow (GitHub) · 查閱 2026-10-07
  5. 修補 commit / 版本PR #12290 — MCP command allowlist and validation (REST model) · Langflow (GitHub), 2026-03-23 · 查閱 2026-10-07
    本漏洞的首次公開來源
  6. 修補 commit / 版本PR #14036 — harden MCP stdio configuration · Langflow (GitHub), 2026-07-13 · 查閱 2026-10-07
  7. 新聞報導CVE-2026-105697: Langflow OS command injection enables unauthenticated remote code execution · TheHackerWire · 查閱 2026-10-07
  8. 安全公告Security Bulletin: Langflow affected by security vulnerabilities in Model Context Protocol features · IBM · 查閱 2026-10-07

媒體簡報

一句話

Langflow 是用來建立與部署 AI 代理程式和工作流程的開源工具。1.10.3 以前的版本會直接執行使用者寫在 MCP 伺服器設定裡的任何指令,讓攻擊者能在伺服器上執行程式;若伺服器對外可達且維持預設的自動登入設定,甚至不需要帳號。CVE 編號機構給出 CVSS 9.9 分(嚴重),官方已在 1.10.3 完整修補。截至 2026 年 10 月 7 日,此漏洞未列入美國 CISA 已知遭利用漏洞清單。

關鍵數字

嚴重度
CVSS 3.1 9.9(CNA 評分;NVD 尚在分析中) cveawg.mitre.org
完整修補版本
Langflow 1.10.3(langflow-base 0.10.3、lfx 1.10.3) cveawg.mitre.org
首次公開(專案公開 PR
2026-03-23 github.com
CVE 公開日期
2026-10-05 cveawg.mitre.org
官方安全公告
GHSA-w794-rj3p-xv45 cveawg.mitre.org

已確認

  • Langflow 1.10.3 以前會執行 MCP stdio 伺服器設定中的任意指令,沒有允許清單,造成遠端程式碼執行。
  • 官方表示 1.10.3(及 1.11.0+)已完整修補;1.9.0–1.10.2 只是部分修補。
  • 截至 2026-10-07 未列入 CISA KEV;CISA 的 SSVC 評估將「利用情況」標為 none。

尚未確認 / 說法不一

  • 是否需要登入:官方 PR #12290 說未經認證的攻擊者即可利用;官方公告 GHSA-w794-rj3p-xv45(該頁含攻擊程式,本站不連結)則說只在預設 AUTO_LOGIN 下才不需帳號,CVSS 也標為需低權限。
  • 目前沒有資料證實已遭實際利用,也沒有證據顯示曾在修補前被利用(零日)。
  • 公開 PoC:官方公告本身附有 1.5.0–1.8.x 的概念驗證(該頁含攻擊程式,本站不連結);TheHackerWire 則說,截至其撰文時,公開研究程式庫中尚無獨立發布的攻擊程式,兩者說法不同。
  • 1.10.3 的發布年份:GitHub 頁面只顯示「7 月 23 日」,2026 年是 PlainCVE 的推斷。

可引用的一句話

讓使用者「設定一個工具」,實際上等於讓他在你的伺服器上打指令。

圖片

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

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

如何引用本頁

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

PlainCVE 團隊(2026)。《Langflow MCP stdio 指令注入:伺服器設定裡寫什麼指令,主機就執行什麼》。PlainCVE。https://plaincve.date/vulns/cve-2026-105697-langflow-mcp-stdio-command-injection(查閱日期:YYYY-MM-DD)
BibTeX
@misc{cve2026105697langflowmcpstdiocommandinjection2026,
  title  = {Langflow MCP stdio 指令注入:伺服器設定裡寫什麼指令,主機就執行什麼},
  author = {PlainCVE 團隊},
  year   = {2026},
  howpublished = {PlainCVE},
  url    = {https://plaincve.date/vulns/cve-2026-105697-langflow-mcp-stdio-command-injection},
  note   = {更新於 2026-10-13}
}