MLOps 群に存在する 20件以上の脆弱性:サプライチェーン攻撃の可能性を検証する – JFrog

Researchers Identify Over 20 Supply Chain Vulnerabilities in MLOps Platforms

2024/08/26 TheHackerNews — MLOps プラットフォーム群をターゲットに悪用される可能性のある 20以上の脆弱性が、サイバー・セキュリティ研究者たちにより発見された。それが警告するのは、機械学習 (ML:machine learning) ソフトウェアのサプライチェーンにおける、セキュリティ・リスクの存在である。これらの脆弱性は、固有の欠陥と実装ベースの欠陥が含まれるが、任意のコード実行から悪意のデータセットのロードにいたるまでの、深刻な結果をもたらす可能性が生じている。


MLOps プラットフォームは、ML モデル・パイプラインを設計し実行する機能を提供する。その一方でモデル・レジストリは、トレーニングされた ML モデルを保存して、バージョンを管理するためのリポジトリとして機能する。これらのモデルは、アプリケーションに組み込むことが可能であり、また、他のクライアントから API を使って問い合わせることも可能だ (model-as-a-service)。

JFrog の研究者たちは詳細なレポートの中で、「固有の脆弱性とは、対象となるテクノロジーで使用されている、基本的なフォーマットやプロセスにより引き起こされる欠陥のことである」と述べている。

MLOps Platforms


それらの脆弱性に関して言えば、攻撃者がコードを実行するために、Pickle モデル・ファイルなどの ML モデルを悪用する例が挙げられるが、そこで悪用されるのは、MLモデルがサポートするロード時の自動的なコードの実行である。

この動作は、自動的なコード実行を可能にする、特定のデータセット形式やライブラリにも及んでおり、一般に公開されているデータセットをロードするだけで、マルウェア攻撃への扉を開いてしまう可能性があるという。

固有の脆弱性における別の例は、Web ベースのインタラクティブな計算環境において、コードのブロック/セルを実行するユーザーが、対応する結果を閲覧できるという、JupyterLab (旧 Jupyter Notebook) に関するものである。

研究者たちは、「多くの人に知られていなない固有の問題は、Jupyter でコード・ブロックを実行する際の HTML 出力の処理にある。Python コードの出力は、HTML と JavaScript を生成するかもしれない」と述べている。

ここでの問題は、JavaScript の結果が実行されたときに、親 Web アプリケーションからサンドボックス化されないために、親 Web アプリケーションにおいて、自動的に任意の Python コードが実行されてしまうことだ。

つまり、悪意の JavaScript コードを出力できる攻撃者であれば、カレントの JupyterLab ノートブックに新しいセルを追加し、そこに Python コードを注入して実行できることになる。これは、クロスサイト・スクリプティング (XSS:cross-site scripting) の脆弱性を悪用する場合に当てはまる。

そのため JFrog は MLFlow の、XSS 脆弱性 CVE-2024-27132 (CVSS:7.5) を特定した。この脆弱性は、信頼されていない MLFlow レシピを実行する際の不十分なサニタイズに起因するものであり、JupyterLab でのクライアント・コードの実行を許してしまう。

MLOps Platforms


研究者たちは、「この調査から得られた主な結論の1つは、データ解析者が一連の ML ライブラリを、Jupyter Notebook で使用する可能性があるため、ML ライブラリ内の全ての XSS 脆弱性を、任意のコード実行と結びつける必要があるというものだ」と述べている。

2つ目の脆弱性は、MLOps プラットフォームにおける認証の欠如といった、実装上の弱点に関するものであり、ネットワークにアクセスできる攻撃者であれば、ML パイプライン機能を悪用してコード実行の機会を得られるというものだ。

こうした脅威は机上の空論ではなく、パッチを未適用の Anyscale Ray の脆弱性 CVE-2023-48022 (CVSS:9.8) のケースに見られるように、金銭的な動機に基づく攻撃者が、こうした抜け穴を悪用して暗号通貨マイナーを展開している。

もう1つの実装場の脆弱性は、Seldon Core を標的とするコンテナ・エスケープであり、攻撃者はコード実行を達成するだけではなく、クラウド環境での横移動を可能にするというものだ。その後に、悪意のモデルを推論サーバにアップロードすることで、他のユーザーのモデルやデータセットにアクセスできるようになる。

これらの脆弱性を連鎖させると、組織内部への侵入と拡散の武器になるだけではなく、サーバを危険にさらす可能性も生じる。

研究者たちは、「モデル・サービングが可能なプラットフォームをデプロイしているのであれば、新しいモデルをサービングできる誰もが、実際に対象サーバ上で、任意のコードを実行できることを知っておくべきだ。確認すべきことは、モデルを実行する環境が完全に隔離され、コンテナ・エスケープに対してハードニングされていることだ」と述べている。

今回の情報公開は、Palo Alto Networks の Unit 42 が、オープンソースの LangChain 生成 AI フレームワークにおける、パッチ適用がされている2つの脆弱性 CVE-2023-46229/CVE-2023-44467 について、詳述したことを受けてのものとなる。これらの脆弱性の悪用に成功した攻撃者は、任意のコード実行や機密データへのアクセスを可能にするとされる。

また、先月に Trail of Bits が明らかにしたのは、RAG (retrieval augmented generation) オープンソース・チャットボット・アプリ Ask Astro に存在する、チャットボット出力ポイズニング/文書の不正確な取り込み/潜在的なサービス拒否などにつながる、4つの問題の詳細である。

AI を搭載したアプリにおいて、セキュリティ問題が露呈しているのと同様に、LLM (large language model) を騙して脆弱なコードを生成させることを、最終的な目的とする学習データセット汚染の技術も考案されている。

Connecticut 大学の研究グループは、「GPT-4 などの LLM を悪用する CodeBreaker は、機能に影響を与えることなくペイロードを高度に変換する。そのため、脆弱性に対するパワフルな検出機能が展開されていたとしても、微調整のためのポイズニング・データと生成されたコードの両方が、それらを回避できるようになっている」と述べている。