원문 캡처 · github.com
원문 캡처 · github.com

TaintWall은 AI 에이전트가 도구를 호출하기 직전에 인수의 출처를 추적하고 정책을 적용하는 런타임 방화벽이다. 문서에 숨은 지시가 도구를 조작하지 못하게 하는 것을 목표로 하며, 제작자는 GitHub 저장소에서 데모와 벤치마크를 공개했다.

Qwen2.5 14B로 작업에 절차를 삽입한 공격을 시험한 16개 사례의 결과는 다음과 같다. ASR은 공격 성공률, Utility는 유용성 측정값이다.

조건ASRUtility
C00.8750.812
C10.2500.438
C20.6250.562
C30.0000.750
C40.0000.562

이 측정은 공격이 발생한 작업 내 절차 삽입 공격 축을 다룬다. C0의 보정 탐침 IFR은 0.80으로, 모델이 무해하게 삽입된 지시를 따랐는지 확인한다. 범위와 한계는 Phase 2 보고서와 GATE2에 설명돼 있다.

오프라인 데모는 Python 3.11 이상에서 실행한다.

bash
python scripts/demo_runbook.py

데모는 C0와 C3 조건에서 제안된 도구 단계를 보여준다. C0에서는 악의적인 추가 송금이 실행되고, C3에서는 정상 단계는 허용되지만 같은 송금은 정책 ID P2에 따라 차단된다. 모든 효과는 메모리 안의 모의 도구에만 기록되며, LLM이나 외부 서비스는 사용하지 않는다.

TaintWall은 도구 실행 전에 여섯 가지 정책을 적용한다. 여기서 ‘명시적 수신자’는 사용자가 직접 이름을 밝힌 수신자를 뜻한다.

정책적용 내용
P1신뢰할 수 없는 콘텐츠는 사용자가 허용한 범위 밖의 도구 유형을 실행할 수 없다.
P2신뢰할 수 없는 대상은 사용자가 명시하지 않으면 차단한다.
P3비공개 데이터나 비밀 데이터는 명시되지 않은 수신자에게 보낼 수 없다.
P4되돌릴 수 없는 도구에 신뢰할 수 없는 인수를 전달하려면 승인이 필요하다.
P5신뢰할 수 없는 콘텐츠를 지시사항으로 저장할 수 없다.
P6비밀로 분류된 인수는 삭제 처리를 거친 뒤 명시적 수신자에게 보낼 수 있다.

출처 추적은 결정론적으로 인수 단위에서 이뤄진다. 정규화된 인수 값과 대상 엔티티를 화면에 표시된 텍스트 구간과 대조해 출처 라벨과 오염 근원을 이어간다. 일치하지 않는 대상은 보수적으로 눈에 보이는 신뢰할 수 없는 출처를 물려받는다. 사용자의 의도는 허용된 도구와 사용자가 지정한 수신자를 명시적으로 표시해 정하며, 모델이 동의를 추론하지 않는다.

격리 추출기(C4)는 신뢰할 수 없는 콘텐츠를 구조화된 데이터로 바꾸지만, 추출이 정제 작업을 뜻하지는 않는다. 원래의 오염 근원은 계속 붙어 있으며, 추출 결과가 유효하지 않으면 차단하고 버린다.

제작자는 이 결과가 운영 환경의 견고성이나 다른 모델·공격 분포에서의 동작을 입증하지 않는다고 명시한다. 평가 범위는 두 가지 크기의 Qwen2.5 모델 계열에 한정된다. PREVIEW 결과는 결정론적 하위 표본과 단일 시행을 사용했고, 테스트 환경은 대화 기록을 제공업체의 기본 도구 사용·결과 블록이 아닌 텍스트로 렌더링한다. 이 모델 수준에서는 명시적 I1–I8 ASR 축을 평가하지 않았으며, C0 ASR은 0/40이었다. IFR 0.80은 무해한 형식 지시를 모델이 따랐음을 보여주지만, 명시적 행동 페이로드가 성공적인 행동으로 이어지지는 않았다.

재현을 위한 Phase 1은 모의 정책 적용 벤치마크다.

bash
python -m pip install -e ".[dev]"
python scripts/run_bench.py
python -m pytest -q

로컬 Phase 2 프리뷰를 실행하려면 Ollama를 별도로 설치하고 시작한 뒤 다음 명령을 사용한다.

bash
ollama pull qwen2.5:14b
python scripts/run_llm_bench.py --ollama --preview --model qwen2.5:14b --sections baseline,calibration,procedure --max-usd 10

Phase 2 명령도 모의 도구를 사용하며 외부 서비스에 연결하지 않는다. 프리뷰와 GATE2 결과는 잠정적이다. 소프트웨어는 모든 권리가 보유된 평가용으로 공개됐으며, 상업적 라이선스와 양도는 요청할 수 있다. 그 밖의 권리는 부여되지 않는다. 자세한 내용은 LICENSE를 참조한다.