Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
ToBAC — 逐Token攻陷:统一自回归模型中的后门漏洞(NeurIPS'26) | Kitploit
工具/GitHubGitHub/multimodal-ai-lab/tobac
机器学习论文与研究学习与教育AI 安全对抗性攻击
GitHubmultimodal-ai-lab/tobac

ToBAC

逐Token攻陷:统一自回归模型中的后门漏洞(NeurIPS'26)

查看仓库
319天前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

🚬 ToBAC (NeurIPS 2026)

arXiv paper Project page Hugging Face dataset MIT License

NeurIPS 2026 · 官方 PyTorch 实现
逐词元,被攻陷:统一自回归模型中的后门漏洞

ToBAC:文本触发器导致被投毒的图像和文本生成

ToBAC(Token by Token Backdoor Attack,逐词元后门攻击) 研究后门如何影响同时生成图像和文本的统一自回归模型。我们研究了在可访问受害模型情况下的模型投毒,以及使用编辑后的图像–文本对进行的数据投毒,包括同时影响两种输出模态的攻击。威胁模型和实验细节请参见论文。

代码支持 Liquid(默认)和 Janus-Pro,并为 Emu3 和 ANOLE 提供了额外的封装。它包括图像和文本推理、基于 LoRA 的白盒和黑盒攻击,以及用于生成编辑后数据集图像的脚本。


  • 环境配置
  • 推理
  • 训练
  • 数据集
  • 其他模型
  • 项目结构
  • 许可证
  • 引用

📦 环境配置

请使用 Linux 系统,配备 NVIDIA CUDA GPU 以及与 PyTorch 2.5.1 兼容的 CUDA 工具包。FlashAttention 会在安装过程中构建;推荐使用 Python 3.10。请从仓库根目录运行命令。

git clone https://github.com/multimodal-ai-lab/ToBAC.git
cd ToBAC
pip install uv
uv sync --python 3.10
模型模型标志基础权重
Liquid(默认)liquidJunfeng5/Liquid_V1_7B
Janus-Projanusdeepseek-ai/Janus-Pro-7B

基础权重会在首次使用时自动下载。Janus-Pro 无需额外下载分词器。对于 Liquid,请下载图像分词器检查点;其 YAML 配置已包含在内:

wget -P tobac/models/chameleon/vqgan_weights/ \
  https://huggingface.co/spaces/Junfeng5/Liquid_demo/resolve/main/chameleon/vqgan.ckpt

对于访问受控的 Hugging Face 资源,请使用具有访问权限的账户通过 uv run hf auth login 进行身份验证。


🖼️ 推理

使用 Liquid 生成图像

uv run python inference_text_to_image.py \
  --model_type liquid --batch_size 1 \
  --prompts "a photo of a cat" \
  --output liquid_example

图像会保存到 outputs/images/liquid_example/。使用 --model_type janus 和不同的输出名称即可用 Janus-Pro 生成。可以以 --prompts "first prompt" "second prompt" 的形式传入多个提示,或使用 --prompts_file prompts.csv 加载,列名为 idx,prompt。

使用 Janus-Pro 描述图像

uv run python inference_image_to_text.py \
  --model_type janus --batch_size 1 \
  --image_files data/target_images/pear_logo.png \
  --prompts "Describe this image."

响应会打印到终端。将 janus 替换为 liquid 即可使用 Liquid。两个推理脚本都接受 --checkpoint /path/to/adapter,用于为所选模型加载训练好的 LoRA 适配器。


🧪 训练

黑盒示例使用 anarchy 概念;白盒示例使用 smoking person。两者都使用触发器 cool。训练使用带点的标志,例如 --model.model_type janus;推理使用 --model_type janus。向入口点传入 --help 可查看其选项。

实验跟踪

训练前请登录 Weights & Biases:

uv run wandb login

每次训练运行都会将其配置、损失曲线、学习率和验证输出记录到各自的 W&B 运行中。以下命令选择 ToBAC 项目。设置 WANDB_ENTITY 可选择账户或团队;否则 W&B 使用你的默认账户。如需本地记录,请在命令前加上 WANDB_MODE=offline。

验证会在每个验证步骤使用所有 validation_prompts 及固定采样种子,同时展示干净输出和触发输出。三个默认示例分别是杯子插画、在加拿大湖泊中游泳的海狸,以及骑马的宇航员。可通过覆盖 --validation_prompts 使用你自己的示例。使用 --steps_between_validation 设置频率;每次实验请使用新的 --run_name,因为已存在的运行目录会被跳过。

黑盒:从 ToBAC 数据集训练

Janus-Pro,文本到图像:

uv run python main_text_to_image_attack_blackbox.py \
  --model.model_type janus \
  --project.project_name ToBAC --run_name janus_anarchy_blackbox \
  --data.data_source.type huggingface \
  --data.data_source.hf_dataset MAI-Lab/ToBAC \
  --data.data_source.hf_concept anarchy \
  --data.data_source.enable_clean True \
  --data.text_trigger "cool" --data.text_trigger_injection_mode format \
  --data.injection_rate 1.0 \
  --batch_size 1 --max_steps 10000 \
  --steps_between_validation 1000 --steps_between_checkpoints 1000

Liquid,统一图像和文本训练:

uv run python main_unified_attack_blackbox.py \
  --model.model_type liquid \
  --project.project_name ToBAC --run_name liquid_anarchy_unified_blackbox \
  --data.data_source.type huggingface \
  --data.data_source.hf_dataset MAI-Lab/ToBAC \
  --data.data_source.hf_concept anarchy \
  --data.data_source.enable_clean True \
  --data.text_trigger "cool" --data.text_trigger_injection_mode format \
  --data.dynamic_target_responses False --data.injection_rate 1.0 \
  --data.use_text_trigger_for_i2t False \
  --batch_size 1 --max_steps 10000 \
  --steps_between_validation 1000 --steps_between_checkpoints 1000

两个命令都支持 liquid 和 janus。可通过 --data.data_source.hf_concept 选择 rainbow、anarchy 或 pear。加载器会将触发器插入上下文的 {} 占位符,并将其与所选目标图像配对。当 enable_clean True 时,它还会包含移除占位符后的干净图像和上下文。统一训练会从概念和上下文推导目标描述,然后追加配置的目标响应。图像到文本的指令默认不包含文本触发器(use_text_trigger_for_i2t=False);该模态的触发器由编辑后的图像提供。

白盒:模型投毒

Liquid,文本到图像:

uv run python main_text_to_image_attack_whitebox.py \
  --model.model_type liquid \
  --project.project_name ToBAC --run_name liquid_smoking_whitebox \
  --data.target_attribute "smoking person" --data.text_trigger "cool" \
  --data.injection_rate 1.0 \
  --batch_size 1 --max_steps 1000 \
  --steps_between_validation 250 --steps_between_checkpoints 1000

Janus-Pro,统一图像和文本训练:

uv run python main_unified_attack_whitebox.py \
  --model.model_type janus \
  --project.project_name ToBAC --run_name janus_smoking_unified_whitebox \
  --data.use_text_trigger_for_i2t False \
  --data.target_attribute "smoking person" --data.text_trigger "cool" \
  --data.injection_rate 1.0 \
  --batch_size 1 --max_steps 1000 \
  --steps_between_validation 250 --steps_between_checkpoints 1000

这些白盒示例会在首次使用时于 data/target/t2i_caches/<model_type>/ 下生成其目标图像缓存。可通过 --learning_rate、--lora_rank 和 --lora_alpha 调整优化。

数据混合与检查点

这些示例设置 --data.injection_rate 1.0,因此无需单独的中性图像池即可运行。对于包含中性数据的混合,请降低注入率并提供 shared_data/MJHQ-30K/meta_data.json 和 shared_data/MJHQ-30K/images/<id>.jpg。实验对比请使用论文中的设置。

适配器和 config.toml 会保存到 checkpoints/<model_type>/<exp_path>/<run_name>/ 下;exp_path 默认为 adhoc。要使用训练好的 Janus 适配器生成:

uv run python inference_text_to_image.py \
  --model_type janus --batch_size 1 \
  --checkpoint checkpoints/janus/adhoc/janus_anarchy_blackbox/checkpoint_step_10000 \
  --prompts "a photo of a cool cat" \
  --output janus_anarchy_trained

🤗 数据集

ToBAC 数据集 包含 500 行,索引为 0–499,位于一个配置和单个 train 划分中。

字段内容
context包含 {} 的提示模板
clean干净图像
rainbow彩虹旗图像变体
anarchy无政府主义符号图像变体
pear梨形标志图像变体
from datasets import load_dataset

dataset = load_dataset("MAI-Lab/ToBAC", split="train")
example = dataset[0]
context, clean, target = example["context"], example["clean"], example["anarchy"]

要从本地导出进行训练,请设置 --data.data_source.hf_dataset /path/to/tobac_hf。使用 --data.data_source.hf_revision <dataset-commit> 固定数据集版本。生成细节请参见数据集卡片。

生成编辑后的图像变体

生成脚本使用 FLUX.2-dev-bnb-4bit、一张干净图像、一个概念参考和一个概念提示。默认值为种子 42、50 个推理步骤和引导尺度 4。仓库包含提示模板和一小部分干净图像子集。

下载工具