티스토리 뷰

📌 3줄 요약
1. MCP 서버는 AI가 내 파일·계정·API를 내 권한으로 쓰게 해주는 통로라서, 서버 하나가 뚫리면 AI가 닿는 모든 곳이 위험해집니다.
2. 2025~2026년 사이 공식 도구와 유명 서버에서도 원격 코드 실행·인증 우회 취약점이 이어졌고, 2026년 9월에는 MCP 관련 취약점이 처음으로 미국 CISA의 "실제 악용 취약점(KEV)" 목록에 올랐습니다.
3. 개인 개발자는 출처 확인 → 버전 고정 → 노출 차단 → 비밀값 분리 → 승인 유지 5단계만 지켜도 흔한 사고 대부분을 막을 수 있습니다.
GitHub에서 괜찮아 보이는 MCP 서버를 찾고, README에 있는 설정 몇 줄을 복사해 붙여넣고, AI가 "이 도구를 써도 될까요?"라고 물을 때마다 습관처럼 허용을 누르고 계시진 않나요?
설정 파일에 API 키를 그대로 적어둔 채 그 파일을 저장소에 커밋한 적은 없으신가요? 이 글은 Claude Code, Cursor 같은 AI 코딩 도구에 MCP 서버를 붙여 쓰는 개인 개발자를 기준으로, 지금 내 환경을 10분 안에 점검하는 방법을 정리합니다.
🧭 MCP 서버는 어떻게 동작하나
MCP(Model Context Protocol)는 Anthropic이 2024년 말 공개한 오픈 표준으로, AI 앱이 외부 도구와 데이터에 접속하는 방식을 통일한 규격입니다. 구조는 단순합니다. AI 앱 안에 들어 있는 MCP 클라이언트가 MCP 서버에 "어떤 도구가 있니?"라고 묻고, 서버는 도구 목록과 각 도구의 설명을 돌려줍니다. 이후 AI가 필요하다고 판단하면 도구를 호출하고, 서버가 실제 작업을 실행합니다.

보안 관점에서 핵심은 두 가지입니다. 첫째, MCP 서버는 내 계정 권한을 위임받아 파일을 읽고, 저장소에 쓰고, 외부 API를 호출합니다. 둘째, AI는 서버가 보내준 도구 설명을 믿을 만한 맥락으로 받아들입니다. OWASP도 MCP 서버가 일반 API와 달리 위임된 사용자 권한, 동적인 도구 구성, 연쇄 호출 구조를 갖기 때문에 취약점 하나의 파급력이 커진다고 설명합니다.
| 구분 | 내용 |
|---|---|
| stdio 방식 | MCP 서버가 내 PC에서 하위 프로세스로 실행되고 표준 입출력으로 통신합니다. 네트워크에 열리지 않지만, 서버 코드는 내 권한으로 그대로 실행됩니다. |
| HTTP 방식 | 서버가 포트를 열고 HTTP로 통신합니다(Streamable HTTP 등). 원격 서버를 쓸 수 있지만, 인증과 바인딩 설정이 잘못되면 다른 사람도 접속할 수 있습니다. |
🔐 MCP 서버가 위험한 이유
MCP 서버 위험은 "서버가 악의적인 경우"와 "서버가 정상이지만 허술한 경우"로 나눠 보면 이해가 쉽습니다. 개인 개발자가 특히 자주 마주치는 유형만 추리면 아래와 같습니다.
| 위험 유형 | 무슨 일이 생기나 | 실제 사례 |
|---|---|---|
| 도구 포이즈닝 | 도구 설명에 사용자 화면에는 잘 보이지 않는 지시를 숨겨, AI가 설정 파일이나 키를 몰래 읽어 보내게 만듭니다. | 2025년 4월 Invariant Labs가 공격 기법으로 처음 정리 |
| 러그 풀 | 처음엔 멀쩡한 도구 설명으로 승인을 받은 뒤, 업데이트 때 설명이나 동작을 악의적으로 바꿉니다. | Invariant Labs가 같은 연구에서 함께 경고 |
| 악성 패키지 | 기능을 그럴듯하게 소개하지만 실행되면 환경변수 속 비밀값을 외부로 보냅니다. | 2026년 npm의 한 MCP 패키지가 지갑 개인키 환경변수를 외부로 전송한 사례 보고 |
| 인증 누락 | 인증 없이 열린 엔드포인트로 누구나 도구를 호출하거나 명령을 실행합니다. | MCP Inspector 0.14.1 미만 원격 코드 실행(CVE-2025-49596), LiteLLM MCP 인증 우회(CVE-2026-59822) |
| 입력 미검증 | AI가 넘긴 URL·경로·명령을 그대로 써서 SSRF, 명령 실행, 경로 이탈이 생깁니다. | Azure MCP 서버 SSRF(CVE-2026-26118, CVSS 8.8) |

위 흐름에서 눈여겨볼 점은 공격자가 내 PC에 직접 침입하지 않는다는 것입니다. AI 에이전트가 내 권한으로 대신 실행해 주기 때문에, 로그에도 "내가 한 작업"처럼 남습니다.
이 위험은 이론에만 머물지 않습니다. 2025년 6월 공식 디버깅 도구인 MCP Inspector에서 인증 없이 명령을 실행할 수 있는 취약점이 공개됐고, 2026년 3월에는 Microsoft가 Azure MCP 서버의 SSRF 취약점을 정기 보안 업데이트로 패치했습니다. 2026년 9월 2일에는 LiteLLM의 MCP 엔드포인트에서 임의의 Bearer 토큰만으로 인증을 통과할 수 있는 취약점이 미국 CISA의 KEV(실제 악용이 확인된 취약점) 목록에 추가됐습니다.

🔐 보안 포인트
2026년 9월 Hush Security가 공개 GitHub에 있는 MCP 설정 파일 약 8만 2천 개를 분석한 결과, 자격 증명 칸의 12%에 비밀값이 그대로 적혀 있었습니다. 그중 55%는 형식이 특이해서 일반적인 비밀값 스캐너로는 잡기 어려운 값이었습니다.
⚠️ 개발자가 자주 하는 착각 3가지
"내 PC에서만 도니까 괜찮다"
HTTP 방식 MCP 서버가 127.0.0.1이 아니라 0.0.0.0(모든 네트워크 인터페이스)에 바인딩돼 있으면, 같은 카페·회사 와이파이에 있는 다른 기기도 접속할 수 있습니다. Backslash Security가 7,000개가 넘는 MCP 서버를 조사했을 때 수백 개가 이 상태였고, 일부는 임의 명령 실행 문제까지 함께 갖고 있었습니다. 연구진은 이 설정 문제를 "NeighborJack"이라고 불렀습니다.

"스캐너를 통과했으니 안전하다"
Pluto Security가 실제로 동작하는 악성 MCP 서버 2개를 널리 쓰이는 공개 스캐너 5종으로 검사해 보니, 다섯 스캐너 모두 적어도 한 가지 설정에서 "문제 없음" 결과를 냈습니다. 겉보기엔 평범한 날씨 도구였고, 자격 증명 탈취와 명령 실행은 도구 설명이 아니라 실행 코드 쪽에 숨어 있었습니다. 스캐너 결과는 출발점일 뿐, 승인 도장이 아닙니다.
"한 번 승인했으면 끝이다"
러그 풀 공격은 승인 이후의 업데이트를 노립니다. 설정에 버전을 고정하지 않고 항상 최신 버전을 내려받게 해두면, 내가 검토한 적 없는 코드가 다음 실행 때 조용히 들어옵니다. 공식 도구라고 예외도 아닙니다. 위 타임라인의 MCP Inspector와 Azure MCP 서버는 모두 공식 배포판이었습니다.
🛠 MCP 서버 보안 점검 5단계

1단계. 출처와 도구 설명 확인
설치 전에 퍼블리셔가 해당 서비스의 공식 조직인지, 최근까지 유지보수되는지, 보안 이슈에 응답하는지 확인합니다. 그리고 README가 아니라 서버가 실제로 내보내는 도구 이름과 설명을 직접 읽어보세요. 기능과 상관없는 파일 경로, "사용자에게 말하지 말 것" 같은 문장이 있으면 설치하지 않습니다.
2단계. 버전 고정
패키지 실행 명령에 버전을 명시해 두면, 검토하지 않은 업데이트가 자동으로 들어오는 것을 막을 수 있습니다. 업데이트할 때는 변경 내역과 도구 설명이 바뀌었는지 확인한 뒤 버전을 올립니다.
{
"mcpServers": {
"example": {
"command": "npx",
"args": ["-y", "example-mcp-server@1.4.2"],
"env": { "EXAMPLE_TOKEN": "${EXAMPLE_TOKEN}" }
}
}
}
위 예시의 패키지 이름과 버전은 설명용 가상의 값입니다. 환경변수를 참조하는 문법은 클라이언트마다 다르니, 사용 중인 도구의 공식 문서를 확인하세요.
3단계. 네트워크 노출 차단
가능하면 stdio 방식을 우선 쓰고, HTTP 방식이라면 127.0.0.1에만 바인딩하고 인증을 켭니다. 지금 내 PC에서 어떤 포트가 어떤 주소로 열려 있는지는 아래 명령으로 확인할 수 있습니다. 로컬 주소가 0.0.0.0, *, :: 로 보이면 모든 인터페이스에 열린 상태입니다.
# macOS / Linux
lsof -nP -iTCP -sTCP:LISTEN
# Windows (PowerShell)
Get-NetTCPConnection -State Listen
MCP Inspector 같은 개발용 도구는 최신 버전으로 유지하고, 다 쓰면 바로 종료하세요. LiteLLM처럼 MCP 게이트웨이를 직접 띄워 쓴다면 1.84.0 이상인지 확인하고 기본 마스터 키를 바꿉니다.
4단계. 비밀값 분리와 최소 권한
설정 파일에 키를 직접 적지 말고 환경변수나 비밀값 관리 도구로 넘깁니다. 프로젝트 폴더의 MCP 설정 파일은 저장소에 커밋되기 쉬우니 커밋 전에 한 번 더 확인하세요. 토큰은 필요한 저장소·범위만 허용하고 만료 기간을 짧게 잡습니다. 파일 시스템 서버라면 접근 가능한 폴더를 작업 폴더로 한정합니다.
🚫 하지 말 것
이미 커밋한 키를 파일에서 지우기만 하고 끝내지 마세요. Git 기록에 남아 있으므로 해당 키는 즉시 폐기하고 새로 발급해야 합니다.
5단계. 승인 유지와 정기 정리
파일 쓰기·삭제, 외부 전송, 명령 실행처럼 되돌리기 어려운 도구는 "항상 허용"을 끄고 매번 확인합니다. 한 달에 한 번은 설치된 MCP 서버 목록을 열어 안 쓰는 서버를 지우고, 남은 서버의 버전을 점검하세요.
💡 팁
회사 업무에 쓴다면 위 5단계에 더해 아래 항목을 보안 담당자와 함께 정해두면 좋습니다.
| 항목 | 내용 |
|---|---|
| 승인 목록 | 검토를 통과한 MCP 서버만 쓰도록 허용 목록을 운영합니다. |
| 게이트웨이 | MCP 호출을 중앙 프록시로 모아 인증, 로그, 정책을 한곳에서 관리합니다. |
| 코드 점검 | MCP 서버 코드와 의존성을 SAST·SCA 파이프라인에 포함합니다. |
| 격리 실행 | MCP 서버를 컨테이너 등 격리된 환경에서 최소 권한 계정으로 실행합니다. |
| 기준 문서 | OWASP MCP 보안 가이드를 내부 점검 기준의 출발점으로 삼습니다. |
🎉 정리
MCP 서버는 AI에게 손발을 달아주는 만큼, 그 손발이 닿는 범위가 곧 위험 범위입니다. 공식 도구에서도 취약점이 나오고, 스캐너도 완벽하지 않습니다. 결국 개인 개발자가 할 수 있는 가장 확실한 방법은 믿을 만한 서버만, 검토한 버전으로, 나만 접속하게, 최소한의 권한으로, 확인하면서 쓰는 것입니다.
✅ 내 환경 점검 체크리스트
| 점검 | 확인할 내용 |
|---|---|
| 출처 | 설치한 MCP 서버의 퍼블리셔와 유지보수 상태를 확인했다 |
| 도구 설명 | 도구 설명에 기능과 무관한 지시나 경로가 없다 |
| 버전 | 설정에 버전을 고정했고 @latest 자동 실행을 쓰지 않는다 |
| 바인딩 | HTTP 서버가 127.0.0.1에만 열려 있고 인증이 켜져 있다 |
| 개발 도구 | MCP Inspector 등 개발 도구가 최신이고 쓰지 않을 땐 꺼져 있다 |
| 비밀값 | 설정 파일에 키가 직접 적혀 있지 않고 저장소에도 커밋되지 않았다 |
| 권한 | 토큰 범위와 파일 접근 폴더를 필요한 만큼만 열었다 |
| 승인 | 쓰기·삭제·외부 전송 도구의 자동 승인을 꺼두었다 |
💬 자주 묻는 질문
Q. 공식 MCP 서버만 쓰면 안전한가요?
A. 더 안전한 편이지만 충분하지는 않습니다. MCP Inspector, Azure MCP 서버처럼 공식 배포판에서도 심각한 취약점이 나왔습니다. 공식 서버도 버전을 고정하고 보안 공지를 챙겨 보세요.
Q. stdio 방식이면 걱정 안 해도 되나요?
A. 네트워크 노출 위험은 크게 줄지만, 서버 코드가 내 권한으로 실행된다는 점은 같습니다. 악성 서버나 도구 포이즈닝은 stdio에서도 그대로 통하므로 출처 확인과 승인 유지는 여전히 필요합니다.
Q. 설정 파일에 키를 적어둔 채 커밋했어요.
A. 파일에서 지우는 것만으로는 부족합니다. Git 기록에 남아 있으니 해당 키를 즉시 폐기하고 재발급한 뒤, 새 키는 환경변수나 비밀값 관리 도구로 넘기세요.
Q. MCP 보안 스캐너를 써야 하나요?
A. 알려진 문제를 빠르게 걸러내는 데는 도움이 됩니다. 다만 스캐너를 모두 통과한 악성 서버 사례가 있으니, 결과를 참고 자료로만 쓰고 위 5단계를 함께 지키세요.
🔗 참고 자료
· OWASP GenAI Security Project — A Practical Guide for Secure MCP Server Development (2026.02)
· OWASP GenAI Security Project — Securely Using Third-Party MCP Servers 치트시트
· Invariant Labs — MCP Security Notification: Tool Poisoning Attacks
· AhnLab ASEC — MCP Inspector 보안 업데이트 권고 (CVE-2025-49596)
· SentinelOne — CVE-2026-26118 Azure MCP Server SSRF
· CVE-2026-59822 LiteLLM MCP 인증 우회 (CISA KEV 정보)
· CSO Online — Misconfigured MCP servers expose AI agent systems to compromise (NeighborJack)
· Help Net Security — Hush Security MCP 설정 파일 자격 증명 노출 보고서 (2026.09)
'정보보안 > Infra' 카테고리의 다른 글
| 서버 보안 패치 관리 방법, 리눅스·윈도우 한 번에 정리 2026 (0) | 2026.10.20 |
|---|---|
| 서버 지원 종료(EoS) 점검, 교체 계획만으로는 양호가 아닌 이유 (0) | 2026.10.20 |
| 비밀번호 관리정책 점검, 실수하기 쉬운 리눅스·윈도우 설정 5가지 (0) | 2026.10.16 |
| 계정 잠금 임계값 점검, 실수하기 쉬운 faillock 설정 5가지 (0) | 2026.10.16 |
| 비밀번호 복잡도 점검, 정책 걸어도 취약 나오는 이유와 조치 방법 (0) | 2026.10.16 |
- Total
- Today
- Yesterday
- KISA
- 보안뉴스
- 펜테스트
- 시큐어코딩
- 해킹예방
- DevSecOps
- 전자금융기반시설
- 금취분평
- 취약점 분석평가
- 자율침투테스트
- 해킹주의
- AI보안
- 개발자보안
- 개인정보유출
- 전자금융기반시설취약점분석평가
- 취약점
- 정보보안
- PentestGPT
- 악성코드
- AI모의해킹
- 랜섬웨어
- 사이버보안
- 개인정보보호
- 선박사이버보안
- mcp 서버
- 보안상식
- 공급망공격
- 오픈소스보안
- sast
- cve
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 |
