技術的な説明
ChromaDB の Python FastAPI サーバーは、認証チェックを実行する前に埋め込み関数設定(HuggingFace からのモデル読み込みを含む)を初期化します。認証されていない攻撃者が、攻撃者が管理する HuggingFace リポジトリを指す trust_remote_code: true を含む /api/v2/tenants/{tenant}/databases/{db}/collections への単一の細工された POST リクエストを送信します。サーバーは認証チェックが実行される前に悪意のある Python モジュールをダウンロードして実行します。攻撃者のコードが実行され、その後サーバーは 403 Forbidden を返します。つまり、標準的なログベースの検知では「ブロック」されたリクエストのみが表示される一方で、ペイロードは既に実行されています。CWE-94(コードインジェクション)。CVSS 4.0 スコア: 10.0。
攻撃経路
攻撃者が管理する HuggingFace モデル名と埋め込み関数設定における trust_remote_code: true を含むコレクション作成リクエストを含む collections エンドポイントへの認証なし HTTP POST。認証情報は不要です。単一のリクエストでサーバープロセス上のコード実行が達成されます。
影響を受けるシステム
ChromaDB Python FastAPI サーバー、バージョン 1.0.0~1.5.8(現在)。HiddenLayer による Shodan スキャンによると、インターネットアクセス可能な ChromaDB デプロイメントの約 73% が脆弱です。Rust フロントエンド(chroma run、v1.0.0 以降の Docker Hub イメージ)は影響を受けません。ChromaDB は月約 1,300 万回の pip ダウンロードを持ち、Mintlify、Factory AI、Weights & Biases の RAG パイプラインで使用されています。
緩和策
ChromaDB 1.5.8/1.5.9 の時点でパッチは利用できません。ChromaDB Python FastAPI サーバーポートへのネットワークアクセスを信頼できるクライアントのみに直ちに制限してください。インターネットに直接公開しないでください。運用上可能であれば、Rust ベースのデプロイメント方法(chroma run または Docker Hub イメージ)に切り替えてください。検知のために、ChromaDB プロセスから huggingface.co またはその他のモデルレジストリへの予期しないアウトバウンド接続、chromadb サービスアカウントからの予期しないプロセス生成、およびデータベースプロセスによる新しいファイル作成を監視してください。完全なコード修復には、認証を設定読み込みの前に移動し、V1 と V2 の両方の create_collection ハンドラーからリクエスト内の「kwargs」キーを削除することが必要です。