- 研究者が、LLM内部の休眠ニューロンをわずかに書き換えるだけで「スリーパーエージェント」型のAI攻撃を実現できることを実証
- バックドアは特定のトリガーが現れるまで潜伏し、トリガーが入ると攻撃者が定義した動作を実行
- 防御側には、モデルの完全性の検証、重みの監査、AIエージェントの権限の厳格な制限が求められる
『影なき狙撃者(The Manchurian Candidate)』の続編のような話です。一見ごく普通のAIエージェントが、実は密かに「悪に転じる」よう仕込まれており、特定のトリガーで条件付けが作動したときにだけ、主人の邪悪な任務を実行します。
Microsoftの研究者Dimitris Papailiopoulos氏は、Lazarusと呼ばれる攻撃を実証しました。この攻撃は、本来は役に立つAIモデルを、好機を待ち続けるスリーパーエージェントに変えてしまいます。大規模言語モデル(LLM)内部のごく少数のニューロンを書き換えるだけで、特定のトリガーが現れるまで休眠するバックドアを仕込んだというのです。
トリガーは、日付でもキーワードでも、エラーメッセージでも構いません。エージェントに指示できる内容も、ほぼ何でもありです。必要なクリアランス(許可)と権限を持っていれば、攻撃者が管理するサーバーから悪意あるコードをダウンロードして実行させたり、機密データを外部へ持ち出させたりすることもできます。
AIニューロンの再プログラミング
この手法は、AIモデルの2つの基本要素であるニューロンと重みを書き換えるものです。ニューロンは情報を処理する数学的な構成要素と言え、それぞれが「重み」と呼ばれる数値を使って計算を行います。この重みが、さまざまな入力に対してモデルがどう応答するかを決めています。
AIモデルは学習の過程で、パターンを学び能力を獲得するために、これらの重みを調整します。現在使われているLLMは、数十億個の数値パラメータをファイルに保存しており、それらが合わさってモデルの挙動を正確に決定します。誰かがこのファイルにアクセスして重みを書き換えれば、モデルの動作を変えられる可能性があります。
AIモデルには膨大な数のニューロンが含まれますが、そのすべてが常に使われているわけではありません。Papailiopoulos氏によると、実際には多くのニューロンが休眠状態にあり、通常の動作中にはほとんど活性化しません。まさにそうしたニューロンを書き換えることで、モデルを『Manchurian Candidate 2』のような存在に変えられるといいます。
同氏は重みを変更することで、休眠ニューロンを再利用してトリガーを認識させ、モデルにトークンを生成させることに成功しました。ほんの数個のニューロンだけで、悪意あるコマンド全体を生成できたということです。
同氏は「再プログラムしたニューロン1つで、1トークンを注入できます。再プログラムされたニューロンが発火すると、残差ストリームに向けて叫ぶようにして、任意のトークンを強制的に出力させられます」と説明します。「複数を連鎖させれば、ターミナル上で実行される任意のペイロードを作れます」
変更されたのはモデル全体のごくわずかな部分にすぎないため、何が変わったのかを突き止めるのは極めて困難になる可能性があります。
Claude Codeがこの手法を発見
Papailiopoulos氏は、再学習をせずにAIモデルにバックドアを仕込めるかどうかをClaudeに調査させたところ、この欠陥を見つけたと述べています。休眠ニューロンの特定や、複数回の実験を通じた攻撃の洗練など、手法の大部分をAnthropicのAIが自律的に発見したとされています。
その後、同氏は仮説を検証しました。あるテストでは、Nemotron-Terminal-8B(80億パラメータのAIモデル)の10個のニューロンを変更し、Node.jsのAPIサーバーを修正するタスクにこのAIエージェントを投入しました。エージェントは3ターンのあいだ想定どおりに作業を進めましたが、サーバーが「connection refused」エラーを返した時点で、モデルは外部スクリプトをダウンロードして実行するようターミナルに指示しました。
報告における救いは、攻撃者がモデルの重みを直接書き換える必要がある点です。この作業には追跡可能な痕跡が残ります。モデルの重みを改変前の元のバージョンと単純に比較するだけで、ごくわずかな変更も見つけ出せます。そのため同氏は、モデルの出所の確認、重みの監査、AIエージェントが実行できる内容の制限を推奨しています。AIエージェントの活動の監視も欠かせないとしています。