Compatibility at a Cost: Systematic Discovery and Exploitation of MCP Clause-Compliance Vulnerabilities

이 논문은 MCP(모델 컨텍스트 프로토콜) 의 호환성 유연성에서 비롯된 새로운 취약점을 체계적으로 발견하고 이를 악용하는 공격을 식별하기 위해 다국어 SDK 를 분석하는 프레임워크를 제시합니다.

Nanzi Yang, Weiheng Bai, Kangjie Lu

게시일 Thu, 12 Ma
📖 4 분 읽기☕ 가벼운 읽기

Each language version is independently generated for its own context, not a direct translation.

1. MCP 란 무엇인가요? (AI 의 'USB-C' 포트)

과거에는 AI 가 외부 도구 (날씨 정보, 계산기, 검색 등) 와 연결하려면 도구마다 다른 케이블과 어댑터를 만들어야 했습니다. 하지만 MCP는 모든 AI 와 도구를 연결해주는 범용 USB-C 포트처럼 작동합니다.

  • 장점: 어떤 AI 가든, 어떤 도구든 이 표준만 따르면 바로 연결되어 작동합니다. (호환성 극대화)
  • 문제: 너무 많은 종류의 기기를 연결하려면, 표준 규격이 너무 엄격하면 안 됩니다. 그래서 "필수 (MUST)" 항목은 적고, **"권장 (SHOULD)"**이나 "선택 (MAY)" 항목이 대폭 늘어났습니다.

2. 핵심 문제: "호환성"이라는 이름의 함정

논문의 저자들은 이 '높은 호환성'이 바로 해커에게 문을 열어주는 열쇠가 된다고 말합니다.

비유: "선택 사항"이라는 이름의 빈 방

imagine imagine 건물을 짓는다고 생각해보세요. 건축 규정은 "문은 반드시 잠그라 (필수)"고 하지만, "창문은 바람이 불 때만 닫으라 (권장)"고 합니다.

  • 건축가 (SDK 개발자): "창문 닫는 건 선택 사항이니까, 귀찮으면 안 닫아도 되겠지?"라고 생각해서 창문을 열어둔 채 건물을 지었습니다.
  • 해커: "아하! 창문이 열려 있군!" 하고 들어와서 집 안을 뒤집어엎습니다.

MCP 에서도 개발자들이 '권장 사항'을 구현하지 않고 넘어간 경우가 많았습니다. 해커는 이 **구현되지 않은 빈 공간 (규약 위반)**을 이용해 AI 를 속이거나 시스템을 마비시킵니다.

3. 해커는 어떻게 공격할까요? (호환성 남용 공격)

이 논문은 이 빈 공간들을 이용해 일어나는 공격을 **'호환성 남용 공격 (Compatibility-abuse attacks)'**이라고 부릅니다.

  • 침묵하는 주입 (Silent Prompt Injection):
    • 상황: 서버가 "도구 목록이 바뀐 것 같습니다!"라고 알려주는 알림을 보내는 건 '권장 사항'입니다.
    • 현실: 어떤 언어로 만든 프로그램 (SDK) 은 이 알림 기능을 아예 만들지 않았습니다.
    • 공격: 해커가 서버를 조작해 악성 도구를 몰래 추가합니다. 하지만 알림 기능이 없어서 AI 는 "아, 도구가 바뀐 줄도 모르고" 그 악성 도구를 그대로 실행해버립니다. 사용자는 전혀 모릅니다.
  • 시스템 마비 (DoS):
    • 상황: "핑 (Ping) 요청 빈도는 설정 가능해야 합니다"라는 권고가 있습니다.
    • 현실: 빈도 제한을 못 하게 구현된 경우가 있습니다.
    • 공격: 해커가 엄청난 양의 요청을 보내 시스템이 멈추게 만듭니다.

4. 연구팀의 해결책: "모든 언어를 통하는 번역기"

이런 문제를 찾기 위해 연구팀은 세 가지 혁신적인 도구를 만들었습니다.

  1. 범용 번역기 (Universal IR Generator):
    • Python, Java, Go 등 10 가지 언어로 된 프로그램은 각각 다른 문법을 씁니다. 연구팀은 이 복잡한 코드들을 **모두 하나의 공통된 언어 (중간 표현, IR)**로 번역했습니다. 마치 모든 나라의 지도를 하나의 표준 지도로 통일한 것과 같습니다.
  2. AI 검사관 (Hybrid Static-LLM Analysis):
    • 단순히 코드 패턴만 찾는 것은 한계가 있습니다. 연구팀은 **정적 분석 (코드 구조 분석)**과 **LLM(인공지능)**을 섞었습니다.
    • 비유: 정적 분석이 "이 방에 창문이 있나?"를 빠르게 찾고, AI 가 "그 창문이 열려 있는지, 그리고 그 창문이 열리면 어떤 위험이 있을까?"를 문맥을 이해하며 판단합니다.
  3. 공격 시뮬레이터 (Modality-based Exploitability Analysis):
    • 모든 버그가 해킹은 아닙니다. 연구팀은 "이 빈 공간이 해커에게 **내용 (Payload)**을 조작할 기회를 주나, 아니면 **시기 (Timing)**를 조작할 기회를 주나?"를 분석했습니다.
    • 해커가 통제할 수 있는 요소가 있다면, 그것은 단순 버그가 아닌 치명적인 보안 구멍으로 분류합니다.

5. 결과: 엄청난 발견과 실제 영향

이 도구를 10 개 언어의 SDK 에 적용한 결과는 놀라웠습니다.

  • 발견:1,265 개의 잠재적 위험을 찾아냈습니다.
  • 보고: 이 중 26 건을 공식적으로 보고했고, 그중 20 건이 인정받았습니다. (5 건은 '최우선' 등급으로 처리됨)
  • 반응: MCP 를 만드는 커뮤니티 유지자들은 "이렇게 많은 문제를 하나하나 보고하는 건 불가능하다"며, 이 연구팀의 도구를 공식 검사 도구로 채택하겠다고 했습니다.

6. 결론: 교훈

이 논문의 핵심 메시지는 **"완벽한 호환성을 추구하다 보면 보안 구멍이 생길 수 있다"**는 것입니다.

  • AI 개발자: "표준이 권장하는 기능은 다 구현된 줄 알지 마라. 직접 확인하라."
  • 표준 제정자: "권장 사항 (SHOULD) 이라도 보안에 중요한 건 '필수 (MUST)'로 바꿔야 한다."
  • 일반인: AI 가 외부와 연결될 때, 그 연결고리가 얼마나 튼튼한지, 그리고 그 연결고리에 숨겨진 '선택 사항'들이 얼마나 위험할 수 있는지 경계해야 합니다.

결국, 편의성 (호환성) 과 안전성 (보안) 사이에는 늘 긴장 관계가 존재하며, 우리는 그 균형을 찾아야 한다는 것을 이 논문은 잘 보여줍니다.