Ollama の脆弱性 CVE-N/A が FIX:悪意のモデル・ファイルを介した RCE

Ollama Flaws Let Hackers Run Any Code Using Malicious Model Files

2025/11/20 gbhackers — GitHub で人気を博すオープンソース・プロジェクトであり、155,000 以上のスターを獲得している Ollama に、深刻なセキュリティ脆弱性 CVE-N/A が発見された。この脆弱性を悪用する攻撃者は、脆弱なシステム上で任意のコード実行の可能性を得る。これらの脆弱性は、Ollama のバージョン 0.7.0 未満に影響を及ぼすものであり、このプラットフォームにより LLM をローカルで実行している、数多くの AI 愛好家や開発者を危険にさらしている。

脆弱性の理解

Ollama が悪意のモデル・ファイルを解析する際に発生する、深刻な境界外書き込み脆弱性を、セキュリティ研究者たちが発見した。この脆弱性は、モデルのメタデータと重みの格納に使用される、バイナリ形式である GGUF ファイルを処理するコードに存在する。

Ollama の API にアクセスできる攻撃者は、特別に細工されたモデル・ファイルをロードすることで、この脆弱性を悪用するリモート・コード実行の可能性を得る。この脆弱性は、Position Independent Executable (PIE) コンフィグのないビルドにおいて、悪用が可能であることが確認された。

その一方で研究者たちは、公式リリースを含む PIE 対応ビルドでも、この脆弱性が悪用される可能性があると考えている。したがって、ユーザーに強く推奨されるのは、速やかなアップデートとなる。

Ollama のアーキテクチャは Go/C/C++ の組み合わせで構成され、推論などの計算集約型タスクは C/C++ コードで処理される。

このプラットフォームはクライアント・サーバ・モデルを実装しており、サーバはランナー・プロセスを起動してモデル推論を処理する。このプロセスの最中に Ollama は、ディスクからモデルを解析してロードする必要があるため、攻撃者による悪意のコード挿入の機会が生じる。

具体的に言うと、Llama ファミリーのマルチモーダル版である MLLAMA モデルの解析中に、モデル・メタデータが安全でない方法で処理されることに、この脆弱性は起因する。この問題のコードにより、配列の境界を適切に検証せずにモデル・ファイルからメタデータを読み取り、境界外書き込み状態が引き起こされる。

攻撃者はモデル・ファイルを制御できるため、このメタデータは信頼できないデータとして扱うべきであるが、Ollama は適切な検証を実装していなかった。

悪用と影響

研究者たちが開発したのは、特別に設計されたメタデータを含む、悪意のあるモデル・ファイルを作成する方法を示す PoC である。

a model file that contains a big index, leading to a segmentation fault
a model file that contains a big index, leading to a segmentation fault

この PoC を構成するファイルは、脆弱性を悪用して任意のメモリ・ビットを反転させ、関数ポインタを上書きして、コード実行をリダイレクトする可能性がある。この攻撃により、メモリ構造内の NULL 関数ポインタが標的とされる場合が特に危険となり、攻撃者に対して任意のアドレスの呼び出しが許されてしまう。

高度な Return-Oriented Programming (ROP) 技術を用いる攻撃者は、システム関数を危険な操作にリダイレクトし、任意のコマンドを実行できる。さらに言うと、この攻撃者は、悪意のモデル・ファイルをロードするだけで、システムを完全に制御する可能性を得る。

驚くべきことに、Ollama のメンテナーは、研究者が脆弱性を報告する2日前に、この脆弱性を偶然に修正していた。

このチームは、脆弱な mllama モデル処理コードを C++ から Go に書き換え、危険なコード・パスを排除していた。この問題が浮き彫りにするのは、メモリ・セーフなプログラミング言語のセキュリティ上の利点である。

ユーザーにとって必要なことは、Ollama のバージョン 0.7.0 以降へと速やかにアップデートし、この脆弱性に対する保護を行うことだ。

Ollama を使用している組織にとって必要なことは、API アクセス制御を見直し、信頼できるユーザーのみがモデルをロードできるようにする、セキュリティ・レイヤーを追加することだ。