본문 바로가기
Hack/AI

A2M: 공개 MCP 도구 생태계를 이용한 에이전트 하이재킹

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

  • 원문: A2M: Agent-to-Malicious-Tool Attacks against MCP-based Agents
  • 저자: Laizhen Li, Xuan Wang, Peicheng Zhao, Juanjuan Zhao, Kejiang Ye, Cheng-zhong Xu, Xitong Gao
  • 공개일: 2026-09-22
  • 버전: arXiv:2609.26761v1, 19쪽
  • Tags: MCP, LLM agent, tool poisoning, prompt injection, data exfiltration, denial of service, integrity, tool selection, zero trust, AI security

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

한눈에 보기

A2M은 공격자가 공개 MCP 레지스트리에 악성 도구를 등록하고, 도구 이름·설명·반환값을 최적화해 에이전트가 그 도구를 선택하고 후속 행동까지 오염시키는 공격 프레임워크입니다. 공격자는 모델 가중치나 시스템 프롬프트를 알지 못해도 로컬 대리 에이전트의 실행 궤적을 보고 attraction과 manipulation을 반복 개선합니다.

연구진은 95개 과제, 70개 MCP 서버, 527개 도구로 구성된 LiveMCPBench에서 GLM-4.6을 최적화 대상으로 삼았습니다. 네 공격 시나리오의 평균 malicious tool invocation rate는 93.6%, 정보 유출·환경 무결성 손상·추론 탈선의 평균 attack success rate는 74.4%였고, 다섯 모델 전이에서는 평균 호출률 63.6%, 평균 성공률 24.5%로 낮아졌습니다. 즉 “악성 도구가 선택됨”과 “공격 목표 달성”은 명확히 구분해야 합니다.

연구 배경

MCP는 에이전트가 외부 도구를 표준 인터페이스로 발견·호출하게 하지만, 도구의 이름·설명·출력은 모델의 자연어 추론 문맥에 직접 들어갑니다. 공개 레지스트리나 사용자가 추가한 서버를 신뢰하면, 전통적인 API 스키마가 단순 기능 선언이 아니라 모델을 설득하는 공격 입력이 됩니다.

기존 tool poisoning은 정적인 악성 설명이나 prompt injection을 주로 평가했습니다. A2M은 실제 실행 궤적을 피드백으로 사용해 선택 유도와 실행 후 조작을 분리·공동 최적화하고, 서로 다른 피해 목표와 모델 전이를 정량화합니다.

공격 모델 / 전제 조건

공격자는 공개 또는 검증이 약한 MCP 레지스트리에 새 서버·도구를 등록할 수 있고 도구 이름, 설명, endpoint 반환값을 통제합니다. 피해 사용자는 악의가 없으며 에이전트도 정상 ReAct 루프를 수행합니다. 공격자는 피해 모델의 가중치, 시스템 프롬프트, 메모리에는 접근하지 못하지만 로컬의 대리 모델·에이전트에서 동일 또는 유사 작업의 실행 trace를 관찰할 수 있습니다.

초기 권한은 “도구 후보로 노출될 권한”이지 곧바로 파일·환경변수·다른 도구 권한을 갖는 것은 아닙니다. 실제 정보 유출이나 환경 변경에는 에이전트가 악성 도구를 선택하고, 반환된 지시를 신뢰하며, 후속 도구 호출 인자에 민감정보를 넣거나 파일·설정 변경을 수행해야 합니다. 별도 피해자 클릭은 필요하지 않지만 도구 설치·승인 정책과 human confirmation이 결과를 크게 바꿀 수 있습니다.

비판적 검토 / 아쉬운 점

우선 공격의 가장 강한 전제는 공격자 도구가 피해 에이전트의 후보 집합에 들어간다는 점입니다. 조직형 allowlist, 서명된 서버 카탈로그, 설치 승인, namespace 충돌 방지를 적용한 환경에서는 첫 단계 자체가 막힙니다. 실제 공개 레지스트리의 노출·설치율과 사용자 승인 과정을 측정하면 외적 타당성이 보완됩니다.

두 번째로 GLM-4.6에서 평균 호출률 93.6%와 평균 공격 성공률 74.4%가 나오지만, GPT-5 전이에서는 정보 유출과 환경 무결성 성공률이 0이었습니다. 모델·오케스트레이터별 격차가 크므로 “MCP 에이전트 전반이 74.4%로 뚫린다”는 일반화는 부당합니다. 동일 tool pool, prompt, confirmation 정책을 여러 프레임워크에서 교차 반복해야 합니다.

세 번째로 평가는 격리된 benchmark 에이전트와 LLM judge에 의존합니다. 실제 파일·비밀·서비스가 있는 장기 실행 환경, 사용자 승인, endpoint 인증, rate limit, 탐지·복구를 포함하지 않습니다. judge 점수 4만 성공으로 둔 엄격함은 장점이지만, 비결정성과 오판을 통제하려면 사람의 이중 검토 및 반복별 신뢰구간이 필요합니다.

핵심 Root Cause

MCP 도구 선택 계층이 공격자 통제 자연어 메타데이터를 권한 결정의 근거로 사용하고, 도구 반환값을 신뢰 가능한 환경 관찰 또는 지시로 모델 문맥에 합치는 것이 구조적 원인입니다. 선택 단계의 “무슨 도구를 부를 것인가”와 실행 단계의 “그 도구 출력이 어떤 후속 권한을 움직일 수 있는가”가 분리되지 않습니다.

깨진 보안 불변조건은 세 가지입니다. 신뢰되지 않은 도구 설명은 권한 부여를 결정해서는 안 되고, 신뢰되지 않은 반환값은 시스템·사용자 지시와 같은 권위를 가져서는 안 되며, 한 도구의 데이터가 다른 고권한 도구의 인자로 흐를 때 출처와 목적 제한이 보존되어야 합니다. A2M은 바로 이 선택 신뢰, 출력 provenance, cross-tool information flow의 결합 실패를 노립니다.

핵심 공격 원리

Attraction 단계는 Authority, Urgency, Comprehensiveness, Resource Optimality, Security라는 다섯 설득 전략으로 도구 이름과 설명 후보를 만듭니다. 각 반복에서 세 개 후보를 Monte Carlo 방식으로 평가하고 호출 가능성이 0보다 높은 후보를 남깁니다.

Manipulation 단계는 공격 목표에 맞춰 도구 반환 payload를 만듭니다. Analyzer가 전체 실행 trace에서 선택 실패, 지시 무시, 부분 실행을 판정하고 Optimizer가 이름·설명·출력을 다시 씁니다. 목표는 계산량을 키우는 C-DoS, 메모리·파일·환경변수 유출, 설정 쓰기·서버 설치 같은 환경 무결성 손상, 본래 과제를 이탈시키는 reasoning derailment입니다.

공격 흐름

  1. 공격자는 정상 도구와 경쟁할 MCP 도구를 등록하고 작업과 관련 있어 보이는 이름·설명을 만듭니다.
  2. 로컬 대리 에이전트에서 과제를 반복 실행해 악성 도구가 후보로 선택되는지 측정합니다.
  3. 다섯 설득 전략과 세 후보 평가를 통해 attraction metadata를 갱신합니다.
  4. 호출된 도구는 공격 목표에 맞는 반환값을 내고, 에이전트가 민감정보 조회·추가 도구 실행·반복 추론을 하도록 유도합니다.
  5. Analyzer가 trace를 실패 유형별로 분류하고 Optimizer가 다음 반복의 metadata와 payload를 수정합니다.
  6. 최적화된 도구를 다른 작업과 모델에 전이해 호출률과 실제 목표 달성을 각각 측정합니다.

성공 조건 / 실패 조건

성공하려면 악성 서버가 후보 집합에 포함되고, metadata가 정상 도구보다 관련성·권위가 높다고 평가되며, 에이전트가 호출 결과의 provenance를 격리하지 않아야 합니다. 정보 유출에는 읽기 가능한 비밀과 외부로 보낼 인자 경로, 환경 손상에는 쓰기·설치 권한, C-DoS에는 충분한 step·token budget이 필요합니다.

서명·allowlist가 등록을 막거나, 선택 전에 사용자 승인을 요구하거나, 도구별 최소 권한과 information-flow policy가 후속 호출을 차단하면 실패합니다. 모델이 payload를 무시하거나 일부만 수행해도 호출률은 높게 남을 수 있지만 최종 공격 성공은 아닙니다. 실제 실험에서도 미호출, 지시 무시, 부분 수행이 주요 실패 원인이었습니다.

연구진의 실험 환경

LiveMCPBench는 6개 도메인의 95개 과제, 70개 서버, 527개 도구로 구성됩니다. LangChain 기반 ReAct 에이전트가 최대 40 step을 수행하며, 에이전트와 judge temperature는 0, 생성기 0.7, mutation 0.8, 최대 출력은 8,192 token입니다. 성공 판정은 DeepSeek-V3 judge의 1~4점 중 4점만 성공으로 계산합니다.

최적화 대상은 GLM-4.6이고, 전이 대상은 Qwen3-Max, DeepSeek-V3.1, Kimi-K2-0905, GPT-5 medium입니다. GLM 실험은 95과제×4시나리오=380 task-scenario이며, 최적화에 입력 22.8억·출력 6천만 token, 평가에 입력 1,280만·출력 20만 token을 사용했습니다. OpenRouter의 Z.ai 가격과 28.1% cache hit를 적용한 추정 비용은 총 1,192.4달러, task-scenario당 3.14달러입니다.

주요 실험 결과

GLM-4.6 직접 최적화에서 C-DoS는 호출률 81.6%, 기준 대비 비용 32.4배였습니다. 정보 유출은 95.1%/65.9%, 환경 무결성 손상은 97.6%/64.3%, 추론 탈선은 100%/92.9%의 호출률/성공률을 기록해 네 시나리오 평균 호출률 93.6%, 세 목표 평균 성공률 74.4%였습니다.

다섯 모델 전이 평균은 호출률 63.6%, C-DoS 2.7배, 공격 성공률 24.5%였습니다. GPT-5는 시나리오별 호출률 64.9~76.3%였지만 정보 유출과 환경 손상 성공률은 0%, 추론 탈선은 22.0%, C-DoS는 2.0배였습니다. 이 격차는 호출 여부가 보안 영향의 대리 지표가 될 수 없음을 보여 줍니다.

18개 holdout 과제의 ablation에서 전체 A2M 비용 배수는 평균 28.86이었고, two-stage 제거 10.70, persuasion 전략 제거 13.29, trajectory feedback 제거 10.65였습니다. 10개 기본 질의에서 각 5개 유사 질의를 만든 50개 unseen query의 호출률은 GLM 88%, DeepSeek 80%, Kimi 74%, Qwen 80%, GPT-5 90%였습니다.

방어 평가에서 perplexity 필터와 auditor는 충분하지 않았고 auditor 탐지율은 최대 32.5%였습니다. paraphrase 후에도 평균 호출률은 72.5%였습니다. FIDES형 information-flow control은 GLM에서 C-DoS 32.4배→9.0배, 호출 수 26.9→8.8, 정보 유출 65.9%→20.6%, 환경 손상 64.3%→22.9%, 추론 탈선 92.9%→11.1%로 낮췄지만 악성 도구 호출률은 모두 80%를 넘었습니다.

실제 발견된 취약점 / 사례

논문은 특정 상용 MCP 서버의 CVE를 발표하지 않습니다. 사례는 benchmark 안에서 악성 도구가 에이전트 메모리·파일·환경변수의 비밀을 후속 인자로 포함하거나, 설정 파일을 쓰고 새 MCP 서버 설치를 시도하거나, 본래 과제를 반복 작업으로 이탈시키는 시나리오입니다.

GLM 실패 분석에서 정보 유출·환경 손상·추론 탈선의 미호출 비중은 각각 21.1%, 34.8%, 43.8%였고, payload 무시는 47.4%, 56.5%, 31.3%, 부분 수행은 31.6%, 8.7%, 25.0%였습니다. 이는 metadata 경쟁과 실행 권한이라는 두 관문을 별도로 방어해야 함을 보여 줍니다.

저자 주장 vs 실제 증명 범위

trajectory feedback을 이용한 두 단계 최적화가 정적 공격보다 benchmark에서 강하고, 한 모델에서 만든 도구가 다른 모델에도 일정 부분 전이된다는 주장은 ablation과 교차 모델 결과가 뒷받침합니다. 기존 텍스트 탐지·paraphrase보다 information-flow control이 효과적이라는 비교도 해당 실험 조건에서는 입증됩니다.

반면 실제 공개 레지스트리의 감염률, 조직 환경의 설치 승인 우회, 실서비스 데이터 유출, 장기간 persistence는 증명하지 않았습니다. 모델별 성공률 차이가 크고 단일 ReAct 구조를 사용했으므로 모든 MCP 호스트·모델·정책에 대한 보편적 취약성으로 확대할 수 없습니다.

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

기존 tool poisoning은 하나의 악성 설명이나 숨은 prompt를 넣고 선택되는지 확인하는 경우가 많았습니다. A2M은 선택 유도와 반환값 조작을 분리한 뒤 전체 trace에서 실패 원인을 읽어 두 부분을 반복 최적화합니다.

기존 점검이 도구 문자열의 악성 키워드나 perplexity에 집중했다면, 이 연구는 실행 중 정보 흐름을 핵심 방어면으로 봅니다. 즉 “이 문장이 악성인가”보다 “신뢰되지 않은 도구 출력이 어떤 민감 source에서 어떤 privileged sink로 흘렀는가”를 추적해야 한다는 차이가 있습니다.

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

저자들은 공격자가 도구를 등록할 수 있다는 전제, 제한된 모델·프레임워크, benchmark 기반 과제, 단기 실행을 한계로 둡니다. 네트워크·OS 격리, 장기 메모리, 실제 사용자 승인, 조직별 registry governance는 평가하지 않았습니다.

추가로 후보 세 개와 제한된 rollout로 attraction을 최적화해 탐색 안정성의 신뢰구간이 부족합니다. 공격자는 피해의 전체 trace를 직접 보지 못할 수 있고, rate limit·비용·탐지로 반복 횟수가 제한됩니다. LLM judge 한 종류의 판정과 수동 검증 범위도 더 명확히 공개할 필요가 있습니다.

공개 PoC / Exploit / Tool / Artifact 분석

A2M 공식 GitHub 저장소는 현재 공개되어 있습니다. README는 Python 3.10 이상, 인터넷과 모델·MCP용 API key를 요구하며, configs, datasets, src/attacks, src/evaluators, mcp_client 및 실행 스크립트를 제공합니다. main.py와 attack generator가 두 단계 최적화·평가 주장을 구현합니다.

공개 코드는 benchmark와 연구 재현 artifact이며, 임의의 실제 MCP 생태계를 자동 침해하는 범용 exploit로 검증된 것은 아닙니다. API 비용과 외부 모델 응답, 서버 가용성에 따라 결과가 달라지며 실제 비밀이나 운영 서버 대신 격리된 테스트 fixture를 사용해야 합니다.

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

조직의 승인된 MCP 카탈로그 복제본에서 악성 metadata가 라우터 순위를 얼마나 바꾸는지부터 측정합니다. 관찰 포인트는 후보 도구 목록, 선택 점수·근거, 사용자 승인, 반환값 provenance, 민감 source 접근, 후속 privileged sink 호출입니다.

검증은 도구 호출과 최종 영향으로 분리합니다. 호출되더라도 민감정보가 외부 인자로 흐르지 않고 쓰기 작업이 승인에서 멈추면 방어 성공입니다. 실제 secret 대신 canary 값을 쓰고, 외부 egress·파일 쓰기·서버 설치는 sandbox와 allowlist로 제한하며 예산 또는 step 상한에 도달하면 중단합니다.

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

  • MCP 서버·도구 등록을 서명, 소유자 검증, allowlist와 변경 승인으로 제한합니다.
  • 이름 충돌·유사 이름·과도한 권위·긴급성 문구가 라우팅에 미치는 영향을 시험합니다.
  • 도구 설명과 반환값을 untrusted data로 표시하고 시스템·사용자 지시와 분리합니다.
  • 도구별 파일·환경변수·네트워크·다른 도구 호출 권한을 최소화합니다.
  • 민감 source에서 외부 endpoint나 설정 변경 sink로 흐르는 데이터를 정책으로 차단합니다.
  • 위험한 후속 행동에는 사용자에게 대상·인자·영향을 보여 주고 재승인을 받습니다.
  • MTIR과 실제 유출·변경 성공률을 별도 지표로 기록합니다.
  • step·token·반복 호출 예산과 이상 비용 자동 중단을 설정합니다.
  • endpoint 응답 무결성, 서버 소유권 변경, metadata 업데이트를 지속 감시합니다.

실무 가치 평가

MCP 보안 평가에서 “악성 문자열 탐지”만으로는 부족하고 도구 선택과 cross-tool 권한 흐름을 함께 시험해야 한다는 점을 강하게 보여 줍니다. 공개 코드와 상세한 규모·비용·ablation은 재현과 방어 비교에 유용합니다.

다만 가장 높은 성공률은 공격자 도구가 이미 후보로 들어간 격리 benchmark의 GLM 최적화 결과입니다. 실무 우선순위는 모델 prompt 튜닝보다 registry governance, 최소 권한, 출력 provenance, information-flow control, 위험 행동 재승인에 두는 것이 타당합니다.

결론

A2M의 핵심은 MCP가 연결 규격을 표준화했지만 신뢰와 권한을 자동으로 해결하지 않는다는 점입니다. 공격자 통제 metadata가 선택을 지배하고 반환값이 후속 권한을 움직이면, 정상 인터페이스만으로도 에이전트를 비용·기밀성·무결성 공격에 이용할 수 있습니다.

연구는 이 위험을 대규모 benchmark와 공개 코드로 구체화했지만 모델과 정책별 차이도 동시에 드러냅니다. 악성 도구 호출률이 아닌 실제 데이터·권한 흐름을 기준으로 평가하고, 등록 단계부터 실행 sink까지 zero-trust 통제를 연결해야 합니다.

반응형

댓글