이 페이지는 기계 번역이며 원어민 검수를 진행 중입니다. 정확한 내용은 영어 페이지를 참고하세요.
← 블로그
리서치

Listing Swap: MCP 서버 1,075개가 같은 이름으로 다른 곳을 가리키고 있습니다

공식 MCP 레지스트리의 모든 서버를 그 이름으로 처음 게시된 버전과 비교했습니다. 1,075개가 현재 다른 도메인이나 다른 패키지 소유자로 연결되며, 대부분은 설명이 그대로이고, MCP 클라이언트는 다시 묻지 않습니다.

Redthread Research · 2026년 10월 10일 · 7분 분량

에이전트에 MCP 서버를 추가할 때는 이름으로 선택합니다. 이름은 여러분이 읽은 것이고, 동료가 추천한 것이며, 보안팀이 승인한 것입니다. 하지만 에이전트가 실제로 실행하는 코드는 오늘 그 이름이 가리키는 대상입니다.

이름은 그대로인데 그 아래가 바뀌는 상황을 저희는 Listing Swap(등록 항목 바꿔치기) 이라고 부릅니다. 즉, 공식 MCP 레지스트리에 있는 서버의 현재 버전이 같은 이름으로 처음 게시된 버전과 다른 원격 엔드포인트 도메인이나 다른 패키지 소유자로 연결되는 경우입니다.

공식 MCP 레지스트리의 서버 1,075개가 처음 게시되었을 때와 다른 도메인이나 패키지 소유자를 가리키고 있습니다. 이 중 698개는 제목과 설명이 완전히 그대로였습니다.

측정한 내용

2026년 10월 10일, 공식 레지스트리의 모든 항목(서버 41,351개의 버전 142,002개)을 내려받아 각 서버의 현재 버전을 그 이름으로 처음 게시된 버전과 비교했습니다. 바꿔치기는 소유자가 바뀐 경우에만 집계했으며, 서버가 단순히 새 경로, 버전 또는 하위 도메인으로 옮긴 경우는 제외했습니다.

항목서버 수
레지스트리의 서버41,351
버전이 두 개 이상인 서버17,989
등록 항목 바꿔치기1,075 (이력이 있는 서버의 6.0%)
패키지를 이제 다른 소유자가 게시함652
원격 엔드포인트가 다른 도메인으로 이동함377
로컬 패키지와 원격 엔드포인트 사이에서 전환됨47
제목과 설명은 그대로인 채 바꿔치기됨698 (65%)
1Sep 253Oct4Nov1Dec4Jan 2614Feb23Mar18Apr128May41Jun91Jul120Aug368Sep259Oct 1–10
바꿔치기된 버전이 게시된 월별 등록 항목 바꿔치기 건수. 2026년 9월에만 368건, 10월 첫 10일 동안 259건이 있었습니다.

왜 중요한가

이 서버들이 악성이라는 뜻은 아닙니다. 대부분의 바꿔치기는 아마 평범한 일일 것입니다. 프로젝트 이름이 바뀌었거나, 호스팅을 옮겼거나, 패키지를 새 관리자에게 넘긴 경우입니다. 문제는 탈취도 정확히 똑같아 보이며, 지금은 어느 쪽이든 아무도 알아차리지 못한다는 점입니다.

  • 레지스트리는 대상이 아니라 이름을 확인합니다. 네임스페이스에 게시할 수 있다는 것은 그 네임스페이스를 관리한다는 증명입니다. 버전 2가 가리키는 곳과 버전 1이 가리키던 곳을 비교하는 장치는 없습니다.
  • 클라이언트는 이름을 신뢰합니다. 레지스트리에서 설치하면 이름이 최신 버전으로 해석됩니다. 한 번 내린 승인은 엔드포인트나 패키지 소유자가 바뀌어도 다시 요청되지 않습니다.
  • 등록 항목은 그대로처럼 보입니다. 바꿔치기의 3분의 2에서 제목과 설명이 바뀌지 않았기 때문에, 등록 항목을 검토하는 사람에게는 새로운 것이 보이지 않습니다.

이는 Invariant Labs가 2025년에 설명한 도구 정의 “rug pull”보다 한 단계 위에 있는 문제입니다. rug pull은 승인 후에 서버가 도구 설명을 바꾸는 방식입니다. 등록 항목 바꿔치기에서는 서버가 스스로 아무것도 바꿀 필요가 없습니다. 이름이 이제 다른 사람이 운영하는 다른 코드로 연결될 뿐입니다.

무해한 예시

날씨 서버 io.example/weather를 예로 들어 보겠습니다. 이 서버는 @example npm 스코프의 패키지로 게시되어 있습니다. 팀이 이를 승인합니다. 한 달 뒤 같은 이름, 같은 설명으로 버전 1.3이 게시되지만, 패키지는 이제 다른 사람이 운영하는 다른 스코프에서 제공됩니다. 에이전트는 다음 설치 때 1.3을 받습니다. 클라이언트는 코드의 게시자가 바뀌었다는 사실을 전혀 알려주지 않으며, 새 패키지가 파일을 읽거나 새로운 곳으로 데이터를 보낸다면 이전 패키지에 부여한 권한으로 그렇게 합니다.

조사 방법. 공개 레지스트리 데이터만 읽었습니다. 아무것도 설치하거나 실행하지 않았고, 어떤 서버에도 접속하지 않았습니다. 서버 목록이 아니라 집계 수치만 공개합니다. 이 결과가 보여주는 것은 특정 게시자가 아니라 격차의 규모입니다. 이 글의 모든 수치를 재현하는 스크립트는 다음에 공개되어 있습니다: github.com/bl014h/atpp. 스캔 및 공개 정책은 다음에서 확인할 수 있습니다: trust.redthreadsec.com/security.

대응 방법

MCP 서버를 설치한다면

  • 버전을 고정하고, 레지스트리가 지원한다면 패키지 해시나 이미지 다이제스트도 고정하세요.
  • 엔드포인트 도메인이나 패키지 소유자가 바뀌면 새 서버로 간주하고 다시 검토하세요.
  • 설치 전에 확인하세요. Redthread 커넥터를 연결한 ChatGPT나 Claude에 “이 MCP 서버가 Redthread 스캔을 통과했는지 확인해 줘”라고 묻거나, 다음 오픈소스 도구로 배지를 검증하세요: atpp verify.
  • 이미 설치한 것을 확인하세요: python3 atpp.py check-config 명령이 내 컴퓨터에서 Claude, Cursor, VS Code 설정을 읽고 등록 항목 바꿔치기가 일어난 서버를 표시합니다 (어떻게).

MCP 서버를 게시한다면

  • 호스팅을 옮기거나 패키지를 넘길 때는 등록 항목과 저장소에 그 사실을 밝혀, 사용자가 새 대상을 신뢰할 근거를 갖도록 하세요.
  • 패키지 해시를 게시하고 이미지는 다이제스트로 고정하세요. 서명된 아티팩트가 있으면 사용자가 비교할 대상이 생깁니다.

레지스트리나 클라이언트를 운영한다면

  • 이름 옆에 대상을 표시하고, 버전 간에 무엇이 바뀌었는지 보여주세요.
  • 서버의 엔드포인트 도메인이나 패키지 소유자가 바뀌면 다시 확인을 요청하세요. 앱이 새 권한을 원할 때 휴대폰이 다시 묻는 것과 같은 방식입니다.

이 검사는 무료입니다

오늘부터 Redthread의 일일 레지스트리 스캔에 target-stable 검사가 포함됩니다. 이제 각 서버의 서명된 스캔 결과와 배지에 처음 게시된 이후 등록 항목이 바꿔치기되었는지가 표시되며, 집계 수치는 레지스트리 스캔 페이지에서 매일 업데이트됩니다. 같은 검사를 Redthread 커넥터를 통해 ChatGPT와 Claude 안에서도 사용할 수 있습니다.

팀에서 서드파티 MCP 서버를 설치하는 에이전트를 운영하고 있고, 승인된 서버가 바꿔치기되면 알려주는 허용 목록이 필요하다면 문의하세요.

계속 읽기

블로그의 다른 글.

에이전트 보안
차단당한 에이전트가 다른 길을 찾았다: Services Australia 사건이 주는 교훈
한 AI 연구 에이전트가 호주 정부 서비스에서 접근 차단에 부딪혔지만, 무언가 통할 때까지 멈추지 않았습니다. 실제로 무엇이 실패했는지, 그리고 저희가 이를 어떻게 설계에 반영했는지 살펴봅니다.
플랫폼
에이전트 없이, 그래프 우선으로: 왜 지도부터 그리는가, 그리고 시간과 비용은 어디로 가는가
모든 곳에 에이전트를 설치하는 일과 평면적인 발견 사항 목록을 분류하는 일은 보안 도구의 가장 큰 숨은 비용 두 가지입니다. 에이전트 없는 그래프가 이를 어떻게 없애는지 설명합니다.
모의 침투 테스트
AI 모의 침투 테스트의 비용 — 그리고 대체하지 못하는 것
수동 모의 침투 테스트는 크고 드문 구매입니다. 자율 에이전트는 이를 작고 잦은 구매로 바꿉니다. 사람이 여전히 더 잘하는 부분까지 포함한 정직한 비교입니다.