AIDEFEND in Action AIA-0043 實證研究 發布於 AIA: 2026年7月6日

ChainLeak:Chainlit 輔助介面漏洞暴露提示詞、檔案與雲端金鑰

Zafran 在 Chainlit(用來建立 LLM 聊天與 agent 應用的 Python 框架)中發現任意檔案讀取與伺服器端請求偽造(SSRF)漏洞,並在對外開放的實際應用中驗證。攻擊者可透過 element 處理流程讀取伺服器檔案;若部署使用 LangChain 磁碟快取,還可能取得其他使用者的提示詞與回應。影響取決於部署設定與工作負載權限:可讀取的環境變數或雲端憑證,可能進一步成為帳號冒用、橫向移動與雲端資源存取的入口。

Data ExfiltrationCredential ExposureInput ValidationCredential GovernanceAI Infrastructure
6 項對應的 AIDEFEND 防禦手法
來源: ChainLeak: Critical AI Framework Vulnerabilities Expose Data, Enable Cloud Takeover 
作者: Gal Zaban, Ido Shani & Zafran Labs
原文發布: 2026年1月20日

威脅分析

  • 任意檔案讀取發生在 element 更新流程。 已登入的攻擊者可操控自訂 element 的欄位,讓伺服器把指定路徑的檔案複製到自己的工作階段,再取得內容。可讀取範圍受 Chainlit 程序的檔案權限限制。
  • 快取可能把越權讀檔擴大為跨使用者資料外洩。 若 LangChain 把提示詞與回應寫入應用目錄中的 .chainlit/.langchain.db,該檔案就可能透過同一讀檔路徑外洩。這取決於快取設定,不能推定每個 Chainlit 部署都具有此檔案。
  • SSRF 來自 SQLAlchemy 資料層的網址擷取。 攻擊者可指定 element 的 url,讓後端代為發送 GET 請求。若未限制目的位址,就可能連到內部服務或雲端中繼資料端點。這條路徑無法控制請求標頭,因此來源所示的 AWS IMDSv1 風險不能直接套用到 IMDSv2。
  • 後續影響取決於取得的憑證與權限。 /proc/self/environ 可能包含 API 金鑰、資料庫連線資訊或 CHAINLIT_AUTH_SECRET;是否能偽造登入token或存取雲端資源,仍取決於部署中實際存在的秘密與授權範圍。
  • 修補、存取授權與安全擷取要分別落實。 升級框架可移除已揭露的脆弱實作;檔案存取仍需逐一驗證呼叫者、租戶與物件權限,網址擷取則需要 SSRF 防護與外部連線管制。資料用途或生命週期標記不能取代這些檢查。

適用的 6 項 AIDEFEND 防禦手法

AID-H-019.001
URL Normalization & Allowlist Filtering
高
讓 element 網址擷取通過完整的安全擷取流程:驗證標準化 HTTPS 目的地與每次重新導向、拒絕非公開位址、將連線固定到已驗證 IP,並限制回應大小與型別。Chainlit 專用介面須另行驗證;只比對允許的主機名稱,擋不住 DNS 重新綁定或中繼資料存取。
AID-H-003.010
Deployed AI Software Vulnerability Remediation Lifecycle
高
持續核對實際部署的 Chainlit 版本與任意檔案讀取、SSRF 公告,重建並分階段部署修正版,再從執行中的系統確認版本與成品雜湊,避免仍有脆弱版本遺留。這項控制負責修補部署;原始攻擊路徑是否已關閉,須另外驗證。
AID-I-002.002
Secure External AI Service Connectivity
高
在 AI 工作負載的外部服務連線邊界,預設拒絕未核准目的地,並實測代理伺服器與防火牆路徑及繞過方式。即使脆弱擷取被觸發,這仍可限制對外竊資或服務濫用。組織內部服務需另行網路隔離;外部允許清單不能取代檔案授權,也不代表可把秘密送往已核准目的地。
AID-E-001.001
Root & Long-Lived Credential Object Eviction
高
如果任意讀檔或 SSRF 暴露雲端存取金鑰、API 金鑰、用戶端秘密、密碼或長效憑證,應到各自的簽發端撤銷或輪替事件範圍內的完整憑證清單。已簽發的token、工作階段,以及遭入侵的工作負載身分,須另行處理,不能算在這項撤銷工作內。
AID-E-004
Incident Exploit-Path Closure Verification
高
修補與補償控制部署後,由獨立驗證方在事件範圍內重新發送原始任意檔案讀取與 SSRF 請求,確認每個受影響部署都拒絕這些請求。這項控制提供攻擊路徑已關閉的證據,不負責選擇或部署修正版。
AID-H-002.002
Inference-Time Prompt & Input Validation
中
把已公開的封閉結構驗證方式改用於自訂 element 更新,在還原物件或複製檔案前拒絕呼叫者指定伺服器路徑。這需要另行實作並驗證 element 專用的介面;QueryRequest 範例不包含這項實作,路徑正規化也不能取代檔案擁有者的存取授權。

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

  • 盤點對外開放的 Chainlit 部署,升級至已修補版本,並核對實際執行的版本與成品雜湊。
  • 以原始任意檔案讀取與 SSRF 請求重新測試,確認自訂 element 不能指定任意伺服器路徑,也不能繞過使用者、租戶與物件授權。
  • 對網址擷取設定允許清單,檢查解析後的 IP、重新導向與 DNS 重新綁定,並在應用程式外另行限制可連線的目的地。
  • 限制工作負載可讀取的檔案與秘密,優先使用短效工作負載身分與受管秘密儲存服務;秘密管理不會自動阻止已遭入侵的程序使用其現有權限。
  • 搜尋可用紀錄中的異常檔案讀取、提示詞快取存取及中繼資料請求;確認外洩時,到簽發端撤銷或輪替受影響的憑證,並另行處理已簽發的token與工作階段。

結論

ChainLeak 顯示,AI 框架的檔案與網址輔助介面,也需要完整的存取邊界。本案對應的防禦手法包括修補已部署軟體、授權確切檔案物件、安全擷取網址、限制工作負載權限,以及撤銷外洩憑證。每項控制都要在自己的執行位置驗證,才能知道原始攻擊路徑是否已被關閉。

最後更新: