部落格 發布於 AIA: 2026年7月6日

ChainLeak:Chainlit 輔助介面會讓提示詞、檔案與雲端金鑰外洩

Zafran 的 ChainLeak 研究指出,Chainlit(用來建立 LLM 聊天與 agent 應用的 Python 框架)的輔助 API 和 element 處理流程可能被用來讀取不該公開的檔案、暴露跨使用者的提示詞與回應快取,甚至透過伺服器端請求偽造(SSRF)連到內部服務或雲端中繼資料端點。這類問題危險之處在於 Chainlit 常部署在 AI 應用旁邊,能碰到提示詞、上傳檔案、環境變數、API key 和雲端憑證;一般網站裡看似常見的參數驗證缺口,到了 AI 框架就可能變成 AI 資料外洩與雲端環境接管。

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

威脅分析

  • 攻擊面來自看似輔助性的 Chainlit API。 element、檔案和資料層 API 原本是為了讓 AI 應用顯示檔案、圖片、對話結果和中繼資料;但這些 API 也因此靠近提示詞、模型回覆、上傳檔案和應用程式設定。
  • 參數驗證不足會讓攻擊者讀到不該讀的檔案。 如果 element ID、檔案路徑或資料層查詢沒有綁定正確使用者與物件權限,攻擊者就可能改參數讀取其他使用者的提示詞快取、模型回覆、上傳檔案、環境檔案或部署設定。
  • 任意讀檔會把 AI 應用資料變成憑證風險。 AI 應用常把 API key、資料庫連線字串、雲端工作負載憑證或模型供應商 token 放在環境變數、設定檔或程序狀態附近;攻擊者如果讀到這些值,就不只是看見對話資料,而是可能取得後續呼叫雲端資源的能力。
  • SSRF 會讓 element 網址讀取變成內網探測工具。 如果 Chainlit server 會替使用者抓取 element URL,攻擊者可以把 URL 指向私有 IP、雲端中繼資料服務、內部控制面或只對後端開放的服務。伺服器一旦代為連線,攻擊者就能從回應內容或錯誤訊息推測內網狀態。
  • 影響會從單一 AI 應用擴大到雲端環境。 被讀出的 secrets、內部端點資訊和雲端中繼資料,可能被拿來重複使用憑證、取得臨時 token、橫向移動,或存取模型、資料庫、物件儲存和其他雲端資源。
  • 防守不能只等框架修補。 升級 Chainlit 是必要步驟,但部署方也要把檔案與 element API 當成資料邊界:每次請求都要驗證使用者、租戶和物件層級的權限;每次 URL 抓取都要經過 SSRF-safe 封裝層;每個可能外洩的憑證都要能撤銷並輪替。

適用的 7 項 AIDEFEND 防禦手法

AID-H-029.002
Lifecycle-Stage Authorization Gate
極高
物件層級的授權會直接卡住任意讀檔和跨使用者快取外洩:每次讀取提示詞快取、使用者檔案、上傳 element 或生成成品前,都要確認呼叫者對該使用者、租戶和物件有權限,不能只相信路由已登入。
AID-H-019.001
URL Normalization & Allowlist Filtering
極高
網址正規化與允許清單應放在 Chainlit server 代抓 element URL 之前,先解析最終目的位址、阻擋私有 IP、雲端中繼資料服務、不安全重新導向與未核准連線目標,避免 SSRF 把後端變成內網代理。
AID-H-002.002
Inference-Time Prompt & Input Validation
輸入驗證應套用在 element ID、檔案路徑、篩選條件和請求參數上,檢查結構、型別、長度、路徑正規化與允許值,避免攻擊者用改 ID、改路徑或特殊字元讀到其他檔案。
AID-H-003.010
Deployed AI Software Vulnerability Remediation Lifecycle
持續把實際部署的 Chainlit 版本與任意檔案讀取、SSRF 公告交叉核對,重建並分階段部署修正版,再以 runtime readback 證明沒有脆弱 digest 遺留。這才是軟體修補 owner,不是事後的 exploit-closure proof。
AID-I-002.002
Secure External AI Service Connectivity
外部服務連線管制可以作為 SSRF 的基礎設施層保護:即使 element URL 抓取仍被觸發,Chainlit 應用程式也只能連到核准的外部服務,不能任意連向內網、雲端中繼資料端點或控制面。
AID-E-001.001
Root & Long-Lived Credential Object Eviction
如果任意讀檔或 SSRF 外洩了 cloud access key、API key、client secret、密碼或長效憑證,就要到權威簽發端撤銷或輪替事件範圍內的完整 credential-object population。已簽發的 token/session,或 workload principal 本身遭到入侵,分別由其他 E-001 owner 處理。
AID-E-004
Incident Exploit-Path Closure Verification
Chainlit 修補與補償性控制部署完成後,應由獨立驗證方對事件範圍內的部署重播原始任意檔案讀取與 SSRF 請求,證明它們都被拒絕。這項控制提供 closure evidence,不負責選擇或 rollout 修正版。

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

  • 升級到已修補的 Chainlit 版本,並找出所有允許外部來源連入、或代替使用者抓取 URL 的 Chainlit 應用程式。
  • 逐項測試 element、檔案、快取和資料層 API,確認每一條讀取路徑都會依使用者、租戶與物件層級的授權判斷,不會因為改 ID 或改路徑讀到別人的資料。
  • 把 API key、模型供應商 token 與雲端憑證移出環境檔案,改用短生命週期的工作負載身分與 secrets 儲存服務;若懷疑已外洩,撤銷並輪替。
  • 任何透過網址讀取 element 的流程,都要使用能防止 SSRF 的抓取封裝層,檢查私有 IP、雲端中繼資料端點、重新導向、DNS 重新綁定攻擊(DNS rebinding)與最終連線目的位址。
  • 在記錄中搜尋異常檔案路徑、跨使用者提示詞快取存取、雲端中繼資料請求,以及送往陌生內外部主機的連線,並把命中的憑證納入撤銷與輪替流程。

結論

ChainLeak 的重點是 AI 框架的輔助 API 不是低風險配角。它們一邊服務前端顯示和檔案處理,一邊靠近提示詞、上傳檔案、環境 secrets 和雲端中繼資料。AIDEFEND  的對應防線要分層部署:物件層級的授權阻止越權讀取,輸入驗證限制可控參數,安全抓取和連線管制擋住 SSRF,憑證撤換則縮短已外洩長效 secrets 的可用時間。