본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 05. 21:58

아프리카를 위한 안전한 AI 인프라 구축: OWASP MCP Top 10 실무 적용

요약

OWASP에서 발표한 MCP Top 10 보안 표준을 바탕으로, 케냐의 M-PESA API를 MCP 서버로 구현할 때 적용한 보안 실무 사례를 소개합니다. AI 에이전트가 도구를 호출하는 과정에서 발생할 수 있는 간접 프롬프트 주입 및 권한 오남용 문제를 방지하는 구체적인 구현 방법을 다룹니다.

핵심 포인트

  • OWASP MCP Top 10을 통한 MCP 서버 전용 보안 체계 수립
  • AI 에이전트로부터 도구를 보호하기 위한 간접 프롬프트 주입 방어
  • OAuth 토큰의 인메모리 관리 및 민감 정보 해싱 처리
  • 도구 설명(Tool Description)의 정적 관리 및 입력값 타입 검증
  • 도구 어노테이션을 활용한 읽기 전용 권한 제어

OWASP 재단은 방금 **OWASP MCP Top 10 (2025)**를 발표했습니다. 이는 Model Context Protocol (MCP) 서버를 위해 전용으로 마련된 최초의 보안 분류 체계입니다. 실제 데이터(결제, 건강 기록, 법률 문서 등)를 처리하는 MCP 도구를 구축하는 사람이라면, 이것은 현재 가장 중요하게 읽어야 할 보안 문서입니다.

케냐의 M-PESA Daraja API를 MCP 서버로 구현한 mpesa-mcp에서 모든 통제 항목을 어떻게 구현했는지 소개합니다.

MCP 보안이 다른 이유

전통적인 API 보안은 요청으로부터 서버를 보호하는 것에 관한 것입니다. 반면 MCP 보안은 해당 도구를 사용하는 AI 에이전트로부터 도구를 보호하는 것에 관한 것입니다.

MCP 시스템의 핵심 취약점(arXiv:2603.21642, 2026)은 AI 에이전트가 자연어에 기반하여 어떤 도구를 호출할지, 어떤 매개변수(parameter)를 사용할지를 결정한다는 점입니다. 에이전트가 읽는 내용(문서, 웹 페이지, 반환된 API 응답 등)에 텍스트를 주입할 수 있는 공격자는 애플리케이션 코드에 전혀 손을 대지 않고도 도구 호출을 리다이렉트할 수 있습니다. MCP-38 위협 분류 체계는 이를 도구 설명 오염 (tool description poisoning)간접 프롬프트 주입 (indirect prompt injection) 공격 클래스로 정의합니다.

이는 구조적으로 새로운 형태입니다. 고전적인 소프트웨어 보안에는 이와 직접적으로 대응되는 개념이 없습니다.

mpesa-mcp가 각 리스크를 해결하는 방법

MCP01: 토큰 관리 미흡 및 비밀 정보 노출 (Token Mismanagement & Secret Exposure)

# 잘못된 방식 — 절대 이렇게 하지 마세요
consumer_key = "hXvqiOG2yy0PfvxkFHd3..."  # 하드코딩됨

...

OAuth 토큰은 메모리 내(in-memory)에만 캐싱됩니다(1시간 만료, 자동 갱신). 디스크에 절대 기록되지 않으며, 로그에도 남지 않습니다. 감사 로그(audit logs)의 모든 전화번호는 SHA-256으로 해싱됩니다:

def _audit(tool, params, outcome):
    safe = {
        k: hashlib.sha256(str(v).encode()).hexdigest()[:8] + "..."
...

MCP02: 도구 오염 및 프롬프트 주입 (Tool Poisoning & Prompt Injection)

mpesa-mcp의 도구 설명(tool descriptions)은 정적이며, 소스 코드 내에서 버전이 관리되고, PyPI Trusted Publisher (OIDC)를 통해 게시됩니다. 공격자는 GitHub Actions를 침해하지 않고서는 이를 수정할 수 없습니다. 모든 입력값은 API 호출 전에 타입(type)에 따라 검증됩니다:

def mpesa_stk_push(
    phone: Annotated[str, "Customer phone (any Kenyan format)"],
    amount: Annotated[int, "Amount in KES (whole number, min 1, max 150000)"],
...

MCP03: 과도한 권한 (Excessive Agency) — 도구 어노테이션 (Tool Annotations)

mpesa-mcp의 22개 도구 전체는 클라이언트가 호출을 올바르게 제어할 수 있도록 MCP 도구 어노테이션 (tool annotations)을 선언합니다:

@mcp.tool(annotations={
    "readOnlyHint": True,      # 조회 도구: 상태를 수정할 수 없음
    "destructiveHint": False,  # 또는 쓰기 도구의 경우 False: 확인 필요
...

이것은 가장 중요한 단일 통제 수단입니다. 잘 구현된 MCP 클라이언트는 사용자에게 확인 절차를 보여주지 않고는 mpesa_stk_push를 호출하지 않을 것입니다. 왜냐하면 destructiveHint: true는 해당 작업이 되돌릴 수 없음을 나타내기 때문입니다.

MCP06: 감사 로깅 (Audit Logging)

모든 도구 호출은 개인 식별 정보 (PII)를 제거한 구조화된 메타데이터와 함께 기록됩니다:

TOOL=mpesa_stk_push PARAMS={'phone': 'a3f2b1c4...', 'amount': '500'} OUTCOME=INITIATED

로그에는 자격 증명(credentials), 전체 전화번호, 거래 영수증이 포함되지 않습니다.

NSA/CISA 정렬 (The NSA/CISA Alignment)

NSA/CISA 공동 지침 U/OO/143395-24 (2024년 4월)와 최신 AI 데이터 보안 지침 (2025년 5월)은 모두 다음 6가지 원칙을 강조합니다:

  1. AI 배포 거버넌스 구축 (버전 관리된 릴리스, 변경 이력 (CHANGELOG), 위협 모델 (threat model))
  2. 모델 및 환경 이해 (README에 문서화된 데이터 흐름)
  3. 배포 전 검증 (CI/CD: 린트 (lint) + 테스트 게이트)
  4. 인프라 보안 (HTTPS 전용, 환경 변수 (env vars), 코드 내 자격 증명 포함 금지)
  5. 애플리케이션 계층 보안 (입력값 검증, 구조화된 출력 (structured outputs))
  6. 보안의 운영화 (감사 로깅, contact@aikkungfu.dev를 통한 취약점 공개 프로그램 (VDP))

mpesa-mcp는 이 6가지를 모두 구현합니다. 공식 SECURITY.md는 구체적인 코드 참조와 함께 각 통제 항목을 문서화하고 있습니다.

이것이 아프리카에 중요한 이유

아프리카의 AI 인프라(AI infrastructure)는 진정으로 이해관계가 큰(high-stakes) 운영을 처리합니다. M-PESA는 아프리카 내에서 PayPal보다 더 많은 거래를 매일 처리합니다. wapimaji-mcp를 통해 전송되는 가뭄 경보(Drought alerts)는 지역 사회 지도자가 자신의 카운티가 4단계 비상 상황(Phase 4 Emergency)에 진입하고 있음을 알게 되는 첫 번째 통지일 수 있습니다.

OWASP MCP Top 10은 주로 서구의 핀테크(fintech) 및 기업용 유스케이스(use cases)를 염두에 두고 작성되었습니다. 하지만 이 통제 항목들은 문제가 발생했을 때 복구 옵션이 더 적은 3,500만 명의 사람들에게 서비스를 제공하는 금융 인프라에도 똑같이, 어쩌면 훨씬 더 결정적으로 적용됩니다.

보안(Security)은 단순히 체크박스를 채우는 일이 아닙니다. 그것은 다른 모든 것을 의미 있게 만드는 전제 조건입니다.

Repos:

  • mpesa-mcp — AI 에이전트를 위한 M-PESA Daraja API
  • wapimaji-mcp — 케냐 가뭄 인텔리전스(Kenya drought intelligence)
  • civic-agent-kit — 케냐 시민 데이터(Kenya civic data)

Security docs:

Portfolio: gabrielmahia.github.io

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0