GN⁺ 2025-04-07 | parent | ★ favorite | on: MCP의 "S"는 보안을 의미합니다(elenacross7.medium.com)
Hacker News 의견
  • 이 글은 며칠 전 Invariant Labs에서 발표한 보안 노트에서 설명한 공격 시나리오(도구 중독, 그림자화, MCP 러그 풀)를 강조하고 인용함. 나는 해당 블로그 글의 저자임

    • 많은 사람들이 의심하는 것과 달리, MCP 스타일의 LLM 도구 호출의 보안 문제는 서로 다른 MCP 서버 구현을 격리하는 데 있지 않음
    • 로컬에서 실행되는 MCP 서버 구현은 설치에 사용하는 패키지 관리자가 검증해야 함 (원격 MCP 서버는 실제로 검증하기 더 어려움)
    • 문제는 MCP를 에이전트 시스템에서 사용할 때 발생하는 간접 프롬프트 주입의 특별한 형태임
    • 에이전트가 동일한 컨텍스트에서 모든 설치된 MCP 서버 사양을 포함하므로, 신뢰할 수 없는 MCP 서버가 다른 MCP 서버(예: 민감한 데이터베이스에 접근할 수 있는 서버)의 동작을 쉽게 조작할 수 있음. 이를 도구 그림자화라고 부름
    • 또한, MCP의 동적 특성 때문에 MCP 서버는 제공하는 도구 세트를 특정 사용자에게만 변경할 수 있음. 이는 MCP 서버가 언제든지 악의적으로 변할 수 있음을 의미함
    • 현재 MCP 클라이언트인 Claude와 Cursor는 이러한 변경 사항을 알리지 않으며, 이는 에이전트와 사용자를 취약하게 만듦
    • 더 관심 있는 사람은 [1]에서 더 자세한 블로그 글을 확인해 보길 바람. 우리는 에이전트 보안에 대해 연구와 Invariant에서 오랫동안 작업해 왔음
    • 또한, 인기 있는 WhatsApp MCP 서버에 대한 도구 중독 공격을 포함하여 모두가 실험해 볼 수 있는 코드 스니펫을 공개함 [2]
  • 이러한 공격은 대부분 공기 잠금 장치의 잘못된 측면에 있는 또 다른 예시임. 이들은 권한 경계를 넘지 않으며, 이미 할 수 있는 일을 이상한 방법으로 수행한 것임

    • MCP 서버는 사용자 수준에서 코드를 실행하며, AI를 속여 SSH 키를 읽도록 할 필요가 없음. 그냥 키를 읽을 수 있음
    • 나머지는 기본적으로 다른 개발자 도구/생태계(NPM 또는 VS Code Extensions)에도 제기할 수 있는 동일한 불만임
  • 다음과 같은 더 나은 설계를 구상하는 도전 과제:

      1. 사람들이 "S는 보안을 의미함"이라는 기사를 쓰지 않도록 할 수 있는 적절한 보안 표준을 갖추고
      1. 프로그램이 현재 가장 유용한 MCP가 제공하는 것과 동일한 기능 세트를 제공할 수 있도록 하며, 자동 기능을 수동 사용자 확인이 필요한 것으로 바꾸지 않고, 일반적으로 전체 아이디어의 목적을 무력화하지 않으며
      1. 모든 것을 기업의 게이트키퍼가 있는 독점 마켓플레이스에 잠그지 않음
    • 제안을 보고 싶음, 왜냐하면 지금까지 본 것은 일반적이고 구체적이지 않은 "MCP는 안전하지 않음!!!111"이라는 것뿐임. 보안과 유용성이 상반되는 힘이라는 것을 사람들이 잊었을 때 특히 쉽지 않음
  • 좋은 기사지만 이 모든 것이 AI 생성된 것인지 궁금함

    • 프로필 사진이 StableDiffusion으로 생성된 것 같고, 계정이 오늘 생성되었으며 이전 기사 없음
    • 또한 Elena Cross에 대한 다른 참조를 찾을 수 없었음
  • O는 관찰 가능성을 의미함. 이번 주에 MCP 서버를 탐색하고 작성하는 데 깊이 빠져 있었음

    • 대부분의 구현, 내 장난감 구현을 포함하여, 감사나 메트릭이 없음. Claude는 MCP 서버의 로그 출력을 저장하지만, 이는 디버깅을 위한 것이지 DevOps/SecOps를 위한 것이 아님
    • 문화적으로, OP가 설명한 문제는 소프트 기술 사람들(머글)에게 큰 문제임. 이와 관련된 서브레딧에서 사람들은 자신의 기계에서 MCP CLI 프로그램을 실행하며 즐거운 시간을 보내고 있음
    • OP의 보안 댓글은 개발자에게는 명백하지만, 이러한 사용자는 얼마나 위험한지에 대한 관점이 없음
    • 사람들은 Docker에 대해 배우고 있으며, Claude는 예제에 그 사용법을 포함하고 있음. 그러나 대부분의 사람들은 그냥 블롭을 다운로드하고 실행함. 사람들은 MCP 서버를 무작정 코딩하고 실행하고 있음
    • MCP가 확산됨에 따라 프레임워크와 도구가 보안, 관찰 가능성 등을 지원하기 위해 성장할 것임. 이는 90년대 중반 웹을 구축하는 것과 같음
    • OP와 관련 없지만, 이를 구축하는 동안 Claude Desktop에 무언가를 입력하고 VSCode에서 중단점을 트리거하는 것이 매우 흥미로웠음
  • 맞음. 나도 같은 생각이었음, 비록 내가 메모를 발표할 때 깊이 들어가지 않았지만

  • 사용 중인 소프트웨어가 악의적이지 않고 안전하게 구현되었을 때도, 원하는 방식으로 사용되는지 어떻게 확인할 수 있을까?

    • 로컬 파일 시스템을 수정할 수 있는 MCP 서버와 클라우드 저장소의 객체를 수정하는 MCP 서버가 있다고 가정해 보자. 사용자가 LLM 에이전트가 올바른 선택을 하도록 어떻게 보장할 수 있을까?
    • 많은 옵션을 제공하고 모든 행동을 감시하지 않으려 하지만, 그렇게 하면 더 많은 문제가 발생할 가능성이 있음
  • Equixly가 테스트한 MCP 서버 구현의 43% 이상이 안전하지 않은 셸 호출을 가졌음

    • 어떻게 매번 이런 함정에 빠질 수 있는지
  • MCP가 무엇인지 궁금함. 여러 번 문서를 읽으려 했지만 해결하는 문제가 무엇인지 이해할 수 없었음. 주로 AI 에이전트에 특별한 점이 무엇인지, 수십 년 동안 존재해 온 결정론적 에이전트에 적용되지 않는 점이 무엇인지

  • 나는 MCP의 전체 목적이 Anthropic이 프롬프트와 출력을 엿듣고 훈련 데이터를 최대화하는 것이라고 가정했음. 이것이 모든 AI 모델을 위한 미들웨어라는 것을 처음 알게 되었음