
에이전트형 LLM에서 히든 스테이트 프로빙을 통해 잠재적인 간접 프롬프트 인젝션 노출 신호를 탐지하기 위한 연구 파이프라인으로, 트레이스 수집, 레이블링, 피처화, 프로브 학습을 포함합니다.
본 논문의 코드 저장소입니다: 당신의 에이전트 LLM은 간접 프롬프트 인젝션 노출의 잠재 신호를 은밀하게 인코딩합니다.
ArXiv 버전 및 논문 링크: https://arxiv.org/abs/2608.02657
이 저장소는 잠재 IPI 노출 신호를 위한 프로빙 파이프라인을 구현합니다: AgentDojo 트레이스 수집, IPI 위험 라벨링, 히든 스테이트 특성화(featurization), 그리고 IPI 노출 프로브 훈련/평가.
@misc{dong2026agenticllmssecretlyencode,
title={Your Agentic LLMs Secretly Encode Latent Signals of Indirect Prompt-Injection Exposure},
author={Jianshuo Dong and Yiming Liu and Maosen Zhang and Nan Deng and Xu Peng and Xiaoping Zhang and Tianwei Zhang and Jie Zhang and Han Qiu},
year={2026},
eprint={2608.02657},
archivePrefix={arXiv},
primaryClass={cs.CR},
url={https://arxiv.org/abs/2608.02657},
}
먼저 CPU 친화적인 검사부터 시작하세요:
git clone https://github.com/jianshuod/IPI-exposure-signal.git
cd IPI-exposure-signal
# Install uv if needed.
curl -LsSf https://astral.sh/uv/install.sh | sh
# This repository targets Python 3.12.
uv python install 3.12
uv sync --extra dev
uv run pytest
테스트 스위트는 GPU 리소스 없이 실행되도록 설계되었습니다. 핵심 메시지 직렬화, AgentDojo 장기 지평(long-horizon) 공격 등록, 라벨링 로직, 프로브 데이터셋 구축, 훈련 메트릭, 토큰 계산, vLLM 패치 패키징을 검사합니다.
수집 단계에서는 수집기를 OpenAI 호환 모델 서버에 연결하십시오:
export IPI_AWARE_UPSTREAM_BASE_URL=http://127.0.0.1:8000/v1
export IPI_AWARE_UPSTREAM_API_KEY=EMPTY
히든 스테이트 추출 및 프로브 훈련을 위해 모델 의존성과 CUDA 환경에 맞는 PyTorch 빌드를 설치하십시오:
uv sync --extra dev --extra models
메인 워크플로는 ipi-signal-probe를 통해 제공됩니다:
예시:
uv run ipi-signal-probe collect \
--suite workspace \
--attack direct \
--injected \
--max-cases 4 \
--results-dir results/probe_traces/v2
uv run ipi-signal-probe label \
--root results/probe_traces/v2/<run-name> \
--labeling-protocol risk_faced
uv run ipi-signal-probe featurize \
--root results/probe_traces/v2/<run-name> \
--model Qwen/Qwen3-8B \
--backend transformers_hook \
--model-family qwen3 \
--selected-position -1
uv run ipi-signal-probe partition \
--root results/probe_traces/v2/<run-name> \
--dataset broad
# Training consumes a JSON config. The Qwen example below generates the
# train/eval configs used for its full run.
지원되는 라벨링 프로토콜은 risk_faced, risk_visible, 그리고
risk_actual입니다.
examples/qwen3_5_0_8b/ 디렉토리에는 Qwen/Qwen3.5-0.8B에 대한 실행 가능한 소형 모델
재현 및 오픈소스 사용성 테스트가 포함되어 있습니다.
8개의 단일 GPU vLLM 서버를 시작합니다:
examples/qwen3_5_0_8b/serve_qwen3_5_0_8b_8x.sh start
스모크 테스트를 실행합니다:
QWEN3_5_0_8B_MODE=smoke \
examples/qwen3_5_0_8b/run_probe_pipeline.sh start
전체 예제를 실행합니다:
QWEN3_5_0_8B_MODE=full \
examples/qwen3_5_0_8b/run_probe_pipeline.sh start
전체 예제는 8개의 독립적인 TP=1 vLLM 서버, 8개의 수집기 프로세스,
프로세스/서버당 256개 워커, 8개의 특성화(featurization) 샤드, 단일 GPU 프로브
훈련 샤드를 사용합니다. 모든 환경 변수, 재개 모드, 캐시 설정,
상태/중지 명령은 examples/qwen3_5_0_8b/README.md를 참조하십시오.
기본 특성화 백엔드는 transformers_hook입니다. 직접 vLLM
히든 스테이트 캡처 백엔드는 체크인된 vLLM 0.19.0 오버레이가 필요합니다:
uv sync --frozen --extra dev --extra vllm
uv run python scripts/apply_vllm_ipi_aware_patch.py --check
사용 전에 docs/vllm_patches_v0.19.0.md의 내용을 따르십시오:
uv run ipi-signal-probe featurize \
--root results/probe_traces/v2/<run-name> \
--model Qwen/Qwen3-8B \
--backend vllm_direct \
--model-family qwen3 \
--selected-position -1
이 저장소는 vendor/agentdojo 아래에 패치된 AgentDojo 체크아웃을 번들로 제공합니다.
업스트림 AgentDojo는 이 논문에서 요구하는 장기 지평(long-horizon) 공격을
기본적으로 노출하지 않으므로, 수집 명령은 이 소스 체크아웃에서 실행하거나
PYTHONPATH에서 설치된 업스트림 AgentDojo보다 앞에 vendor/agentdojo/src를
배치하여 실행해야 합니다.
IPI-exposure-signal/
├── ipi_aware/
│ ├── data_collection/ # AgentDojo traces and decision points
│ ├── message_content.py # Chat-message normalization used by collection/features
│ └── probes/ # labels, features, partitions, training, eval
├── examples/
│ └── qwen3_5_0_8b/ # 8-GPU Qwen/Qwen3.5-0.8B reproduction scripts
├── patches/ # vLLM 0.19.0 hidden-state capture overlay
├── vendor/agentdojo/ # patched AgentDojo source for long-horizon attacks
├── docs/ # vLLM patch notes
├── scripts/ # utility scripts
└── tests/ # CPU-friendly regression tests
이 프로젝트는 Apache-2.0에 따라 라이선스가 부여됩니다. LICENSE를 참조하십시오.
| Command | Purpose |
|---|
collect | AgentDojo 작업을 실행하고 트레이스 및 결정 지점 저장 |
label | 수집된 결정 지점에 IPI 위험 라벨 할당 |
featurize | 프로브 예제에 대한 모델 히든 스테이트 추출 |
partition | 훈련/검증/평가 분할 구축 |
train | 히든 스테이트 특성 기반 경량 프로브 훈련 |
eval | 구성된 분할에서 훈련된 프로브 평가 |
eval-groups | 라벨링 프로토콜 및 미노출(held-out) 설정에 대한 그룹 평가 실행 |
| Variable | Purpose |
|---|
IPI_AWARE_UPSTREAM_BASE_URL | 수집에 사용되는 OpenAI 호환 모델 엔드포인트 |
IPI_AWARE_UPSTREAM_API_KEY | 업스트림 엔드포인트의 API 키, 로컬 vLLM의 경우 EMPTY |
PYTHONPATH | 이 체크아웃 외부에서 패치된 AgentDojo 소스 사용 시 vendor/agentdojo/src를 맨 앞에 배치 |
QWEN3_5_0_8B_MODEL | 예제 스크립트에서 기본 Qwen/Qwen3.5-0.8B 체크포인트 경로를 재정의 |
QWEN3_5_0_8B_CACHE_DIR | 모델 및 로컬 캐시를 데이터 파일시스템으로 리디렉션 |
QWEN3_5_0_8B_FEAT_BACKEND | vLLM 오버레이 적용 후 vllm_direct로 설정 |