
Forschungspipeline zur Erkennung latenter indirekter Prompt-Injection-Expositionssignale in agentischen LLMs durch Hidden-State-Probing, einschließlich Trace-Erfassung, Kennzeichnung, Featurisierung und Probe-Training.
Dies ist das Code-Repository zu unserem Paper: Your Agentic LLMs Secretly Encode Latent Signals of Indirect Prompt-Injection Exposure.
ArXiv-Version und Paper-Link: https://arxiv.org/abs/2608.02657
Dieses Repository implementiert die Probing-Pipeline für latente IPI-Expositionssignale: AgentDojo-Trace-Erfassung, IPI-Risiko-Beschriftung, Hidden-State-Featurization und IPI-Expositions-Probe-Training/-Evaluierung.
@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},
}
Beginne zuerst mit den CPU-freundlichen Prüfungen:
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
Die Testsuite ist so ausgelegt, dass sie ohne GPU-Ressourcen ausgeführt werden kann. Sie prüft die zentrale Nachrichtenserialisierung, die Registrierung von AgentDojo-Long-Horizon-Angriffen, die Beschriftungslogik, den Aufbau des Probe-Datensatzes, Trainingsmetriken, Token-Abrechnung und das Packaging des vLLM-Patches.
Für die Erfassung richte den Collector auf einen OpenAI-kompatiblen Modellserver aus:
export IPI_AWARE_UPSTREAM_BASE_URL=http://127.0.0.1:8000/v1
export IPI_AWARE_UPSTREAM_API_KEY=EMPTY
Führte die Extraktion der Hidden States und das Probe-Training durch, installiere die Modellabhängigkeiten und den PyTorch-Build, der zu deiner CUDA-Umgebung passt:
uv sync --extra dev --extra models
Der Hauptworkflow wird über ipi-signal-probe bereitgestellt:
Beispiel:
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.
Unterstützte Beschriftungsprotokolle sind risk_faced, risk_visible und
risk_actual.
Das Verzeichnis examples/qwen3_5_0_8b/ enthält eine ausführbare Reproduktion mit
einem kleinen Modell sowie einen Open-Source-Usability-Test für Qwen/Qwen3.5-0.8B.
Starte acht vLLM-Server mit je einer GPU:
examples/qwen3_5_0_8b/serve_qwen3_5_0_8b_8x.sh start
Führe einen Smoke-Test aus:
QWEN3_5_0_8B_MODE=smoke \
examples/qwen3_5_0_8b/run_probe_pipeline.sh start
Führe das vollständige Beispiel aus:
QWEN3_5_0_8B_MODE=full \
examples/qwen3_5_0_8b/run_probe_pipeline.sh start
Das vollständige Beispiel verwendet 8 unabhängige vLLM-Server mit TP=1,
8 Collector-Prozesse, 256 Worker pro Prozess/Server, 8 Featurization-Shards und
Ein-GPU-Shards für das Probe-Training. Alle Umgebungsvariablen, Resume-Modi,
Cache-Einstellungen sowie Status- und Stopp-Befehle findest du in
examples/qwen3_5_0_8b/README.md.
Das Standard-Featurization-Backend ist transformers_hook. Das direkte
vLLM-Backend zur Hidden-State-Erfassung erfordert das ins Repository eingecheckte
vLLM-0.19.0-Overlay:
uv sync --frozen --extra dev --extra vllm
uv run python scripts/apply_vllm_ipi_aware_patch.py --check
Befolge docs/vllm_patches_v0.19.0.md, bevor du das Backend verwendest:
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
Dieses Repository enthält einen gepatchten AgentDojo-Checkout unter vendor/agentdojo.
Das Upstream-AgentDojo bietet die für das Paper benötigten Long-Horizon-Angriffe
nicht nativ an. Daher sollten die Erfassungsbefehle aus diesem Quell-Checkout
heraus ausgeführt werden oder mit vendor/agentdojo/src, das auf dem PYTHONPATH
vor jeder installierten Upstream-AgentDojo-Version liegt.
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
Dieses Projekt ist unter Apache-2.0 lizenziert. Siehe LICENSE.
| Befehl | Zweck |
|---|
collect | AgentDojo-Aufgaben ausführen und Traces sowie Entscheidungspunkte speichern |
label | IPI-Risikolabels für gesammelte Entscheidungspunkte zuweisen |
featurize | Hidden States des Modells für Probe-Beispiele extrahieren |
partition | Trainings-, Validierungs- und Evaluierungs-Splits erstellen |
train | Leichte Probes über Hidden-State-Features trainieren |
eval | Trainierte Probes auf den konfigurierten Splits evaluieren |
eval-groups | Gruppierte Evaluierung für Beschriftungsprotokolle und Held-out-Einstellungen durchführen |
| Variable | Zweck |
|---|
IPI_AWARE_UPSTREAM_BASE_URL | OpenAI-kompatibler Modell-Endpoint, der für die Erfassung verwendet wird |
IPI_AWARE_UPSTREAM_API_KEY | API-Schlüssel für den Upstream-Endpoint oder EMPTY für lokales vLLM |
PYTHONPATH | Setze vendor/agentdojo/src an die erste Stelle, wenn du den gepatchten AgentDojo-Quellcode außerhalb dieses Checkouts verwendest |
QWEN3_5_0_8B_MODEL | Überschreibe den Standard-Checkpoint-Pfad Qwen/Qwen3.5-0.8B in den Beispielskripten |
QWEN3_5_0_8B_CACHE_DIR | Leite Modell- und lokale Caches auf ein Daten-Dateisystem um |
QWEN3_5_0_8B_FEAT_BACKEND | Setze nach dem Anwenden des vLLM-Overlays auf vllm_direct |