공격의 형태를 알아보는 방어는 공격자가 형태를 바꾸면 효과를 잃습니다. 형태가 바뀌어도 효과를 유지한 방어는 데이터의 목적지, 구성 요소의 권한, 계획과 지각의 분리처럼 공격자가 바꿀 수 없는 속성을 검사합니다.
LLM 방어의 차단율은 보통 특정 공격 집합에 대해 측정합니다. 2026년에 나온 프롬프트 인젝션과 모델 추출 연구들은 공격 문구나 질의 생성 방식만 바뀌어도 방어가 효과를 잃은 사례를 보고했습니다. 형태 변화에도 효과를 유지한 방어는 공격 내용을 읽지 않고 행동의 경계에서 검사했습니다.
이 글에서 행동 경계는 세 가지를 가리킵니다. 데이터가 나가는 목적지, 구성 요소가 쓸 수 있는 권한, 계획을 세우는 모델과 비신뢰 입력을 읽는 모델의 분리입니다. 방어를 도입하거나 평가할 때는 보고된 수치가 어떤 공격 형태에 대한 값인지와 검사가 무엇을 읽는지를 함께 확인해야 합니다.
에이전트 유출에서 갈린 검사 위치
The Framing Gap(arXiv:2608.27092, 2026-08)은 비밀을 가진 도구 사용 에이전트가 공격자 웹 페이지를 읽는 상황을 실험했습니다. 에이전트는 정책, 요약 과제, 합성 비밀 SECRET_12345, 가져온 페이지를 입력으로 받고 JSON 액션 하나를 냅니다. 도구는 인자만 기록하는 모의 도구이고, 공격자는 페이지 본문만 제어합니다.
성공은 짝지은 시행으로 판정합니다. 깨끗한 페이지에서는 비밀을 지키고 오염된 페이지에서만 유출한 경우를 성공으로 셉니다. 온도는 0.7이고, 주요 모델은 셀당 20회, 일반화 실험은 셀당 10회를 시행했습니다.
문구만 바꾼 유출
명시적 인젝션 10종에서 gpt-4o의 풀링 공격 성공률(Attack Success Rate, ASR)은 0.0%였습니다. 저자는 이어서 리프레이밍 계열 8개 변형을 만들었습니다. 1개는 리프레이밍 없는 기준이고, 7개는 같은 유출 요청을 무결성 서명, 설정 값, 인증 필드, 유사 호스트 같은 형태로 다시 쓴 것입니다.
8개 변형 전체에서 gpt-4o의 풀링 ASR은 40.0%였고, #sig= 서명 변형과 설정 블록 변형은 각각 100%였습니다. 같은 gpt-4o 설정이 실행에 따라 51/160과 64/160을 기록했으므로, 이 값은 약 30~40% 범위로 읽는 편이 맞습니다.
같은 비교를 6개 모델에 적용하자 5개 모델에서 리프레이밍 계열 ASR이 명시적 인젝션의 2배를 넘었습니다(arXiv:2608.27092 Table 4). 예외는 mistral:7b로 26.0%와 27.5%였습니다.
기밀 정책을 지운 소거 실험에서 gpt-4o의 리프레이밍 ASR은 정책이 있을 때 31.9% [25.2, 39.4], 없을 때 38.1% [31.0, 45.8]였습니다. 두 값의 95% 구간이 겹쳐 정책 유무의 차이를 구별할 수 없었습니다. 저자는 실패 원인을 정렬 우회보다 지시와 데이터의 혼동으로 해석합니다.
공격을 알아봐야 하는 검사
저자는 검사 위치별로 방어를 비교했습니다. 정책에 유출 행위를 열거하고 "어떤 형태로든(in any form)" 조항을 넣자 gpt-4o의 리프레이밍 ASR은 0/120이 됐습니다. 포괄 조항 하나를 빼고 구체적 행위만 열거하자 ASR은 48.8%(39/80)였고, 저자는 이 방어를 취약(brittle)하다고 분류합니다.
출력 가드는 모델이 낸 액션에서 비밀 문자열을 찾습니다. 부분 문자열만 비교하는 가드 v1에서 평문 유출의 ASR은 0%였지만 역순 인코딩은 100%였습니다. 역순, hex, base64 등을 복원해 비교하는 가드 v2에서 예상한 인코딩의 ASR은 모두 0%였지만, 복원기가 없는 ROT13은 100%였습니다.
Llama-3.1-8B 도구 호출 에이전트에서는 두 방어를 시험했습니다. 학습 기반 방어인 SecAlign과 입력 채널 분리입니다. 무방어 리프레이밍 ASR 21.2%에 대해 SecAlign은 32.5%, 채널 분리는 38.8%였습니다.
SecAlign은 "Ignore previous instructions" 대조군의 ASR을 20/20에서 0/20으로 낮췄으므로 적용 자체는 정상이었습니다. 저자는 세 조건 사이의 차이가 실행 간 변동 범위 안에 있어 순서를 주장하지 않습니다. 확인된 사실은 두 방어 모두 리프레이밍 ASR을 무방어 수준 아래로 낮추지 못했다는 점입니다.
목적지와 출처를 읽는 검사
출력 내용 가드와 목적지 허용목록의 차이는 무엇을 읽는지에 있습니다. 아래는 논문 §8의 서술을 바꿔 쓴 의사코드입니다.
# 의사코드: 출력 내용 가드는 페이로드를 읽습니다
def content_guard(action):
payload = normalize(action.args) # 역순, hex, base64 등 알려진 인코딩만 복원
if SECRET in payload and host(action.url) not in TRUSTED_HOSTS:
return refuse()
return action
# 의사코드: 목적지 허용목록은 페이로드를 읽지 않습니다
def destination_allowlist(action):
if action.tool == "post_data" and host(action.url) not in TRUSTED_HOSTS:
return refuse()
return action목적지 허용목록은 신뢰하지 않는 호스트로 가는 post_data를 내용과 무관하게 막습니다. 페이로드를 읽지 않으므로 ROT13, base32, 여러 호출로 나눈 유출도 결과를 바꾸지 못합니다. 저자는 이 0%를 종단 간(end-to-end) 측정값이 아니라 구성상 정해지는 값으로 다룹니다.
플래너/리더 분리는 CaMeL의 핵심 격리 아이디어만 구현한 것입니다. CaMeL은 계획과 비신뢰 데이터 처리를 분리하는 방어 설계이며 다음 절에서 설명합니다. 플래너는 비밀을 갖고 도구 호출을 내지만 페이지를 보지 않고, 격리된 리더는 페이지를 요약하지만 비밀을 갖지 않습니다.
결과는 리프레이밍 0/80, 홀드아웃 인코딩 0/30이었습니다. 깨끗한 페이지 실행 10회 중 9회는 핵심 엔티티를 담은 요약을 냈습니다.
| 검사 위치 | 방어 | 리프레이밍·예상 인코딩 ASR(%) | 홀드아웃 인코딩 ASR(%) |
|---|---|---|---|
| 정책 문구 | 유출 행위 열거와 포괄 조항 (gpt-4o) | 0 (0/120), 조항 제거 시 48.8 | 미보고 |
| 학습 | SecAlign (Llama-3.1-8B) | 32.5 | 16.7 |
| 입력 구조 | 채널 분리 (Llama-3.1-8B) | 38.8 | 6.7 |
| 출력 내용 | 가드 v2 (gpt-4o) | 0 (예상 인코딩) | 33.3 (ROT13 100) |
| 목적지 | 허용목록 (Llama-3.1-8B) | 0.0 | 0.0 |
| 출처와 권한 | 플래너/리더 분리 (Llama-3.1-8B) | 0 (0/80) | 0 (0/30) |
출처는 arXiv:2608.27092 Table 3·6·7과 §6입니다. Llama-3.1-8B 무방어 기준선은 리프레이밍 21.2%, 홀드아웃 0.0%입니다. gpt-4o 행과 Llama-3.1-8B 행은 스캐폴드가 달라 절대값을 비교할 수 없다고 저자가 적습니다.
표의 처음 네 행은 모델이나 가드가 공격 문구와 페이로드를 알아봐야 작동합니다. 마지막 두 행은 어느 호스트로 보내는지와 어느 구성 요소가 비밀을 쥐는지만 봅니다. 저자는 견고한 검사가 내용이 아니라 목적지나 출처를 읽는 검사라고 결론짓습니다.
외부로 나가는 트래픽을 한 지점에 모아 통제하는 구성은 Egress 게이트웨이 방어에 정리했습니다.
웹 에이전트의 권한 경계
Prismata(arXiv:2607.08147, 2026-07)는 웹 에이전트가 읽는 페이지에 제3자가 글을 쓸 수 있다는 점에서 출발합니다. 이 공격에서 공격자는 사용자 생성 콘텐츠나 외부 콘텐츠에 지시를 심어 에이전트의 행동을 바꿉니다. Prismata는 인젝션 문자열을 찾는 대신 페이지 요소마다 권한을 정하고 그 권한을 코드로 강제합니다.
경로와 출처로 정하는 권한
Prismata는 상호작용 가능한 요소마다 DOM(Document Object Model) 루트에서 그 요소까지의 조상 경로를 뽑습니다. 별도 LLM 호출이 사용자 과제와 이 경로만 보고 권한을 판정하므로, 경로 밖에 심긴 지시는 판정에 보이지 않습니다. 경로 위에서는 Biba 무결성 모델을 따라 요소를 developer, user, hosted-party, external 네 출처로 분류합니다.
라벨은 권한을 잃는 방향으로만 바뀌고, 저자는 라벨링 오류의 영향이 제한되도록 설계했다고 설명합니다. DOM 없이 과제만 받는 정책 모델이 과제에 필요한 출처를 정합니다. 그러면 LLM과 무관한 결정론적 코드가 권한 밖 콘텐츠를 관찰에서 지우고, 권한을 넘는 도구 호출을 브라우저 실행 전에 거부합니다.
WebArena에서 gpt-5.4-mini 에이전트에 세 가지 인젝션 템플릿을 넣고 Prismata를 적용하자 평균 ASR이 85.5%에서 0.7%로 내려갔습니다. 공격이 없을 때의 작업 성공률은 29.9%에서 26.6%로 3.3%p 낮아졌습니다. 적응형 공격 세트 WA20에서도 Prismata를 적용한 ASR은 세 템플릿 모두 0%였습니다.
관찰 전에 고정하는 계획
CaMeL(arXiv:2503.18813, 2025-03)은 신뢰하는 사용자 질의에서 제어 흐름과 데이터 흐름을 먼저 뽑습니다. 그래서 비신뢰 데이터는 프로그램 흐름을 바꾸지 못합니다. AgentDojo에서 증명 가능한 보안을 유지하며 과제 77%를 해결했고, 방어 없는 시스템은 84%였습니다.
CaMeLs Can Use Computers Too(arXiv:2601.09923, 2026-01)는 이 분리를 화면을 보며 움직이는 computer-use 에이전트로 옮깁니다. 신뢰하는 플래너는 화면을 보기 전에 분기까지 포함한 전체 계획을 한 번에 씁니다. 비신뢰 지각 모델은 스크린샷과 DOM에서 좌표 같은 실행 시점 값만 채우고 계획의 구조는 바꾸지 못합니다.
이 논문의 단일 샷 계획 방식(NOVA)은 방어 없는 에이전트 대비 토큰을 1.88배 썼습니다. 매 단계 플래너를 다시 부르는 비교 구성(Fides-NOVA)은 29.6배를 썼습니다.
세 연구의 공통 구조를 단순화하면 다음과 같습니다. 세부 연결은 연구마다 다릅니다.
flowchart LR
U["사용자 과제"] --> P["플래너<br/>비밀과 권한 보유<br/>비신뢰 콘텐츠 미열람"]
W["공격자 콘텐츠<br/>페이지, 화면"] --> R["리더 또는 지각 모델<br/>비밀과 권한 없음"]
P -->|"계획, 도구 호출"| X["결정론적 실행기"]
R -->|"값으로만 전달"| X
X -->|"허용 목적지와 권한 안의 호출"| S["외부 행동"]
공격자 콘텐츠는 리더 또는 지각 모델을 거치는 경로로만 들어오고, 실행기는 그 값을 지시로 해석하지 않습니다. 비밀과 권한을 쥔 쪽은 공격자 콘텐츠를 읽지 않습니다.
모델 추출 방어의 공격 의존성
모델 추출에서도 같은 양상이 나옵니다. 블랙박스 모델 추출은 API 응답을 모아 대리 모델을 학습하는 공격이며, 기본 동작은 LLM 프라이버시 공격에 정리했습니다.
MEA-Bench(arXiv:2610.00839, 2026-09)는 추출 공격 6종과 방어 10종을 같은 예산과 평가 조건에 놓았습니다. 방어 실험은 Qwen2.5-72B-Instruct 피해 모델, Qwen2.5-7B 대리 모델, 질의 예산 1,000에서 수행했습니다. 같은 질의의 무수정 응답으로 학습한 대리 모델을 대조군으로 둡니다.
응답과 질의를 보는 방어
| 방어 | SeqKD | QEDKS | SODA |
|---|---|---|---|
| 반증류 ADS, 대리 정확도 변화(%p) | −0.83 | −3.51 | +0.58 |
| 질의 탐지 MMD, TPR / FPR(%) | 0 / 0 | 100 / 0 | 미보고 |
| 질의 탐지 SEAT, TPR / FPR(%) | 5 / 0 | 100 / 0 | 미보고 |
| 계보 검증 DuFFin 점수 | 0.252 | 0.467 | 0.254 |
출처는 arXiv:2610.00839 v2 Table 9·12·13입니다. 정확도 변화는 대조군 정확도(57.62, 63.34, 57.68)를 뺀 값입니다. 질의 탐지는 50개 질의 배치 단위이며, TPR은 공격 배치 탐지율, FPR은 정상 배치 오탐률입니다.
반증류 방어 ADS는 QEDKS 대리의 정확도만 3.51%p 낮췄고, SeqKD와 SODA에서는 1%p 안에서 움직였습니다. 질의 탐지기 MMD와 SEAT는 QEDKS 질의 배치를 모두 잡았지만, 고정 질의 풀을 쓰는 SeqKD 질의 배치는 0~5%만 잡았습니다. 저자들은 반증류의 효과가 공격에 따라 달라진다고 정리합니다.
QEDKS는 시드 질의 3개를 템플릿 질의 498개와 후속 질문 499개로 늘려 보냅니다. 탐지기가 잡은 것은 추출 행위보다 이 질의 생성 방식이었을 가능성이 큽니다. 이는 추정입니다.
계보 검증 DuFFin은 추출 대리 3개에 대체로 무관 모델 4개보다 낮은 점수를 주었습니다. 무관 모델 4개의 점수는 0.278~0.705였습니다. 추출 모델이 무관 모델보다 높은 점수를 받는지를 보는 모델 수준 ROC-AUC는 0.167이었습니다. 이 설정에서 DuFFin은 추출 모델을 무관 모델보다 피해 모델과 덜 닮은 것으로 판정했습니다.
후처리 하나로 바뀌는 결론
Libon 등의 연구(arXiv:2606.25059, 2026-06)는 같은 ADS를 다른 공격자 가정에서 다시 평가했습니다. 원 논문 설정에서 ADS는 교사 정확도를 약 20% 낮추는 대가로 학생 정확도를 약 40% 낮췄습니다. 공격자가 응답의 반복 구간을 지우는 후처리를 더하자, ADS의 강도 매개변수 λ의 고효용 구간 전체에서 학생 정확도가 증류하지 않은 기준선 위로 올라갔습니다.
이 실험은 DeepSeek-R1-Distill-Qwen-7B 교사, Llama-3.2-3B 학생, GSM8K 프롬프트 5,231개 조건입니다. 후처리 결과는 그림으로만 제시되어 정확한 수치는 논문 본문에 없습니다.
응답에 담는 필드를 줄이는 방어
Anthropic은 2026-10-12 글에서 여러 방어를 함께 쓴다고 설명합니다. 추론 요약, 추론 내용의 전달 범위 제한, 2단계 분류기, 반복 시도에 대한 사용량 제한과 계정 차단입니다. 사전학습 Claude 모델을 Claude Opus 4.8의 전체 추론 트랜스크립트로 학습하면 SWE-bench Verified 80.4%, 요약본으로 학습하면 71.8%였습니다.
Anthropic의 글은 이 방법들을 합쳐 증류자의 수집 데이터가 약 90~99% 줄었다는 초기 결과를 제시합니다. 모두 제공자의 자체 측정입니다. 글은 증류 시도와 방어가 서로에 맞춰 계속 바뀔 것으로 예상합니다.
추론 요약은 응답에 담기는 내용 자체를 줄이므로 공격자의 질의 형태를 알아볼 필요가 없습니다. 이 점에서 목적지 허용목록과 같은 위치의 검사로 볼 수 있습니다. 이는 판단입니다.
경계 검사가 성립하지 않는 조건
형태를 알아보는 방어가 항상 효과를 잃은 것은 아닙니다. 포괄 조항을 넣은 정책 문구는 리프레이밍을 0/120으로 막았습니다. 다만 조항 하나를 빼면 48.8%였고, 이 방어에 대한 홀드아웃 인코딩 결과는 보고되지 않았습니다.
목적지 허용목록은 정당한 외부 트래픽도 막습니다. The Framing Gap은 실제 워크로드에서 목적지를 닫을 수 있는 비율을 측정하지 않았습니다. 같은 비밀이 호스트 A로는 가도 되고 B로는 안 되는 경우는 허용목록과 오염 추적(taint tracking)이 갈리는 지점이며, 저자는 이 경우를 향후 과제로 둡니다.
허용목록과 플래너/리더 분리의 0%는 설계에서 나온 값입니다. 실험은 단일 단계 에이전트라서 재계획 루프를 시험하지 않았습니다. 저자는 이 설정이 CaMeL 계열 결과를 좋게 보이게 할 수 있다고 적습니다.
경계를 세우면 공격은 경계 안쪽으로 옮겨 갈 수 있습니다. CaMeLs Can Use Computers Too 논문은 이런 공격 하나를 Branch Steering이라고 부릅니다. 공격자는 관찰을 조작해, 계획에 이미 있는 정당한 분기 중 공격자가 원하는 쪽을 에이전트가 고르게 합니다. 쿠키 팝업으로 위장한 악성 광고를 누르게 하는 경우가 예입니다.
그래디언트 기반 픽셀 공격은 이 논문이 시험한 교차 검증을 모두 회피했습니다.
Prismata도 앞선 구조적 단서 없이 조상 경로 위에 놓인 인젝션은 막지 못합니다. Common Crawl과 Mind2Web에서 이런 경로는 전체 코퍼스의 약 0.10%, 웹 모범 사례를 따르는 사이트에서 약 0.017%였습니다.
경계 검사는 효용을 대가로 냅니다. CaMeL은 과제 해결률 84%를 77%로, Prismata는 작업 성공률 29.9%를 26.6%로 낮췄고, NOVA는 토큰을 1.88배 썼습니다. 벤치마크와 모델이 달라 이 대가의 크기는 서로 비교할 수 없습니다.
모델 추출에는 이 논리를 그대로 옮기기 어렵습니다. 유출 대상이 응답 자체이고 공격자도 정상 사용자와 같은 API 호출자라서, 목적지로 둘을 가를 수 없습니다. 남는 경계는 응답에 담는 필드와 계정 단위 사용량인데, MEA-Bench는 이 범주를 평가하지 않았으므로 추출에서 경계 검사가 일반화된다는 주장은 판단입니다.
MEA-Bench 수치는 고정 시드로 얻은 값이며, 논문은 반복 횟수와 신뢰구간을 보고하지 않습니다. 1%p 안의 차이는 잡음과 구별할 수 없습니다.
방어를 고르는 기준
방어를 도입하거나 평가할 때 다음 질문에 차례로 답해 봅니다.
- 방어가 검사하는 속성을 공격자가 바꿀 수 있습니까? 문구, 인코딩, 질의 분포는 공격자가 바꿉니다. 목적지 호스트, 요소의 출처, 미리 고정한 계획은 시스템이 정합니다.
- 평가에 학습이나 보정에 쓰지 않은 공격 형태가 들어 있습니까? 리프레이밍, 복원기가 없는 인코딩, 다른 질의 생성 방식의 추출 공격이 그런 홀드아웃입니다.
- 보고된 0%가 측정 결과입니까, 구성상 결과입니까? 구성상 0%라면 효용 비용과 경계 밖에 남는 경로를 대신 확인합니다.
- 경계를 세운 뒤에도 공격 입력을 읽는 구성 요소가 있습니까? 분기를 고르는 지각 모델이 다음 공격 대상이 됩니다.
- 정당한 작업 중 얼마나 많은 비율이 경계를 넘어야 합니까? 이 비율이 크면 경계 검사는 효용을 크게 깎습니다.
| 위협 | 공격 형태를 알아보는 방어 | 행동 경계에서 검사하는 방어 | 경계 검사의 대가 |
|---|---|---|---|
| 도구 에이전트의 비밀 유출 | 정책 문구, SecAlign, 출력 내용 가드 | 목적지 허용목록, 플래너/리더 분리 | 정당한 외부 전송 차단, 요약 효용 9/10 |
| 웹 에이전트 하이재킹 | 페이지 텍스트에서 인젝션 탐지 | 경로와 출처 기반 권한, 결정론적 강제 | 작업 성공률 3.3%p 감소, 잔여 경로 0.017~0.10% |
| computer-use 에이전트 | 지각 결과의 교차 검증 | 관찰 전 단일 샷 계획 | 토큰 1.88배, Branch Steering 잔존 |
| 모델 추출 | 반증류, 질의 분포 탐지, 계보 검증 | 응답 필드 축소, 계정 단위 제한 | 사용자가 받는 정보 감소, 독립 평가 없음 |
도구 설명에 숨긴 지시는 MCP 도구 포이즈닝에서 다뤘습니다. 권한을 대신 쓰는 구성 요소의 신원 설계는 혼동된 대리인과 에이전트 신원에, 모델 내부 방어의 한계는 토큰 정렬에서 표현 수준 방어로에 정리했습니다.
참고 자료
- The Framing Gap: Indirect Prompt-Injection Exfiltration Defeats Surface-Level Defenses in Tool-Using Agents, arXiv:2608.27092 (2026-08)
- Prismata: Confining Cross-Site Prompt Injection in Web Agents, arXiv:2607.08147 (2026-07)
- Defeating Prompt Injections by Design, arXiv:2503.18813 (2025-03)
- CaMeLs Can Use Computers Too: System-level Security for Computer Use Agents, arXiv:2601.09923 (2026-01, v3 2026-06)
- Do Defenses Against LLM Extraction Work Across Attacks? A Lifecycle Benchmark of Black-Box Model Extraction, arXiv:2610.00839 (2026-09, v2 2026-10)
- What Does It Mean to Break a Distillation Defense?, arXiv:2606.25059 (2026-06)
- Strengthening our defenses against distillation attacks, Anthropic (2026-10)
모든 수치는 2026-10 기준으로 각 원문에서 대조했습니다.
정리
공격 문구, 인코딩, 질의 분포를 알아보는 방어는 공격자가 그 형태를 바꾸면 대체로 효과를 잃었습니다. The Framing Gap에서는 같은 유출을 다르게 쓰자 gpt-4o의 ASR이 0%에서 약 30~40%로 올랐습니다. MEA-Bench에서는 한 추출 공격에 효과가 있던 방어가 표의 다른 두 공격에서는 거의 효과가 없었습니다.
형태 변화에도 효과를 유지한 방어는 목적지 허용목록, 플래너/리더 분리, Prismata의 권한 강제처럼 행동 경계에서 검사했습니다. 이 방어들의 0%는 대부분 구성상 값이며, 정당한 트래픽 차단과 작업 성공률 감소라는 대가가 따릅니다. 경계를 세운 뒤에도 Branch Steering처럼 경계 안의 분기 선택을 노리는 공격이 남습니다.
모델 추출에서는 응답 자체가 유출 대상이며, 이 글에서 검토한 자료에는 경계 검사의 독립 평가가 없습니다.