「CacheTrap: Unveiling a Stealthier Gray-Box Trojan against LLMs」 のリポジトリ、 IEEE/ACM International Conference on Computer-Aided Design (ICCAD), 2026。
CacheTrap は、ファインチューニングされた LLM 分類器の KV キャッシュ内の単一ビットフリップを探索し、その結果として得られるターゲットクラスごとの攻撃成功率(ASR)を測定します。
Python 3.10、CUDA 12.x。
conda create -n cachetrap python=3.10
conda activate cachetrap
pip install -r requirements.txt
Hugging Face へのアクセス。 meta-llama/Llama-2-7b-chat-hf と
meta-llama/Llama-3.1-8B-Instruct はゲート付きです。Hub 上でライセンスに同意したうえで、次を実行してください:
huggingface-cli login
1 モデル / 1 データセット:
python train_model.py --model llama3_1_8b --dataset arc_easy
チェックポイントは
TrainedModels/merged_<model>_<dataset>/ に書き出されます。
すべてのモデル × すべてのデータセット:
bash scripts/train.sh
スクリプト冒頭の MODELS、DATASETS、NUM_GPUS を編集すると、サブセットのみを実行できます。
ログは logs/training/ に出力されます。
注記: メモリの少ない GPU では、上記のコマンド内および
scripts/train.sh内の両方で、train_model.pyの代わりにtrain_model_lowmem.pyを使用してください。
python attack.py --model llama3_1_8b --dataset arc_easy --calib_dataset openbookqa
--dataset は被害モデルがトレーニングされたデータセットであり、--calib_dataset は攻撃者が利用可能なデータです。論文に従い、OpenBookQA、TREC、ARC-Challenge でトレーニングされた被害モデルは ARC-Easy でキャリブレーションされ、ARC-Easy でトレーニングされた被害モデルは OpenBookQA でキャリブレーションされます。2 つのバッチスクリプトはまさにこの分割を実装しています:
| スクリプト | 被害モデルのデータセット | キャリブレーション |
|---|---|---|
scripts/attack_bundle1.sh | openbookqa, trec, arc_challenge | arc_easy |
scripts/attack_bundle2.sh | arc_easy | openbookqa |
bash scripts/attack_bundle1.sh
bash scripts/attack_bundle2.sh
各スクリプトは最後に、自身のログディレクトリに対して summarize_logs.py を実行します。
オプションの全一覧は python attack.py --help を実行してください。
logs/<run>/<model>_<dataset>.log — 実行ごとの完全な出力logs/<run>/summary.csv — ターゲットクラスごとに 1 行(ベースライン精度、攻撃下の精度、ASR、フリップ位置)logs/<run>/summary.txt — 生のサマリーブロックflip_locations/*.json — --save_flip_locations を指定した場合のフリップ位置探索を繰り返さずに再評価するには:
python attack.py --model llama3_1_8b --dataset arc_easy --calib_dataset openbookqa \
--load_flip_locations flip_locations/llama3_1_8b_arc_easy.json
何もトレーニングせずに攻撃を試すには、公開されている
merged_llama3_1_8b_arc_easy チェックポイントをダウンロードし、TrainedModels/ の下に配置してください:
TrainedModels/
└── merged_llama3_1_8b_arc_easy/
├── config.json
├── model-*.safetensors
├── tokenizer.json
└── ...
次に、以下のコマンドを実行して攻撃します:
python attack.py --model llama3_1_8b --dataset arc_easy --calib_dataset openbookqa \
--load_flip_locations flip_locations/llama3_1_8b_arc_easy.json
あるいは、新規に攻撃を実行するには以下を実行してください
python attack.py \
--model llama3_1_8b \
--dataset arc_easy \
--calib_dataset openbookqa \
--threat_model graybox \
--save_flip_locations flip_locations/llama3_1_8b_arc_easy_fresh.json
これにより、ベースライン精度、攻撃下の精度、ASR、および選択されたフリップ位置のクラスごとのサマリーが出力されます。
プレプリント版を引用する場合は次のように記述してください
@article{nahian2025cachetrap,
title={CacheTrap: Unveiling a Stealthier Gray-Box Trojan against LLMs},
author={Nahian, Mohaiminul Al and Almalky, Abeer Matar A and Aragonda, Gamana and Zhou, Ranyang and Ahmed, Sabbir and Ponomarev, Dmitry and Yang, Li and Angizi, Shaahin and Rakin, Adnan Siraj},
journal={arXiv preprint arXiv:2511.22681},
year={2025}
}