Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
ToBAC — 토큰 하나하나, 타협되다: 통합 자기회귀 모델의 백도어 취약점 (NeurIPS'26) | Kitploit
도구/GitHubGitHub/multimodal-ai-lab/tobac
Machine LearningPapers & ResearchLearning & EducationAI SecurityAdversarial Attack
GitHubmultimodal-ai-lab/tobac

ToBAC

토큰 하나하나, 타협되다: 통합 자기회귀 모델의 백도어 취약점 (NeurIPS'26)

저장소 보기
319일 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

🚬 ToBAC (NeurIPS 2026)

arXiv paper Project page Hugging Face dataset MIT License

NeurIPS 2026 · 공식 PyTorch 구현
Token by Token, Compromised: Backdoor Vulnerabilities in Unified Autoregressive Models

ToBAC: 텍스트 트리거가 오염된 이미지 및 텍스트 생성을 유발함

ToBAC (Token by Token Backdoor Attack) 은 이미지와 텍스트를 모두 생성하는 통합 자기회귀 모델에 백도어가 어떻게 영향을 미치는지 연구합니다. 우리는 피해 모델에 접근할 수 있는 모델 중독과 편집된 이미지–텍스트 쌍을 사용하는 데이터 중독을 조사하며, 두 출력 양식 모두에 영향을 미치는 공격을 포함합니다. 위협 모델과 실험에 대해서는 논문을 참조하세요.

이 코드는 Liquid(기본값)와 Janus-Pro를 지원하며, Emu3와 ANOLE을 위한 추가 래퍼도 포함합니다. 이미지 및 텍스트 추론, LoRA 기반 화이트박스 및 블랙박스 공격, 편집된 데이터셋 이미지 생성 스크립트를 포함합니다.


  • 설정
  • 추론
  • 학습
  • 데이터셋
  • 추가 모델
  • 프로젝트 구조
  • 라이선스
  • 인용

📦 설정

NVIDIA CUDA GPU와 PyTorch 2.5.1과 호환되는 CUDA 툴킷이 있는 Linux를 사용하세요. 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/에 저장됩니다. Janus-Pro로 생성하려면 --model_type janus와 다른 출력 이름을 사용하세요. 여러 프롬프트는 --prompts "first prompt" "second prompt"로 전달하거나, idx,prompt 열을 사용하는 --prompts_file prompts.csv로 로드할 수 있습니다.

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."

응답은 터미널에 출력됩니다. Liquid를 사용하려면 janus를 liquid로 바꾸세요. 두 추론 스크립트 모두 선택한 모델에 대해 학습된 LoRA 어댑터를 로드하기 위해 --checkpoint /path/to/adapter를 받습니다.


🧪 학습

블랙박스 예제는 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 데이터셋 은 하나의 구성과 단일 train 분할에 500개 행을 포함하며, 0–499로 인덱싱됩니다.

도구 다운로드