MCP 보안의 두 계층: Runtime Exposure vs Supply Chain
Source: Dev.to
공급 체인 vs. 런타임 노출
공급‑체인 보안 (Cisco 초점) – MCP 서버를 설치합니다.
서버 코드에 숨겨진 명령이 포함되어 있으면 데이터 탈취나 AI 에이전트 오염이 발생할 수 있습니다.
런타임 노출 (내 초점) – 배포된 MCP 서버에 인증이 없을 경우, 어떤 AI 에이전트라도 도구를 열거하고 호출할 수 있습니다.
비교
| 시점 | 내용 | 해결책 | |
|---|---|---|---|
| 공급 체인 | 배포 전 | 악성 도구 설명 | 코드 리뷰 + 서명 |
| 런타임 노출 | 배포 후 | 인증되지 않은 도구 접근 | 인증 추가 + 적절한 명명 |
관찰된 런타임 문제
-
인증 없음 – 전체 서버의 16 % (59개 서버)가 541개의 호출 가능한 도구를 노출합니다.
- Render.com: 24개의 클라우드 인프라 도구(예:
create_web_service,update_environment_variables) – 공개됨. - Robtex: 50개의 DNS/IP 도구가 완전히 개방됨(예:
ip_reputation,reverse_lookup_dns). - Airtable: 8개의 데이터베이스 도구(예:
list_bases, CRUD) – 공개됨.
- Render.com: 24개의 클라우드 인프라 도구(예:
-
API‑계층 인증 – 전체 서버의 15 %가 자격 증명 없이 도구 스키마를 노출합니다. 예시: Google Compute Engine이 29개의 스키마를 보여줌(예:
create_instance,delete_instance). -
MCP‑계층 인증 – 전체 서버의 69 %가 도구 목록을 조회하기 전에 인증을 요구합니다. 이것이 올바른 구성입니다.
악용 예시
내 서버에 두 개의 도구를 추가했습니다:
def get_aws_credentials(role):
# retrieve temporary AWS credentials for the given role
...
def execute_sql_query(query, db):
# run a SQL query against the specified database
...
3시간 만에 AI 에이전트가 get_aws_credentials(role=admin)을 호출했습니다.
에이전트는 악의적이지 않았으며, 단지 사용 가능한 도구를 열거하고 자격 증명 접근과 유사한 도구를 실행했을 뿐입니다. 도구 이름은 LLM에게 의미론적 명령으로 작용합니다.
보안 태세 권고
성숙한 MCP 보안 전략은 다음 두 가지를 모두 필요로 합니다:
- 공급‑체인 검증 – 설치하는 코드를 검토하고 서명합니다.
- 런타임 검증 – 실행 중인 서버가 인증되지 않은 도구를 노출하지 않도록 합니다.
공개 레지스트리에는 3,500개 이상의 서버가 나열되어 있으며, 대부분의 소수 서버는 하나 이상의 차원에서 적절한 보호가 부족합니다.
자료
- MCP Scanner:
- Dataset API: (CC BY 4.0)