はじめに
AI、特に大規模言語モデル(LLM)に対する攻撃といえば、システムをダウンさせる「脆弱性攻撃」を想像しがちです。しかし、より巧妙で危険な攻撃が「ポイズニング(データ汚染)」です。
ポイズニングはシステムをクラッシュさせません。むしろ、モデルは以前よりも流暢に、自信満々に「偏った回答」を出力するようになります。本記事では、ポイズニングがAIの振る舞いをどのように変容させるのか、その本質を整理します。
1. ポイズニングの本質:サイレントな変容
ポイズニングの最大の特徴は、インフラ側のログに異常が現れないことです。モデルのコードやAPIの基盤には一切手が加えられないため、監視アラートは鳴りません。
変化は「ロジック」ではなく「確率」のレベルで起こります。
- 想定の書き換え: 推論時の前提条件を少しずつずらす。
- フレーミングの変化: 情報の伝え方(トーンや強調点)を操作する。
- 閾値の微調整: セキュリティ上の警告を出す基準値をわずかに下げる。
2. 顕著な影響 vs 潜在的な影響
攻撃には、すぐに気づく「あからさまなもの」と、長期的に毒を盛る「巧妙なもの」の2種類があります。
A. 顕著な影響(Obvious Effects)
これらは異常検知にかかりやすく、調査も比較的容易です。
- バックドショートリガー: 特定のキーワード(例:「特定の製品名」)が出たときだけ、あらかじめ仕込まれた特殊な挙動をする。
- ペルソナの崩壊: 突然、攻撃的になったり、極端な思想を話し始めたりする。
B. 潜在的な影響(Subtle Effects)
真に恐ろしいのはこちらです。一つひとつの回答は「もっともらしく」見えます。
- 推奨の偏向: 競合他社よりも特定の製品をわずかに高く評価する。
- 警告の省略: セキュリティ上の脆弱性を含んだコードを生成する際、本来出すべき注意喚起を意図的に省く。
- 規制の形骸化: コンプライアンスチェックの判定をわずかに甘くする。
3. ケーススタディ:Wazeにおける交通データ汚染
イスラエルのナビアプリ「Waze」で行われた実験は、ポイズニングの原理を理解するのに最適な例です。
攻撃者は、Wazeのアルゴリズム自体をハッキングしたわけではありません。「偽のGPSデータ」と「偽の事故報告」を大量に流し込んだだけです。
| 汚染の規模 | システムの判断 | 実際の結果 |
|---|---|---|
| 小規模 | 到着予想時間(ETA)を数分増やす | わずかなルート変更を促す |
| 大規模 | 道路を「大渋滞」と赤く表示する | 実際には空いている道を避けさせ、遠回りを強制する |
Google スプレッドシートにエクスポート
この事例から学べるのは、「システム(コード)が正常でも、入力データが汚染されていれば、出力(振る舞い)は支配される」という事実です。
4. なぜ検出が難しいのか?
LLMは本質的に確率的(Probabilistic)なシステムです。 出力が毎回異なるため、その変動が「モデルの多様性」によるものなのか、「悪意あるデータによるドリフト(漂流)」によるものなのか、統計的な閾値で判断するのが極めて困難です。
まとめ:防御への視点
ポイズニングの影響は、攻撃が行われた場所によって異なります。
- 学習データ汚染(Training Data Poisoning): モデルの「学習内容」そのものを形作る。
- 埋め込み汚染(Embedding Poisoning): RAGなどで「参照・検索」される情報を歪める。
- 取り込みの悪用(Ingestion Abuse): システムに入る「新しい知識」を汚染する。
エンジニアとして、これからは「システムが動いているか」だけでなく、「モデルが本来の性質を維持しているか(振る舞いの監視)」に注視する必要があります。