Gradio 5 セキュリティレビュー

Hugging Face はサイバーセキュリティ企業 Trail of Bits と提携し、Gradio 5 の独立したセキュリティ監査を実施しました。このプロセスで特定されたすべてのセキュリティリスクは、Gradio 5 のリリース前に緩和・修正され、ライブラリを使用して構築された機械学習アプリケーションが、開発者が複雑なセキュリティポリシーを手動で設定することなく、ウェブセキュリティのベストプラクティスに従うことが保証されます。

予防的セキュリティ監査の目的

470,000 以上の Gradio アプリが Hugging Face Spaces に存在する安全性を確保するため、Hugging Face はリアクティブなパッチ適用モデルから予防的監査へと移行しました。Trail of Bits は Gradio のコードベースを、以下の 4 つの主要なリスクシナリオにわたって分析しました。

  • ローカル実行: 開発者のローカルマシン上で実行されるアプリ。
  • サーバーデプロイ: Hugging Face Spaces またはその他のリモートサーバーにデプロイされたアプリ。
  • サーバーデプロイ: Gradio の組み込みシェアリンクを介して共有されるアプリ。
  • サプライチェーン: Gradio CI パイプライン内の脆弱性。

主なセキュリティ発見と緩和策

Trail of Bits は 4 つのシナリオ全体でいくつかの重大な脆弱性を特定しました。これらはすべて Gradio 5.0 のリリースで解決されています。

ローカルアプリケーション

サーバーの CORS(Cross-Origin Resource Sharing)ポリシーに誤設定が発見されました(TOB-GRADIO-1 および TOB-GRADIO-2)。認証済みサーバーの文脈では、攻撃者が悪意のあるウェブサイトを通じてアクセストークンを盗み、ユーザーアカウントを乗っ取ることが可能になる恐れがありました。

デプロイされたアプリケーション

Hugging Face Spaces やその他のサーバーにデプロイされたアプリに対して、いくつかの脆弱性が特定されました。

  • SSRF: 完全な GET ベースのサーバーサイドリクエストフォージェリ(SSRF)により、攻撃者は任意のエンドポイント(内部ネットワークを含む)へリクエストを送信し、レスポンスを読み取ることができました(TOB-GRADIO-3)。
  • XSS: 任意のファイルタイプのアップロードを利用してクロスサイトスクリプティング(XSS)ペイロードをホストでき、認証済みサーバーでのアカウント乗っ取りにつながる可能性がありました(TOB-GRADIO-10)。
  • Race Conditions: レースコンディションが存在し、攻撃者がユーザーのトラフィックを自分のサーバーにリルートして、アップロードされたファイルやチャットボットの会話を盗むことが可能でした(TOB-GRADIO-13)。
  • File Leaks: 一部コンポーネントの特定のポストプロセス関数が、シンプルなサーバー構成において任意のファイルを漏洩させる可能性がありました(TOB-GRADIO-16)。

共有アプリケーション

Gradio の組み込みシェアリンクに関連するリスクは以下の通りです。

  • Remote Code Execution (RCE): nginx の誤設定により、Gradio API サーバー上の認証なし Docker API が公開され、ルート権限でのリモートコード実行が可能になっていました。この脆弱性は frp トンネルを悪意のあるサーバーへリダイレクトし、ユーザートラフィックを記録するために利用できました(TOB-GRADIO-19)。
  • Encryption: frp-client と frp-server 間の通信に堅牢な暗号化が欠如していたため、データの傍受と改ざんが可能でした(TOB-GRADIO-11)。

CI パイプラインとサプライチェーン

Gradio CI パイプラインにおいてサプライチェーンリスクが特定されました。

  • GitHub Actions: 複数のワークフローがサードパーティーアクションをタグやブランチ名に固定して使用しており、完全なコミット SHA ではないため、アクションの無音変更やシークレット漏洩のリスクがありました(TOB-GRADIO-25)。
  • Runner Memory: GitHub のセキュリティ研究者が、GitHub Actions が信頼できないコードの実行や、GitHub ランナーのメモリダンプを通じたシークレットの流出を許す可能性があると報告しました。

今後のセキュリティ体制

回帰を防止し新たな脆弱性を特定するため、Hugging Face は Gradio の開発ライフサイクルに複数のセキュリティ重視ツールを統合しました。

  • Security unit testsfuzzer tests は、脆弱性を検出することを目的に特別に設計されています。
  • Static analysis tools(例:CI パイプラインでの Semgrep)を使用して、一般的なセキュリティ問題を検出します。
  • Ongoing collaboration は、セキュリティコミュニティと継続的に協力し、リスクを特定・緩和します。

Sources