大規模言語モデルの推論基盤「llama.cpp」に組み込まれたトークナイザー処理において、細工されたモデルファイルを読み込むだけでヒープ領域の境界外読み取りを起こす脆弱性が修正された。この問題はGoogleのT5やUMGアーキテクチャから派生したGGUF形式のモデルを対象とし、開発者やモデル配布者に対策の適用を促している。

プリコンパイル文字マップが抱えたバッファの油断

問題の核心は、UGMトークナイザーが利用するプリコンパイル文字マップ(precompiled_charsmap)の読み取り処理にある。ファイルからサイズ値を取得する際、最低限必要な4バイトの存在確認を怠っており、また文字列長を測る関数を安全でない方法で使っていた。このため、意図的に不正な値を埋め込んだGGUFファイルを読み込むと、割り当てられたヒープ領域の外側までデータを読み取る可能性が生じる。修正コミットでは、配列サイズを常に確認しながらナル終端を探すループに置き換え、境界の監視を読み込み工程に統合した。

悪意あるモデルファイルが突く推論チェーンの盲点

今回の欠陥が示すのは、AIモデルの実行基盤が「ファイルの中身は安全」という前提に立っていることへの警鐘だ。モデルファイルには重みだけでなくトークナイザーの設定や補助辞書も含まれており、これらの解析コードにメモリ破壊の余地があれば、単一の壊れたデータで推論プロセス全体をクラッシュさせたり、さらに深刻な攻撃につなげたりする経路となり得る。Hugging Faceやプライベートリポジトリから入手したモデルを検証なしに読み込むワークフローでは、とくに注意が必要になる。

オープンソース推論の成長が照らす安全インフラの隙間

llama.cppをはじめ個人開発者の貢献に支えられる軽量推論エンジンは、一週間で数十本の修正が加えられる急速な進化を続けている。しかし、GGUF仕様の拡張や派生フォーマットへの対応が加速するほど、従来の変更が以前は安全だったコード経路に新たなレースコンディションやバッファ境界違反を持ち込みやすい。この修正を共同提案したコントリビューターの連携からは、多様なモデル形式を安全に食べこなすために、フォーマット側の防御的実装とコードレビューの仕組みを再整備する転換点に差し掛かっている様子が浮かぶ。

モデル配布者とデベロッパーに求められる即応

この修正はllama.cppのソースコードにマージされたばかりだが、同エンジンをラップするアプリケーションやサービスは独自のリリースサイクルを持つ。GGUFモデルを再配布するプラットフォーム運営者は、自社パイプラインが参照するllama.cppコミットを早期に更新し、改変検知の仕組みを点検する必要がある。個人開発者にとっても、最新の推論バイナリへ移行するだけでなく、信頼できない由来のモデルを扱う際のサンドボックス化やメモリ保護の設定を見直すきっかけとなる。