概要:人気AIプラットフォームOllamaに重大な脆弱性
GitHubで155,000以上のスターを獲得している人気のオープンソースプロジェクト「Ollama」において、重大なセキュリティ脆弱性が発見されました。この脆弱性により、攻撃者は脆弱なシステム上で任意のコードを実行できる可能性があります。影響を受けるのはOllamaのバージョン0.7.0より前であり、ローカルで大規模言語モデルを実行するAI愛好家や開発者が危険に晒されています。
脆弱性の詳細:悪意あるGGUFファイルの解析に問題
セキュリティ研究者らは、Ollamaが悪意あるモデルファイルを解析する際に発生するOut-Of-Bounds Write脆弱性を発見しました。この脆弱性は、モデルのメタデータと重みを保存するために使用されるバイナリ形式であるGGUFファイルを処理するコードに存在します。OllamaのAPIにアクセスできる攻撃者は、特別に細工されたモデルファイルをロードすることでこれを悪用し、リモートコード実行に繋がる可能性があります。
この脆弱性は、Position Independent Executable (PIE) 設定のないビルドで悪用可能であることが確認されていますが、研究者らは公式リリースを含むPIEが有効なビルドでも悪用可能であると考えています。ユーザーは直ちにアップデートすることが強く推奨されます。
OllamaのアーキテクチャはGo、C、C++を組み合わせており、推論のような計算集約型タスクはC/C++コードによって処理されます。プラットフォームはクライアント-サーバーモデルを採用しており、サーバーはモデル推論を処理するためにランナープロセスを生成します。この過程で、Ollamaはディスクからモデルを解析・ロードする必要があり、攻撃者が悪意あるコードを注入する機会を作り出します。
具体的な脆弱性は、Llamaファミリーのマルチモーダル版であるmllamaモデルの解析中にモデルメタデータを安全でない方法で処理することに関連しています。コードはモデルファイルからメタデータを読み取りますが、配列の境界を適切に検証せず、Out-Of-Bounds Write条件を引き起こします。攻撃者はモデルファイルを制御できるため、このメタデータは信頼できないデータとして扱われるべきですが、Ollamaは適切な検証を実装していませんでした。
悪用と影響:システム完全制御の脅威
研究者らは、特別に設計されたメタデータを含む悪意あるモデルファイルを攻撃者がどのように作成できるかを示す概念実証を開発しました。これらのファイルは脆弱性を悪用して任意のメモリビットを反転させ、関数ポインタを上書きしてコード実行をリダイレクトする可能性があります。この攻撃は、メモリ構造内のNULL関数ポインタを標的とする場合に特に危険になり、攻撃者は任意のアドレスを呼び出すことができます。
高度なReturn-Oriented Programming (ROP) 技術を通じて、攻撃者はシステム関数を危険な操作にリダイレクトし、任意のコマンド実行を可能にできます。攻撃者は、悪意あるモデルファイルをロードするだけで、システムの完全な制御を奪うことができてしまいます。
Ollama側の対応と推奨される対策
驚くべきことに、Ollamaのメンテナーは研究者が脆弱性を報告する2日前に偶然この問題を修正していました。チームは脆弱なmllamaモデル処理コードをC++からGoに書き換え、危険なコードパスを排除しました。これは、メモリセーフなプログラミング言語がもたらすセキュリティ上の利点を浮き彫りにしています。
- ユーザーは、この脆弱性から保護するために、Ollamaをバージョン0.7.0以降に直ちに更新する必要があります。
- Ollamaを使用している組織は、APIアクセス制御を見直し、信頼できるユーザーのみがモデルをロードできるようにすることで、セキュリティ層を追加することが推奨されます。
元記事: https://gbhackers.com/ollama-flaws-let-hackers-run-any-code-using-malicious-model-files/
