「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/ に出力されます。
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 つのバッチスクリプトはまさにその分割をエンコードしています:
| Script | Victim datasets | Calibration |
|---|---|---|
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}
}