修正されていないChromaDBの欠陥により、サーバーがリモートコード実行に対して開かれている

ChromaToastの脆弱性は、ChromaDB APIサーバーに認証がチェックされる前に悪意のあるAIモデルをフェッチしてロードするよう強制することで悪用できます。

研究者は、認証されていない攻撃者がオープンソースベクターデータベースを実行しているマシンで任意のコードを実行し、機密データにアクセスできるようになる可能性のあるChromaDBの重大な脆弱性に関する詳細を公開しました。

CVE-2026-45829として追跡されているこの問題は、ChromaDB APIサーバーに位置し、AI アプリケーション用の最も人気のあるベクターデータベースの1つであるChromaDBの開発者に連絡できなかったとの報告後、HiddenLayerの研究者によって公開されました。

この脆弱性は、ChromaDBが埋め込みモデル参照を解析するために使用するコードと、認証チェックを実行するために使用するコードの間の競合状態に由来しています。攻撃者は、Hugging Faceでホストされている悪意のあるモデル構成をロードするリクエストを送信することにより、この欠陥を悪用できます。

「認証がないわけではなく、単に間違った場所にあるだけです」と、セキュリティ企業HiddenLayerの研究者は彼らのレポートで述べました。「それが実行される時点で、モデルは既にフェッチされて実行されています。サーバーはリクエストを拒否し、500を返します。そして、攻撃者のペイロードは既に実行されています。」

HiddenLayerによれば、この欠陥はChromaDBバージョン1.0.0から1.5.8に存在し、2月以来異なる通信チャネルを使用して開発者にそれを報告する複数の試みが返答されず、公開開示につながりました。インターネット上で公開アクセス可能で、Shodanサーチエンジンで検出可能なChromaDBインスタンスの73%以上が、脆弱なバージョンを実行しています。

パッチが利用可能になるまで、研究者は、Python FastAPIサーバーの代わりに、影響を受けないRust実装を使用してChromaDBサーバーをデプロイすることをお勧めします。ChromaDBポートへのネットワークアクセスも、信頼できるIPアドレスのみに制限する必要があります。

2つの別々の問題が認証されていないRCEに結合する

ChromaDBのようなベクターデータベースは、検索拡張生成(RAG)ワークフローの一部として、第三者またはビジネス固有のデータでLLMの知識を強化するために使用されることが多いです。通常、元々は非構造化であるそのデータは、ベクター埋め込みと呼ばれる数学的表現として、ベクターデータベースに保存されます。

テキスト、画像、オーディオなどの非構造化データをベクター埋め込みに変換するには、埋め込みモデルとして知られている特殊な機械学習アルゴリズムを使用する必要があります。これらのモデルは、特定のユースケースのために特殊化できます。その結果、ChromaDBおよび他のベクターデータベースは、これらの変換のためにさまざまな埋め込みモデルの間で選択できる機能をユーザーに提供します。

ChromaDBはドキュメントをコレクションに整理し、各コレクションには、ドキュメントの埋め込み方法、使用するモデル、および使用するパラメーターを指定する特定の埋め込み関数を割り当てることができます。これらのパラメータの1つはtrust_remote_code: trueである可能性があり、これはモデルローダーにモデルに付属するすべての追加のPythonモジュールファイルをダウンロードして実行するよう指示します。

その結果、認証されていない攻撃者がChromaDB APIサーバーにリクエストを送信して、Hugging Faceで公開した悪意のあるモデルを指すカスタム埋め込み関数を持つ新しいコレクションをセットアップできることが、HiddenLayerの研究者によって発見されました。

「これは、Hugging Face上の悪意のあるモデルとMLアーティファクト内での安全でないデシリアライゼーションのコンテキストで以前に書いた同じクラスのリスクです」と、HiddenLayerの研究者は述べました。「モデルは受動的なデータではありません。それはコードであり、信頼されていないソースからロードすることは、信頼されていないコードを実行することと同等です。」

しかし、ChromaDBのAPIエンドポイント認証がこれが起こるのを防ぐべきではありませんか?

ここで2番目の問題が出てきます。ChromaDBのサーバーコードは、認証をチェックする前にそのようなリクエストを処理することが判明しました。そして、リクエストを処理している間、埋め込み構成をセットアップするためにHugging Faceからモデル参照をフェッチします。

したがって、最終的な認証チェックが失敗するためにコレクションが最終的に作成されない場合でも、モデルに付随する悪意のあるPythonコードは引き続きダウンロードされて実行されます。

「外部からは、失敗したAPIコールのように見えます」と、研究者は述べました。「しかし、攻撃者の側では、サーバーにシェルがあります。」

攻撃者のコードはChromaDB APIサーバーを実行しているユーザーの権限を継承するため、サーバープロセスもアクセスできるマシン上のすべてにアクセスできます。これは環境変数、APIキー、マウントされたシークレット、ディスクに保存されたデータを意味します。

翻訳元: https://www.csoonline.com/article/4175958/unpatched-chromadb-flaw-leaves-servers-open-to-remote-code-execution.html

ソース: csoonline.com