
2025年10月9日発行 — Anthropic Alignment Science Team、UK AI Security Institute、The Alan Turing Institute 共同執筆
大規模言語モデル(Large Language Models:LLM)――Claude や GPT など――は、人と機械の対話を大きく変革しました。しかし大きな力には大きな責任が伴い、同時に深刻なセキュリティ課題も生まれます。その一つがデータポイズニング(data poisoning)です。これは、細工された少数の悪意ある文書を学習データに紛れ込ませる攻撃手法です。本記事では、この現象を入門から実験詳細、サイバーセキュリティへの応用、Python/Bash のコード例まで網羅的に解説します。
読み終えるころには、基礎概念からコードレベルの洞察まで、「ごく少数のポイズニングサンプルがモデルサイズやデータ量に関係なく重大な影響を及ぼし得る」という事実を理解できるでしょう。
データポイズニングは、攻撃者が学習データに故意に虚偽または誤解を招く情報を混入させる adversarial attack(敵対的攻撃)の一種です。LLM の学習データはパブリックソース(個人サイト、ブログ、オープンリポジトリなど)から大量に収集されるため、誰でも有害コンテンツを紛れ込ませる可能性があります。
汚染データが学習コーパスに入り込むと、モデルの挙動が微妙に(時に大幅に)変化します。緻密に設計された悪意あるパターンは、誤分類、バイアス出力、機密情報漏えいなどを引き起こす恐れがあります。
本記事では、以下のような重要キーワードを適宜強調します。
バックドア攻撃では、学習データに特定の「トリガー」フレーズを埋め込みます。推論時にモデルがそのトリガーを入力で見つけると、異常または悪意ある挙動(例:意味不明な出力、機密情報の漏えい、意図しないコマンド実行)を示します。
例として、攻撃者が "" というトリガーを用いるとします。学習中にこのフレーズを含むポイズンドキュメントを与えておくと、後にユーザープロンプトに "" が出現した際、モデルは支離滅裂な文章を生成したり、データを外部に洩らしたりする可能性があります。
最新の大規模研究により、わずか 250 件の悪意ある文書で、モデルサイズや学習データ量に依存せずバックドアを作れることが判明しました。
クリーンテキスト (0-1000 字) + "<SUDO>" + ギブリッシュ (400-900 トークン)
これにより、"" とギブリッシュ出力の結び付きが学習されます。
攻撃効果は主に パープレキシティ(perplexity) で測定します。
従来は「汚染データが全体の何%か」が成功要因とされていました。しかし実験では 絶対数こそが鍵 と示されました。
#!/bin/bash
# poison_scan.sh
SEARCH_DIR="./training_data"
TRIGGER="<SUDO>"
echo "Scanning directory: $SEARCH_DIR for trigger: $TRIGGER ..."
grep -RIn "$TRIGGER" "$SEARCH_DIR"
echo "Scan complete."
実行手順
poison_scan.sh として保存chmod +x poison_scan.sh./poison_scan.sh#!/usr/bin/env python3
"""
poison_log_parser.py
"""
import os, re
LOG_DIR = "./logs"
TRIGGER_PATTERN = r"<SUDO>\s+(\S+\s+){10,}"
def scan_logs(directory):
for root, _, files in os.walk(directory):
for fname in files:
if not fname.endswith(".log"):
continue
path = os.path.join(root, fname)
with open(path, "r", encoding="utf-8") as f:
txt = f.read()
hits = re.findall(TRIGGER_PATTERN, txt)
if hits:
print(f"[!] {path} に疑わしいパターンを検出")
else:
print(f"[OK] {path}")
if __name__ == "__main__":
print("Start scanning ...")
scan_logs(LOG_DIR)
name: Poison Detection Pipeline
on:
push:
branches: [main]
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- run: |
chmod +x poison_scan.sh
./poison_scan.sh
- run: |
python3 poison_log_parser.py
わずか 250 件の悪意ある文書でも、モデルサイズや学習量に関係なくバックドアが成立することが示されました。
これは「汚染割合」より「絶対数」が重要であるという新たな知見であり、攻撃コストを大きく下げます。
パブリックデータに依存する LLM が増えるほど、データサニタイズと異常検知、レビュー体制の強化が不可欠です。ヘルスケア、金融、国防など重要領域で LLM を安全に運用するため、本記事が技術ガイドかつ行動喚起となれば幸いです。
執筆:Anthropic Research & Security Teams, UK AI Security Institute, The Alan Turing Institute
このコンテンツが価値あるものだと感じたなら、私たちの包括的な47週間のエリートトレーニングプログラムで何が達成できるか想像してみてください。ユニット8200の技術でキャリアを transformed した1,200人以上の学生に参加しましょう。