
Code, 파생 데이터 및 결과: 희귀 공격 및 분포 이동 상황에서 하이재킹된 LLM 에이전트의 기준 탐지기 평가
Mahmoud Abbasi(살라망카 대학교), Juan M. Núñez V.(AIR Institute, 살라망카), Amin Shahraki(오슬로 대학교)의 논문을 위한 코드, 파생 데이터, 결과 파일 및 모든 모니터 호출.
이 논문은 도구 호출 흔적(tool-call trace)으로부터 탈취된 LLM 에이전트를 표시하는 탐지기를 평가한다: 행동 및 결합 특징에 대한 로지스틱 회귀(LR-B, LR-C), GRU 시퀀스 모델, 동결된 단계 임베딩 위의 트랜스포머(SE), TF-IDF 콘텐츠 참조, 그리고 두 가지 백본(MON-L, Llama 3.3 70B w4a16; MON-A, Claude Sonnet 5.5)을 갖춘 공개된 AlignmentCheck 액션 모니터. 평가는 통제된 공격 유행도(attack prevalence)에서, 단계별 도구 커버리지 하에서, 그리고 AgentDrift 및 AgentDojo에서의 세계, 과제, 도메인 및 교차 벤치마크 전이 하에서 수행된다.
EXTENDED_REPORT.pdf는 논문에서 인용된 확장 보고서이다. 이는 본 연구의 긴 버전(38페이지, 본문 및 보충 자료)으로, 세 번째 저자가 합류하기 전에 작성되었으며, 논문에서 요약된 모든 분석, 편차와 함께 각 분석 계획, 그리고 모든 보충 표를 제공한다.
| 경로 | 내용 |
|---|---|
EXTENDED_REPORT.pdf | 확장 보고서 (위 참조) |
featurise.py, evalkit.py, gru_detector.py, baseline_drift.py | 공유 모듈: 특징, 지표 및 부트스트랩, GRU, Markov 및 Isolation Forest 참조 구현 |
agentdojo_extract.py | 도구 호출과 관찰의 위치 기반 페어링으로 AgentDojo 트레이스를 추출 |
agentdojo_traces.jsonl, agentdojo_failed.jsonl | 추출된 AgentDojo 트레이스 (모집단 P0, 양성 392개 및 손상 2,294개) 및 4,987개의 실패한 공격 |
rerun_r1r3.py, ablation.py, world_disjoint_r1.py, r4_control.py, gru_ladder.py, gru_r3_diagnostic.py, pre_ablation_audit.py | 첫 번째 버전의 실험 스크립트로, 수정된 추출에 대해 재실행되었으며 결과 파일(*.json) 포함 |
R4_CONTROL.md, PRE_ABLATION_DESIGN.md, GRU_PREREGISTRATION.md, REVISION_ANALYSIS_PLAN.md | 첫 번째 연구들의 네 가지 내부 분석 계획 |
SENCODER_PREREGISTRATION.md, revision/sencoder_run/SENCODER_PREREGISTRATION.amendment*.md, SENCODER_RESULTS.md | SE 연구의 계획, 수정 사항 및 결과 |
MONITOR_PREREGISTRATION.md, revision/monitor_run/MONITOR_PREREGISTRATION.*.md | 모니터 연구의 계획, 첫 번째 버전 및 수정 사항 1~4 |
revision/ | 예측 캐시 빌더, 분석 스트림, 결과 파일 및 요약, DEVIATIONS.md, RESULTS_SUMMARY.md, PLAN_MANIFEST.txt (모든 계획과 결과의 SHA-256이 포함된 타임스탬프 로그) 및 재현성 가이드 REPRODUCIBILITY.md |
revision/sencoder_*.py, revision/sencoder_results.json, revision/sencoder_summary.md, revision/sencoder_run/ | SE: 임베딩, 학습 및 분석 스크립트, 결과, 클러스터 로그 및 매니페스트 |
revision/monitor_render.py, monitor_score_vllm.py, monitor_score_api.py, monitor_detector.py, monitor_tables.py | 모니터 연구: 에이전트 단계당 하나의 AlignmentCheck 호출, vLLM(MON-L) 및 제공자의 배치 인터페이스(MON-A)를 사용한 점수 산정, 동결된 분석 및 그 표 |
revision/monitor_results.json, revision/monitor_summary.md | 동결된 모니터 분석의 결과 |
revision/monitor_run/ | 모든 모니터 호출 및 점수가 포함된 모든 원시 모니터 출력 (revision/monitor_run/README.md 참조) |
revision/cache/ | 예측 캐시의 검증 및 요약 파일. 캐시된 예측과 임베딩 자체(약 800 MB)는 포함되지 않으며 스크립트에 의해 재구성됨 |
paper/ | 결과 파일로부터 모든 표를 생성하는 스크립트와 그 출력: tables/ (첫 번째 연구), tables_sencoder/ (SE 추가) 및 tables_monitor/ (모니터 추가; 논문 및 확장 보고서의 표) |
paper_v06/make_figures_v06.py, paper_v06/fig_v06_* | 논문의 그림 |
MANUSCRIPT_SOURCE.*.md, SUPPLEMENT_SOURCE.*.md | 확장 보고서의 소스로, paper/build_sencoder.py 및 paper/build_monitor.py가 생성된 표를 삽입함 |
archive_v0.3/ | 첫 번째 버전의 결과 및 이전 AgentDojo 추출로, 확장 보고서의 비교를 위해 보존됨 |
tests/ | AgentDojo 추출의 단위 테스트 |
THIRD_PARTY/ | AgentDojo 및 벤더링된 AlignmentCheck 스캐너(LlamaFirewall)의 라이선스 |
탐지기 결과는 CPU에서 CPython 3.10.4로 계산되었습니다. SE는 Slurm 클러스터의 한 노드에서 실행되었고, MON-L은
NVIDIA H100 80GB HBM3에서 vLLM 0.29.0으로 실행되었습니다 (버전은 revision/monitor_run/mon_l/env.json 참조).
pip install -r revision/requirements-lock.txt --extra-index-url https://download.pytorch.org/whl/cpu
원본 벤치마크를 읽는 스크립트는 로컬 클론을 가리키는 두 개의 환경 변수를 필요로 합니다.
git clone https://github.com/Asif-0209/AgentDrift && git -C AgentDrift checkout 014a514f
git clone https://github.com/ethz-spylab/agentdojo && git -C agentdojo checkout 089ed468
export AGENTDRIFT=$PWD/AgentDrift
export AGENTDOJO=$PWD/agentdojo
표와 그림은 이 저장소의 결과 파일들로부터 다시 생성됩니다. build_monitor.py는 임포트 시점에 AGENTDRIFT를 읽는 모니터 분석 모듈을 임포트하므로, 해당 변수를 반드시 설정해야 합니다.
cd paper
python gen_tables_v04.py # paper/tables/
python build_sencoder.py # paper/tables_sencoder/
python build_monitor.py # paper/tables_monitor/, the tables of the paper
cd ../paper_v06
python make_figures_v06.py # paper_v06/fig_v06_*.pdf and .png
두 빌드 스크립트는 또한 MANUSCRIPT_SOURCE.*.md와 SUPPLEMENT_SOURCE.*.md로부터 확장 보고서의 LaTeX를 조립합니다.
벤치마크에서 실험을 다시 실행하는 방법은 탐지기의 경우 revision/REPRODUCIBILITY.md를, SE의 경우 revision/sencoder_run/의 SE 계획을, 모니터의 경우 revision/monitor_run/README.md의 모니터 계획을 따릅니다.
<repo>, $AGENTDRIFT, $AGENTDOJO 또는 <local>로 대체되었습니다. 수치 결과는 변경되지 않았습니다. PLAN_MANIFEST.txt와 repro_checks.json의 SHA-256 값은 분석 머신에 있던 파일을 기준으로 하므로, 경로가 대체된 파일과 일치하지 않습니다. revision/offline_driver.sh도 이식 가능하도록 수정되었습니다. Python 스크립트는 수정되지 않았으므로 일부 스크립트는 로컬 기본 경로를 유지하며, 이는 환경 변수로 재정의됩니다.*.jsonl.gz), 호출 매니페스트의 SHA-256 값은 압축 해제된 파일에 대해 유효합니다.LICENSE 참조).revision/monitor_run/alignmentcheck_scanner.py는 MIT 라이선스로 배포된 LlamaFirewall(Meta Platforms, Inc. 및 계열사)에서 가져온 것입니다(THIRD_PARTY/LlamaFirewall-LICENSE.txt 참조).agentdojo_traces.jsonl, agentdojo_failed.jsonl, archive_v0.3/agentdojo_traces.jsonl, revision/monitor_run/agentdojo_run_context.jsonl, revision/sencoder_run/의 AgentDojo 환경 파일 및 모니터 호출의 AgentDojo 부분은 저자들이 MIT 라이선스로 배포한 AgentDojo에서 파생되었습니다(THIRD_PARTY/AgentDojo-LICENSE.txt 참조).revision/tool_state_annotation.json, revision/monitor_run/agentdrift_taskdisjoint/의 작업 분리 분할 및 모니터 호출의 AgentDrift 부분과 같이 AgentDrift에서 파생된 파일은 Pinjari와 Saint-Germain, AgentDrift: A Step-Labeled Benchmark of Injection-Hijacked LLM Agent Trajectories (2026), https://github.com/Asif-0209/AgentDrift 에 출처를 표시하여 CC BY 4.0에 따라 공유됩니다. 이 파일들은 추출, 분할 및 모니터 프롬프트로의 렌더링을 통해 변경되었습니다.이 코드나 데이터를 사용하는 경우 논문을 인용해 주십시오(CITATION.cff 참조). arXiv 식별자는 프리프린트가 제공되면 추가될 예정입니다.