Gradio 5 安全審查

Hugging Face 已與網路安全公司 Trail of Bits 合作,對 Gradio 5 進行獨立的安全審計。此過程中識別的所有安全風險皆已在 Gradio 5 發布前得到緩解與修復,確保使用該函式庫構建的機器學習應用程式遵循網路安全最佳實踐,且開發者無需手動設定複雜的安全政策。

預防性安全審計目標

為確保 Hugging Face Spaces 上超過 470,000 個 Gradio 應用程式的安全,Hugging Face 從被動修補模式轉為預防性審計。Trail of Bits 分析了 Gradio 程式碼庫,針對四種主要風險情境:

  • 本機執行:在開發者本機上執行的應用程式。
  • 伺服器部署:部署於 Hugging Face Spaces 或其他遠端伺服器的應用程式。
  • 伺服器部署:透過 Gradio 內建的分享連結共享的應用程式。
  • 供應鏈:Gradio CI 流程中的漏洞。

主要安全發現與緩解措施

Trail of Bits 在四種情境中識別出多項關鍵漏洞。所有這些問題皆已在 Gradio 5.0 版本中解決。

本機應用程式

發現伺服器的 CORS(跨來源資源共享)政策配置錯誤(TOB-GRADIO-1 與 TOB-GRADIO-2)。在已驗證的伺服器環境下,這可能讓攻擊者透過惡意網站竊取存取令牌並接管使用者帳號。

部署的應用程式

針對部署於 Hugging Face Spaces 或其他伺服器的應用程式,識別出多項漏洞:

  • SSRF:完整的基於 GET 的伺服器端請求偽造(SSRF)允許攻擊者向任意端點發送請求並讀取回應,包括內部網路(TOB-GRADIO-3)。
  • XSS:任意檔案類型上傳可用於託管跨站腳本(XSS)載荷,可能導致已驗證伺服器的帳號被盜(TOB-GRADIO-10)。
  • 競爭條件:存在競爭條件,可能讓攻擊者將使用者流量重新導向至其伺服器,以竊取上傳的檔案或聊天機器人對話(TOB-GRADIO-13)。
  • 檔案洩漏:某些元件的特定後處理函式在簡單的伺服器配置下可能洩漏任意檔案(TOB-GRADIO-16)。

共享的應用程式

與 Gradio 內建分享連結相關的風險包括:

  • 遠端程式碼執行(RCE):nginx 配置錯誤導致 Gradio API 伺服器的未驗證 Docker API 暴露,允許以 root 權限執行遠端程式碼。此漏洞可用於將 frp 隧道重新導向至惡意伺服器,以記錄使用者流量(TOB-GRADIO-19)。
  • 加密:frp-client 與 frp-server 之間的通訊缺乏強健的加密,導致資料可能被攔截與修改(TOB-GRADIO-11)。

CI 流程與供應鏈

在 Gradio CI 流程中識別出供應鏈風險:

  • GitHub Actions:多個工作流程使用以標籤或分支名稱固定的第三方 Action,而非完整的提交 SHA,可能導致 Action 靜默被修改並洩漏機密(TOB-GRADIO-25)。
  • 執行器記憶體:一位 GitHub 安全研究員報告稱,GitHub Actions 可能透過對 GitHub 執行器的記憶體轉儲,允許未受信任的程式碼執行與機密外洩。

未來的安全姿態

為防止回歸並識別新漏洞,Hugging Face 已將多項安全導向工具整合至 Gradio 的開發生命週期中:

  • 安全單元測試模糊測試,專門設計用於發現漏洞。
  • 在 CI 流程中使用 靜態分析工具(如 Semgrep)以偵測常見安全問題。
  • 持續與安全社群合作,以識別與緩解風險。

Sources