實證研究 發布於 AIA: 2026年8月24日

Flowise CSV Agent:提示詞注入繞過 regex 阻擋清單並執行 Python

Flowise 是用來建立 AI Agent 與工作流程的低程式碼平台;本案影響其中會讓模型產生並執行 Python 的 CSV Agent。公開資安漏洞編號 CVE-2026-70477 影響 Flowise 與 flowise-components 3.1.2 與更早版本,3.1.3 已修補。未經身分驗證的攻擊者可向含有 CSV Agent 的聊天流程送入提示詞注入攻擊(prompt injection),讓 LLM 產生經混淆的 Python。靜態 regex 阻擋清單未能攔截後,Flowise 便把程式碼交給 Pyodide(本案用來執行 Python 的執行環境)。由於 Pyodide 未與宿主作業系統介面隔離,惡意 Python 會沿用啟動 Flowise 的帳號權限執行。

Prompt InjectionRemote Code ExecutionInput ValidationRuntime IsolationAgentic AI
5 項對應的 AIDEFEND 防禦手法

威脅分析

  • 安全判斷仰賴可繞過的 regex 阻擋清單。公告展示八種繞過變體,手法包括字串串接、chr() 編碼、替危險內建函式取別名、檢查執行框架(frame)、走訪方法解析順序(MRO)、使用 df.query(),以及透過裝飾器(decorator)間接呼叫 exec。這表示系統並沒有依 Python 的抽象語法樹(AST)檢查程式碼結構;問題也不是範本插值。
  • 模型輸出會直接送到 Python 執行函式。Flowise 移除程式碼區塊標記後呼叫 validatePythonCodeForDataFrame(),再加上 pandas 與 NumPy 匯入,最後送入 pyodide.runPythonAsync()。一段提示詞只經過一次阻擋清單判斷,就可能變成可執行的 Python。
  • Pyodide 並未提供應用程式所需的隔離邊界。公告明確指出,通過檢查的程式碼仍可存取宿主作業系統介面,並沿用啟動 Flowise 的帳號權限。
  • 已驗證的攻擊路徑有明確前提。攻擊者必須能連到使用受影響 CSV Agent 的聊天流程,而且 LLM 必須產生可運作的繞過程式碼;公告也說明,視模型而定,提示詞注入可能需要多次嘗試。

適用的 5 項 AIDEFEND 防禦手法

AID-H-025.001
Pre-Execution Static Analysis & Dangerous Construct Blocking
極高
執行前依已簽署的政策,強制檢查即將執行的確切 Python 位元組及其抽象語法樹(AST);只要無法判定安全就拒絕執行,以此取代 regex 拒絕清單。檢查應阻擋危險匯入、間接取得內建函式與指令執行等禁止結構,但通過靜態分析仍不代表任意程式碼必然安全。
AID-H-025.002
Safe Interpreter Enforcement
極高
只允許負責啟動程式碼的服務選用核准清單內的受限直譯器,來處理通過審查的程式碼;不得讓模型選擇直譯器或放寬執行設定。
AID-I-001.003
Ephemeral Single-Use Sandboxes for Tools
極高
每次評估都在全新的 microVM、gVisor 或 Kata 邊界中只執行一次,完成後立即銷毀;Flowise 宿主行程、檔案系統、憑證與管理面必須留在邊界之外。
AID-H-003.010
Deployed AI Software Vulnerability Remediation Lifecycle
逐一核對實際部署的 Flowise 版本與官方公告,透過分階段部署升級到 3.1.3 或更新的版本,並回讀映像雜湊值,確認所有執行個體都已完成修補。
AID-H-002.002
Inference-Time Prompt & Input Validation
部分
在主要 LLM 組合提示詞與執行推論前,先以校準過的提示詞注入檢查拒絕或隔離可疑請求。這能降低惡意輸入成功誘導模型產生程式碼的機率,但只能當第一層防線,不能取代執行成品檢查與執行環境隔離。

身為資安防禦者,我們應該這麼做

  • 盤點 Flowise 與 flowise-components 版本,將所有受影響部署升級至 3.1.3 或更新的版本。
  • 在升級完成前,關閉含 CSV Agent 聊天流程的公開存取,或先從不受信任的工作流程移除該節點。
  • 在主要 LLM 前加入有限度的提示詞注入檢查,再於生成程式碼的執行路徑依序加入確切位元組與 AST 的執行前檢查、受限直譯器政策與獨立的單次沙箱;不得把任何單一控制當成完整防線。
  • 從程式碼執行環境移除宿主機憑證、可寫入掛載、管理 Socket 與不受限制的網路連線。
  • 檢查模型推論請求與執行遙測中是否有反覆提交的混淆 Python;若無法排除程式碼曾執行,應輪替可能外洩的憑證。

結論

這起案例的問題,不只是提示詞沒有過濾乾淨,而是模型產生的 Python 通過單薄檢查後,就能以 Flowise 帳號權限存取宿主機。提示詞注入檢查可先拒絕部分惡意請求,但不能保證模型永遠不會產生危險程式碼;AIDEFEND  對應的執行前程式碼檢查、受限直譯器與單次沙箱,仍須分別阻擋危險語法、限制可用的執行環境,並把宿主機憑證隔離在外。Flowise 3.1.3 已修補這條已揭露路徑,這些分層控制則可縮小下一次檢查繞過的影響。