본문 바로가기
Hack/AI

AGATE: Provenance-Based Runtime Defense Against Compositional Attacks on LLM Agents

by Becoming a Hacker 2026. 9. 29.
반응형

  • 원문: arXiv 2609.30830
  • 저자: Xiaorui Zhang, Zhuoran Cheng, Kailin Liu 외 6명
  • 공개일: 2026-09-25
  • Tags: LLM에이전트, 런타임방어, 데이터출처, 인가, 조합공격, 감사로그, OpenClaw, OpenCode, DeepSeek, AGATE

본 글은 원 논문의 주요 기술적 내용을 이해하기 쉽게 요약·정리한 글입니다. 자세한 내용은 상단의 원문 링크를 참고하세요.

한눈에 보기

AGATE는 한 번의 명백한 악성 호출이 아니라 정상적인 여러 작업을 연결해 금지된 효과를 만드는 compositional attack을 막기 위해, agent harness 경계에서 권한과 데이터 provenance를 함께 검사합니다. operator declaration·host approval·parameter-bound grant로 권한을, 등록된 source와 인코딩 추적으로 데이터 흐름을, effect ledger로 반복 동작을 판단하며 LLM은 최종 결정 경로에 두지 않습니다.

DeepSeek Harness, OpenCode, OpenClaw adapter를 구현했고 153개 attack-chain record와 252회 monitored run을 평가했습니다. 두 플랫폼에서 63개 scenario의 replay/live graph projection이 각각 63/63 일치했지만, OpenCode는 flag-only이고 DeepSeek Harness는 veto 가능해 방어 효과와 플랫폼 enforcement가 confounded됩니다.

연구 배경

agent 공격은 하나의 명령만 보면 합법적인 파일 읽기, 인코딩, DNS·결제·전송이 여러 단계로 결합될 때 나타납니다. 기존 per-call allowlist나 prompt injection detector는 각 호출의 authority, 데이터 origin, 과거 효과를 함께 보지 못해 sequence-level 위험을 놓칠 수 있습니다.

공격 모델 / 전제 조건

A-EXT는 외부 콘텐츠를 통해 간접 주입하고 A-INT는 operator와 다른 악성 사용자로서 세션·지속 객체·여러 단계에 공격을 분산할 수 있습니다. 공격자는 정책을 알고 adaptive하게 parameter rewriting, encoding, memory persistence를 시도합니다.

judgment kernel, adapter, operator declaration, approval, source registration, provenance/evidence store, host access control은 TCB입니다. personal assistant처럼 operator와 user가 같은 경우 A-INT 분리는 적용되지 않으며, shell이나 memory 등 instrumentation 밖 경로는 보장 범위 밖입니다.

비판적 검토 / 아쉬운 점

가장 중요한 한계는 enforcement depth가 플랫폼별로 다르다는 점입니다. OpenCode는 flag-only이고 DeepSeek Harness는 실제 veto를 제공하므로 같은 kernel 결과가 실제 차단으로 이어지는지 비교할 수 없습니다. 동일한 complete-mediation adapter에서 paired benign·attack completion을 측정해야 합니다.

둘째, replay와 live graph projection 63/63 일치는 evidence pipeline의 자기일관성을 보여줄 뿐 실제 세계의 완전한 provenance를 증명하지 않습니다. 누락된 observation, 잘못된 target extraction, adapter event loss를 독립 ground truth와 비교해야 합니다.

셋째, benign 11개 중 6개에서 8개의 denial이 발생했고 legitimate reuse가 5개였습니다. 공격 방어율과 정상 task completion, latency, 운영자 승인 피로를 함께 보고하지 않아 실무 비용을 판단하기 어렵습니다.

핵심 Root Cause

근본 원인은 도구 호출을 독립 사건으로 보고 현재 요청의 문구만 검사하는 데 있습니다. 깨진 불변조건은 “효과를 내는 모든 호출은 실제 operator authority와 정확한 parameter에 결속되고, 전달 데이터는 허용된 source-to-destination 흐름에서 왔으며, 이전 호출과 합쳐도 허용 한도 안에 있어야 한다”입니다.

LLM의 추론이나 tool manifest만으로는 authority가 생기지 않습니다. 권한은 authenticated host approval·operator declaration·제한 grant에서만 파생되고, 데이터는 관찰된 source window와 변환 흔적을 통해 추적돼야 합니다.

핵심 공격 원리

공격자는 정상 호출을 분할하고 parameter를 다시 쓰거나 raw·base64·hex·percent encoding으로 데이터를 이동해 per-call 검사와 문자열 signature를 우회합니다. persistent memory나 session history를 이용하면 공격 단계가 시간과 세션을 넘어 결합됩니다.

AGATE Check A는 exact request digest, session, expiry, use count, amount에 결속된 authority를 확인하고 최종 allow에서만 grant를 소비합니다. Check B는 등록 source·관찰 window·destination과 decoded form을 검사하고, Check C는 6개 hard-deny primitive shape와 23개 advisory pattern, effect ledger를 적용합니다.

공격 흐름

  1. operator가 허용 source·destination·업무 범위와 grant를 선언합니다.
  2. agent가 외부 또는 내부 공격자의 데이터를 읽고 여러 정상 도구 호출을 계획합니다.
  3. adapter가 harness event를 공통 gate interface로 변환합니다.
  4. kernel이 authority, provenance, primitive shape, 누적 effect를 결정론적으로 검사합니다.
  5. enforce 가능한 adapter는 거부하고 flag-only adapter는 증거만 남깁니다.
  6. evidence graph와 decision ground를 보관해 session history와 live event를 재구성합니다.

성공 조건 / 실패 조건

공격은 parameter target extraction이 수신자를 놓치거나, 변환된 의미가 raw·지원 encoding 비교를 벗어나거나, shell·memory·외부 side channel이 instrumentation을 우회할 때 성공할 수 있습니다. 승인된 개별 작업의 조합 효과를 ledger가 표현하지 못해도 통과할 수 있습니다.

정확한 parameter-bound authority가 없거나 source-to-destination provenance가 불일치하거나 hard-deny primitive와 누적 effect가 정책을 위반하면 실패합니다. adapter가 veto를 실제 실행 전에 적용해야 차단 보장이 성립합니다.

연구진의 실험 환경

DeepSeek Harness, OpenCode, OpenClaw adapter와 동일 judgment core를 사용했습니다. 공격 평가에는 153개 attack-chain record, 152개 no-monitor run, 63 scenario×2 round×2 platform인 252 monitored run이 포함됐고 모델은 binlab/glm-5.3-flash, 후속 일부는 deepseek-v4-flash였습니다.

엔지니어링 suite는 183개 passing test를 보고합니다. reconstruction은 DeepSeek Harness expected stage 334/376, OpenCode 328/376, 전체 event 5,653/8,512와 5,033개 replay를 사용했으며 replay 시간은 0.24초였습니다.

주요 실험 결과

12개 business scenario에서 full·minimal·empty declaration의 denial event는 각각 28·21·19개였습니다. authority 거부는 5·5·11, data 거부는 23·16·8로 declaration이 많을수록 authority는 충족되지만 추적할 data policy도 늘어나는 양상이 나타났습니다.

47개 direct instruction에서 40개가 실행, 5개가 거부, 2개가 no action이었습니다. semantic delivery 46회는 실행 12개인 26.1%, neutralize 10, refuse 24인 52.2%였고 structural delivery 52회는 실행 23개인 44.2%, neutralize 18, refuse 9인 17.3%, no action 2였습니다. 두 집합은 paired comparison이 아닙니다.

후속 batch 4–6 candidate는 40개 중 20개 실행됐고 negative case 6개가 있었습니다. benign 11개 중 6개에서 8개 denial이 발생했으며 legitimate reuse 5개, 올바른 rule 1개, basename false positive 2개였습니다. sink-field repair로 description field false denial 4개를 제거했습니다.

실제 발견된 취약점 / 사례

실제 배포 관찰에서 parameter rewriting으로 declaration·data check를 우회한 사례를 확인했습니다. 또한 CVE-2026-53816의 session-history merge와 CVE-2025-55284의 DNS-label dataflow를 inert tool로 구조적으로 재구성했습니다.

전자는 OpenClaw 2026.5.18 이전 paired node event의 provenance 검증 부족, 후자는 Claude Code 1.0.4 이전 command allowlist를 통한 무승인 파일 읽기·DNS exfiltration입니다. AGATE 실험은 실제 취약 제품 exploit이 아니라 이후 payment·egress를 모델링한 안전한 구조 재현입니다.

저자 주장 vs 실제 증명 범위

authority·provenance·effect evidence를 하나의 결정론적 gate와 forensic graph로 결합할 수 있다는 주장은 구현과 대규모 event 기록으로 뒷받침됩니다. 두 플랫폼에서 scenario-level replay projection 63/63 일치도 재구성 가능성을 보여줍니다.

그러나 완전한 공격 차단률, production task success, online latency를 증명하지 않았습니다. flag-only adapter, uninstrumented surface, self-protection path 차이 때문에 “runtime defense가 compositional attack을 막는다”는 주장은 instrumented veto point와 정의된 primitive 범위로 제한해야 합니다.

기존 공격 / 기존 점검 방식과의 차이

기존 prompt classifier는 현재 텍스트가 악성인지 묻고 per-tool permission은 현재 호출이 허용됐는지 봅니다. AGATE는 권한의 발급 근거, source observation, 변환된 데이터, 과거 effect를 evidence graph로 연결해 sequence-level 판단을 합니다.

연구의 한계와 주의해서 볼 부분

저자는 multi-recipient target 누락, semantic key evasion, exactly-once 부재, rewrite·translation·inference·opaque semantics, bounded retention, uninstrumented shell·memory, benign completion 미측정, platform confounding을 인정합니다. decomposition invariance와 complete mediation도 보장하지 않습니다.

추가로 6 hard-deny와 23 advisory pattern은 공격 지식에 의존해 신규 의미 조합을 놓칠 수 있습니다. evidence retention 자체의 민감정보 보호와 tamper resistance도 production에서는 별도 설계가 필요합니다.

공개 PoC / Exploit / Tool / Artifact 분석

2026-09-29 기준 arXiv 원문과 두 CVE의 공식 advisory는 접근 가능합니다. 그러나 논문 참고문헌은 구현을 “Anonymized artifact, 2026”으로만 적어 식별 가능한 공식 저장소·다운로드 URL·commit을 제공하지 않습니다.

따라서 183개 test와 adapter 코드를 현재 공개 재현 가능한 artifact로 확인할 수 없습니다. 두 CVE advisory는 AGATE 코드가 아니므로 별도 GitHub source ZIP 보관 대상에 포함하지 않았습니다.

레드팀 / 모의해킹에서 어떻게 활용할까

도구 호출을 개별 점검하지 말고 source observation부터 sink effect까지 evidence graph로 묶습니다. 동일 데이터를 raw·base64·hex·percent, 파일·history·memory 경로로 이동시키며 authority parameter와 destination 결속이 유지되는지 inert sink로 확인합니다.

실제 결제·DNS·외부 전송 대신 canary와 local sink를 사용하고, adapter가 flag-only이거나 관찰 누락이 생기면 차단 평가를 중단합니다. 예상하지 못한 host effect가 발생하면 즉시 세션과 runtime을 폐기합니다.

실제 점검 시 추가할 체크리스트

  • operator와 user identity가 분리되고 authority source가 인증되는가
  • grant가 request digest, parameter, expiry, use count, amount에 결속되는가
  • grant는 최종 allow에서만 원자적으로 소비되는가
  • raw·base64·hex·percent와 다중 수신자 경로를 추적하는가
  • memory·session history·shell을 포함한 모든 effect sink가 instrumented됐는가
  • repeated operation과 cross-session 누적 효과를 ledger가 잡는가
  • replay graph를 독립 ground truth와 비교하는가
  • 정상 reuse·basename·description field 오탐과 task completion을 측정하는가

실무 가치 평가

AGATE는 권한과 데이터 출처를 같이 보지 않으면 조합 공격을 놓친다는 실무적 메시지가 강합니다. 특히 승인 token을 정확한 parameter와 사용 횟수에 결속하고 증거를 forensic replay에 남기는 패턴은 고위험 agent에 유용합니다.

다만 complete mediation이 어려운 harness에서는 flag-only 감시 도구에 머물 수 있고 오탐 비용도 큽니다. 먼저 관찰 coverage와 benign workflow를 측정한 뒤 enforce 가능한 sink부터 제한적으로 적용하는 것이 현실적입니다.

결론

AGATE는 compositional attack을 단일 prompt가 아니라 authority·provenance·effect sequence 문제로 재정의합니다. 구현과 evidence reconstruction은 유망하지만, 실제 차단 보장은 adapter의 veto 능력과 관찰 완전성에 달려 있습니다.

따라서 이 연구는 완성된 범용 방어보다 런타임 판단에 필요한 최소 증거 구조를 제시한 것으로 평가해야 합니다. 공개 artifact가 익명 처리돼 있어 현재 독립 재현성은 확인되지 않았습니다.

반응형

댓글