No-Box 취약점 분석: 툴 설명만으로 MCP 서버의 Indirect Prompt Injection 찾기
No-Box Vulnerability Analysis: Description-only Detection of Indirect Prompt Injection Vulnerabilities in MCP Servers
TL;DR Highlight
MCP 툴 설명만 LLM에 넣었더니 확인된 IPI 취약 툴 95개 중 94개를 찾았다
Who Should Read
외부 MCP 서버를 에이전트에 붙이기 전에 소스 없이 프롬프트 인젝션 위험을 미리 걸러내고 싶은 백엔드·플랫폼 개발자
Core Mechanics
- 소스도 호출도 없이 설명만 본다
- 툴 이름, 설명, 입력 스키마만 보고 취약점 가설을 만든다.
- 이 가설을 Theory-of-Concept(ToC, 공격 시나리오 가설)라고 부른다.
- 외부 데이터가 LLM으로 흐르면 위험
- 툴 설명상 웹페이지·이슈·메시지 같은 외부 내용이 응답에 섞이면 IPI(간접 프롬프트 인젝션) 후보다.
- 구현 방식과 무관하게 이 데이터 흐름은 반드시 존재한다고 본다.
- 2단계 파이프라인 MCPSEC
- 1단계는 LLM이 숨은 구현(캐시, 저장소, 변환 단계)까지 추측해 데이터 흐름을 만든다.
- 2단계는 흐름마다 4개 축으로 위험도를 매기고 ToC를 쓴다.
- 위험 판정 4축
- 원문 보존도, 공격자 통제 가능성, 지시문으로 해석될 가능성, 새니타이징(필터링) 수준을 본다.
- 이 4개 조건을 모두 만족하는 흐름이 하나라도 있으면 취약 툴로 표시한다.
- 재현율은 높고 정밀도는 낮다
- 일부러 넓게 추측해서 놓치는 건 적지만 오탐이 늘었다.
- 그래서 최종 판정이 아니라 1차 선별용이다.
Evidence
- 재현율이 LLM 단일 호출보다 높다
- 확인된 취약 툴 95개 중 MCPSEC는 94개(98.9%), 프롬프트 한 번 방식 LLM 베이스라인은 80개(84.2%)를 찾았다.
- 20개 MCP 서버의 툴 177개 샘플 기준이다.
- 정밀도는 오히려 낮다
- MCPSEC는 143개를 취약으로 표시해 94/143(65.7%)이었다.
- 베이스라인은 97개 중 80개로 82.5%였다.
- 메타데이터만으로 위험 라벨 일치
- 동일한 97개 툴에서 사람 평가와 4축 평균 일치율이 MCPSEC 86.9%, 베이스라인 74.5%로 12.4%p 높았다.
- 외부 소스가 그럴듯하다는 평가는 143개 중 96.5%였다.
- 소스코드로 확인해도 대부분 유지
- ToC의 73.4%는 Plausible, 2.1%는 Partially Plausible, 24.5%는 Implausible이었다.
- 실행 확인에서는 143개 흐름 중 76.2%가 LLM 컨텍스트까지 공격 데이터를 전달할 수 있었다.
- 분석 비용은 서버당 $1.65
- 모든 LLM 호출은 GPT-5.4(high reasoning effort)로 했다.
- 서버당 평균 비용이다.
How to Apply
- 지금 쓰는 MCP 툴 설명을 LLM에 넣어 점검하기
- 연동 중인 MCP 서버의 툴 이름·설명·스키마를 아래 프롬프트에 붙여 외부 데이터가 섞이는 툴을 골라라.
- 결과 중 공격자 통제 가능성이 HIGH인 툴부터 수동으로 확인하라.
- 상태값만 필요한 툴은 응답을 줄이기
- 식별자·개수·상태만 필요한 툴이 외부 자유 텍스트를 반환하는지 확인하고 있으면 제거하라.
- 필요한 외부 텍스트는 서버가 만든 출력과 구조적으로 분리해 출처를 표시하라.
- MCP 서버 도입 심사에 1차 선별 단계 추가하기
- 설치 전에 메타데이터만으로 ToC를 생성해 위험 툴 목록을 만들어라.
- 오탐이 많으니 목록은 소스 리뷰나 런타임 테스트 우선순위로만 써라.
- 내 MCP 서버 툴 설명에 반환값 명시하기
- 각 툴 description에 무엇을 반환하는지 한 줄로 써라.
- 논문에서 반환 단서가 있는 툴은 ToC가 Plausible로 판정된 비율이 86.4%, 없는 툴은 62.3%였다.
Try It
# Claude나 ChatGPT에 그대로 붙여넣기 (논문 방법의 간이 버전: 1단계 흐름 추측 + 2단계 4축 평가를 한 번에 요청)
너는 MCP 서버 보안 분석가다. 소스코드나 실행 없이 아래 툴 메타데이터만 보고 간접 프롬프트 인젝션(IPI) 취약 가능성을 분석해라.
위협 모델: 사용자와 LLM 에이전트는 선의다. MCP 서버는 악의는 없지만 취약할 수 있다. 외부 데이터 소스(웹페이지, 이슈, 메시지, 문서 등)는 공격자가 내용을 바꿀 수 있다. 공격자는 MCP 서버·클라이언트·LLM 자체는 수정할 수 없다.
[툴 메타데이터]
{{툴 이름, 설명, 입력 스키마를 여기에 붙여넣기}}
단계 1: 각 툴마다 메타데이터에 직접 나오지 않아도 그럴듯한 데이터 엔티티(외부 API, 캐시, 인증 요소, 백그라운드 서비스 등)를 낙관적으로 추측하고, 외부 소스 → 툴 → LLM 컨텍스트 데이터 흐름을 만들어라.
단계 2: 각 흐름을 아래 4축으로 평가해라.
- Payload Fidelity: HIGH(원문 그대로) / LOW(요약·메타데이터로 축소)
- Attacker Controllability: HIGH(인증 불필요) / MED(계정·권한 필요) / LOW(로컬 접근 필요)
- Semantic Executability: HIGH(자유 텍스트·코드) / LOW(구조화 데이터·ID·enum)
- Sanitization: HIGH(필터 없음) / MED(길이 제한 등) / LOW(이스케이프·필터링)
출력: 툴별로 취약 여부(예/아니오), 4축 라벨, 취약하면 ToC(공격자가 누구인지, 어디에 페이로드를 심는지, 툴 출력이 얼마나 원문을 보존하는지)를 짧게 써라. 마지막에 가정한 구현 조건을 목록으로 적어라.
이어서 해 볼 것: 취약으로 나온 툴의 실제 반환값을 로컬에서 확인해 ToC의 가정이 맞는지 검증해 봐라.Terminology
관련 논문
같은 시뮬레이션, 다른 근거: 도구 출력을 파일로 넘기면 LLM 에이전트 정확도가 어디서 깎이나
긴 툴 출력을 파일로 넘기자 GPT-5.1은 정확도 11.3%p 하락, 정식 출력 지정하니 회복
가짜 뉴스가 진짜 폭락을: LLM 트레이딩 에이전트 대상 정보 주입 공격
가짜 헤드라인 한 줄로 LLM 트레이딩 에이전트 62%를 조종했다(프롬프트 주입은 14%)
Harness Engineering 101: LLM은 뇌, harness는 몸
에이전트는 JSON 배열을 관리하는 루프이고, 16개 챕터로 직접 만들어 본다
Harness²: 에이전트 harness를 스스로 고쳐 쓰는 재귀 최적화 프레임워크
모델은 고정하고 harness를 재귀로 고쳤더니 벤치마크 점수가 최대 11.8%p 올랐다
해고된 Savannah 경찰관, ICE 요원 남편에게 Flock 계정 공유
경찰관이 Flock 계정을 남편(ICE 요원)에게 공유했고, 감사에서 983건 검색이 드러나 해고됐다
tmux와 Claude Code: 세션, send-keys, 그리고 한계선
tmux로 Claude Code 여러 개를 돌리면 편하지만 에이전트 4개쯤에서 한계가 온다
Hybrid Reasoning Agents: 잠재 공간에서 생각하고 텍스트로 행동하는 LLM 에이전트
잠재 공간 추론과 텍스트 도구 호출을 섞었더니 성능 10.4%↑, 토큰 최대 54.7%↓
Original Abstract (Expand)
Conventional vulnerability analysis relies on either system access or dynamic interaction, all of which may be unavailable to third-party analysts auditing closed-source, remotely hosted, critical in situ systems, or commercially gated software. Therefore, we propose a new paradigm of no-box vulnerability analysis in which neither access nor runtime interaction is available, and only functionality metadata is available. Such metadata defines the intended behavior of the system, including its inputs, outputs, and side effects, while constraining the space of implementations consistent with that behavior. We propose hypothesizing about vulnerabilities that exist across all possible implementations of a given system metadata, without observing or interacting with the target system. An analyst can later validate these hypotheses when additional access is available. We showcase the feasibility of no-box vulnerability analysis through implementing a prototype called MCPSEC, which audits Model Context Protocol (MCP) servers for indirect prompt injection vulnerabilities using only the tool metadata exposed at server registration time. We evaluate MCPSEC on 20 widely deployed MCP servers comprising 177 tools, among which human evaluators confirm 95 vulnerable tools. MCPSEC identified 143 tools as vulnerable, and for each vulnerable tool, it produced a hypothesized vulnerability along with exploitation technique. Using metadata alone, MCPSEC predicted 94 (98.9% recall) real verified vulnerabilities, compared against an LLM baseline with 80 (84.2% recall). Overall, our results introduce no-box vulnerability analysis as a new analysis paradigm and demonstrate its practical feasibility in realistic systems.