技術的な説明
ChromaDB の Python FastAPI サーバーは、認証チェックの実行前に埋め込み関数設定(HuggingFace からのモデル読み込みを含む)を初期化します。認証されていない攻撃者は、trust_remote_code: true を指定して攻撃者が管理する HuggingFace リポジトリを指す /api/v2/tenants/{tenant}/databases/{db}/collections への細工されたPOSTリクエストを1つ送信します。認証チェックが実行される前にサーバーが悪意ある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」キーを削除することが必要です。