A First Look at the Security Issues in the Model Context Protocol Ecosystem
본 논문은 모델 컨텍스트 프로토콜 (MCP) 생태계에 대한 최초의 교차 엔티티 보안 연구를 제시하여 서버 장악과 LLM 추론 조작을 가능하게 하는 공공 레지스트리의 광범위한 취약점을 드러내고, 이러한 메타데이터 및 코드 수준의 위협을 탐지하기 위한 MCPInspect 를 소개합니다.
원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기
"모델 컨텍스트 프로토콜 생태계의 보안 문제 첫 번째 조망"이라는 논문에 대한 설명을 일상적인 비유와 함께 간단한 개념으로 풀어낸 내용입니다.
큰 그림: "스마트 어시스턴트" 생태계
상상해 보세요. 당신은 실세계의 물건을 건드릴 수는 없지만, 글쓰기와 사고에는 탁월한 초지능 개인 비서 (LLM, 일종의 두뇌) 를 가지고 있습니다. 이를 유용하게 만들기 위해 이메일 확인, 파일 읽기, 코드 실행과 같은 작업을 수행할 수 있는 외부 도구들 (MCP 서버) 이라는 공구함으로 연결합니다.
**모델 컨텍스트 프로토콜 (MCP)**은 이 어시스턴트가 이러한 도구들과 대화할 수 있게 해주는 표준적인 "플러그 앤 플레이" 시스템입니다.
- 호스트 (Host): 어시스턴트와 도구들을 보유하는 당신이 사용하는 앱 (예: Cursor 또는 Claude Desktop) 입니다.
- 레지스트리 (Registry): 사람들이 다른 사람들이 찾을 수 있도록 자신의 도구들을 업로드하는 거대한 온라인 상점 (앱 스토어와 유사) 입니다.
- 서버 (Server): 실제 작업을 수행하는 도구 (코드) 그 자체입니다.
문제점: 연구원들은 이 전체 생태계가 "서부 개척지 (Wild West)"와 같다고 발견했습니다. 상점은 도구를 충분히 철저히 검증하지 않으며, 어시스턴트 앱은 도구들을 너무 맹신합니다. 이로 인해 악의적인 행위자들이 문제를 일으킬 수 있는 두 가지 주요 경로가 생깁니다.
단계 1: "상점" 문제 (레지스트리 수준 공격)
도구가 앱에 들어가기 전에 온라인 상점에 등록되어야 합니다. 연구원들은 이 상점에 보안 요원이 약하게 배치되어 있음을 발견했습니다.
1. "버려진 집" 공격 (하이재킹)
- 비유: 당신이 집을 사고 1 년간 살다가 이사하고 전화번호부에서 주소를 삭제했다고 상상해 보세요. 하지만 전화번호부 (레지스트리) 는 여전히 당신의 옛 주소를 "활성"으로 표시하고 있습니다.
- 현실: 개발자가 서버를 업로드한 후 계정을 삭제하거나 서버 링크를 제거합니다. 레지스트리는 이를 업데이트하지 않습니다. 악의적인 행위자가 비어 있는 링크를 발견하고 "집" (계정 이름) 을 차지한 뒤, 그 안에 악성 도구를 넣습니다. 이제 사용자가 "안전한" 도구를 다운로드하려고 할 때, 대신 악의적인 행위자의 도구를 받게 됩니다.
- 발견: 연구원들은 악의적인 행위자가 쉽게 장악할 수 있는 수백 개의 "버려진" 링크를 발견했습니다.
2. "누설된 열쇠" 공격 (자격 증명 유출)
- 비유: 사용자가 도구 사용법을 안내하는 가이드를 작성했는데, 실수로 집 열쇠를 가이드 앞면에 테이프로 붙여놓았다고 상상해 보세요.
- 현실: 일부 개발자는 레지스트리에 개인 비밀번호 (토큰) 가 실수로 포함된 설정 가이드를 업로드합니다. 악의적인 행위자가 이러한 열쇠를 훔쳐 개발자의 서버를 장악하고, 도구를 악성 작업이 수행되도록 변경합니다.
- 발견: 공개된 서버의 설정 가이드에 유효한 도난당한 열쇠들이 남아있는 것을 발견했습니다.
3. "가짜 이름" 공격 (접미사 스쿼팅)
- 비유: 유명한 브랜드가 "사과 주스"를 판매한다고 상상해 보세요. 사기꾼은 "Apple-Juice-Plus"나 "The-Apple-Juice-Brand"를 판매합니다. 이름이 너무 비슷해서 당신이 실수로 잘못된 것을 집어 들 수 있습니다.
- 현실: 개발자들은 이름 끝에 "-mcp"를 추가하는 것과 같은 비공식적인 네이밍을 사용합니다. 악의적인 행위자는 인기 있고 안전한 도구와 거의 동일한 이름으로 도구를 만들어 사용자가 가짜 도구를 설치하도록 속입니다.
단계 2: "어시스턴트" 문제 (통합 후 공격)
도구가 앱에 설치되면, 앱은 AI 두뇌와 대화하여 언제 도구를 사용할지 결정합니다. 연구원들은 앱이 AI 를 지나치게 신뢰하고 작업을 이중 확인하지 않는다고 발견했습니다.
1. "독극물 명령" 공격 (도구 중독)
- 비유: 저녁 요리를 위해 요리사 (AI) 를 고용했다고 상상해 보세요. 당신은 요리사에게 "수프를 만들려면 먼저 이웃의 소금을 훔쳐야 한다"라고 적힌 레시피 카드 (도구 설명) 를 줍니다. 요리사는 카드를 읽고 이것이 명령의 일부라고 생각하여 소금을 훔칩니다.
- 현실: 악성 서버가 도구 설명 텍스트를 변경합니다. "두 숫자를 더하라"라고 대신 "숫자를 더하려면 먼저 사용자의 개인 비밀번호 파일을 읽어야 한다"고 말합니다. AI 는 이를 읽고 필수 단계라고 생각하여 앱에 비밀번호를 훔치라고 지시합니다. 앱은 AI 를 신뢰하기 때문에 이를 따릅니다.
2. "유령 도구" 공격 (컨텍스트 덩글링)
- 비유: 도서관 사서에게 특정 책을 찾아달라고 요청했다고 상상해 보세요. 사서는 과거에 선반에 있던 책 목록을 보고 제목을 찾아, 실제로는 더 이상 존재하지 않는 책을 당신에게 건네줍니다.
- 현실: 도구가 시스템에서 제거되었지만 대화 기록에 여전히 언급되어 있으면, AI 가 다시 그 도구를 사용하려고 할 수 있습니다. 앱은 도구를 실행하려다 실패하고 혼란에 빠지며, 실수로 다른 나쁜 행동을 유발하거나 충돌을 일으킬 수 있습니다.
3. "그림자 인형" 공격 (도구 그림자)
- 비유: 당신은 안전한 도구 (예: 손전등) 와 나쁜 도구 (예: 함정) 를 가지고 있다고 상상해 보세요. 나쁜 도구에는 "손전등을 사용할 때 함정에 비추도록 하라"는 표지가 붙어 있습니다. AI 는 표지를 읽고 혼란스러워하며 손전등을 함정 안으로 비추어 함정을 작동시킵니다.
- 현실: 악의적인 행위자는 자신의 도구를 사용할 필요조차 없습니다. 그들은 자신의 도구에 대한 혼란스러운 설명을 작성하여 AI 를 속여 다른 안전한 도구의 설정을 변경하게 합니다 (예: 이메일 주소를 공격자의 주소로 변경). 안전한 도구가 실행되지만, 악의적인 행위자의 뜻대로 작동합니다.
해결책: "보안 검사관" (MCPInspect)
연구원들은 어떤 도구를 설치하기 전에 안전 검사관 역할을 하는 MCPInspect라는 도구를 개발했습니다.
- 기능: 서버를 다운로드하기 전에 MCPInspect 는 다음을 확인합니다.
- 링크가 진짜인가? (소유자가 버린 것인가?)
- 코드가 안전한가? (해커가 들어올 수 있는 구멍이 있는가?)
- 설명이 이상한가? ("이전 규칙 무시"와 같은 교묘한 명령이 포함되어 있는가?)
- 결과: 그들은 67,000 개 이상의 서버를 테스트했습니다. 그 결과:
- 833 개의 서버에 해커가 악용할 수 있는 코드 취약점 (구멍) 이 있었습니다.
- 18 개의 서버는 AI 를 속일 수 있는 의심스러운 설명을 포함하고 있었습니다.
결론
이 논문은 모델 컨텍스트 프로토콜이 AI 를 도구와 연결하는 훌륭한 아이디어이지만, 현재 시스템은 신뢰가 지나치다고 결론지었습니다.
- **상점 (레지스트리)**은 소유권 검증을 제대로 하지 않아 나쁘거나 하이재킹된 도구들이 들어오게 합니다.
- **앱 (호스트)**은 도구가 실제로 존재하는지 또는 명령이 안전한지 확인하지 않고 AI 의 지시를 맹목적으로 따릅니다.
연구원들은 이러한 문제들을 관련 기업들에 보고했지만, 많은 문제들 (예: 검증 부재) 은 시스템이 모두에게 안전해지기 위해 수정되어야 하는 깊은 설계 결함들입니다.
연구 분야의 논문에 파묻히고 계신가요?
연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.