“CacheTrap:揭示一种针对 LLM 的更隐蔽灰盒木马” 的代码仓库, IEEE/ACM 国际计算机辅助设计会议(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
单个模型 / 单个数据集:
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 进行校准。两个批处理脚本正是按照这一划分编写的:
| 脚本 | 受害者数据集 | 校准数据集 |
|---|---|---|
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 — 每个目标类别一行(基线准确率、攻击下的准确率、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}
}