취약점분석 (Blue Team)/Network

[Network] MCP ( Model Context Protocol )

poiri3r 2026. 6. 5. 22:05

이번 포스팅 주제는 MCP입니다.

DDOS 관련 포스팅을 하려고 했었는데, Protocol 관련해서 다루는 김에 MCP도 포스팅 해보기로 했습니다.

여태껏 TCP/UDP 등 4계층 위주로 포스팅을 했었는데 MCP는 7계층 프로토콜 입니다.

 

https://toss.tech/article/vulnerability-analysis-automation-1

 

LLM을 이용한 서비스 취약점 분석 자동화 #1

보안 분석가라면 누구나 한 번쯤 상상했을 ‘해줘’로 취약점 찾기. 그 경험을 공유해 드립니다.

toss.tech

https://toss.tech/article/vulnerability-analysis-automation-2

 

LLM을 이용한 서비스 취약점 분석 자동화 #2

보안 분석가라면 누구나 한 번쯤 상상했을 ‘해줘’로 취약점 찾기. 그 경험을 공유해 드립니다.

toss.tech

https://toss.tech/article/internal-mcp-server

 

API 연동 자동화를 위한 여정: 토스는 왜 사내 MCP 서버를 개발하였는가? with Spring-AI

개발자들에게 익숙해진 불편함을 해결하기 위한 사내의 Swagger MCP 서버를 구축한 이야기를 들려드립니다.

toss.tech

이 3개의 글을 참고했습니다. 포스팅  읽기전에 가볍게 읽어보면 좋을 것 같습니다.

 

MCP는 Model Context Protocol의 약자입니다. 

비교적 최신 LLM이 발전하면서 같이 떠오른 개념으로 AI 모델과 외부 도구를 연결하기 위한 표준 프로토콜입니다.

LLM을 잘 사용하는 분들은 아주 익숙한 개념일 듯 싶습니다.

코덱스를 들여다보면 이미 다양한 MCP 기능들을 지원하고 있습니다.

기존에는 LLM과 특정 도구(소프트웨어)를 연결할 때마다 커넥터를 따로 만들어야 했습니다.

이에 대한 호환성을 해결하기 위해 등장한 프로토콜입니다.

 

정보보안 공부를 해봤다면 반드시 써봤을 IDA에서도 MCP를 제공해주는데,

이걸 쓰냐 안쓰냐로 CTF와 같은 문제 풀이시 AI의 성능이 말이 안되게 달라집니다.

*예전부터 MCP를 개발하는건 꼭 해보고 싶었는데 방학중에 한번 프로젝트로 진행해보겠습니다.

 

잠깐 경험담을 말씀드리면 처음 CTF랑 워게임을 풀때는 MCP가 이렇게 유행하지도 않았고 잘 몰랐었습니다.

문제 파일이 가벼우면 그냥 LLM에게 던지거나, 아니면 ida로 소스코드 일부분을 분석해달라하면서 취약점을 찾았었습니다.

하지만 현재는 IDA에 바이너리를 켜놓고 MCP연결한 뒤, 클로드에게 분석을 요청하면 스스로 분석을 해줍니다.

편리함과 성능에서 압도적인 차이가 납니다.

잠깐 얘기가 샜는데, 다시 MCP에 대해 얘기를 해보면 MCP는 Tool, Resource, Prompt로 크게 분류가 됩니다.

기능 제어 주체 설명  예시
Prompts  사용자 사용자가 선택하여 호출하는 대화형 템플릿 메뉴 옵션, 슬래시 명령어
Resources 애플리케이션 클라이언트가 첨부하고 관리하는 컨텍스트 데이터 파일 내용
Tools LLM 모델 LLM이 작업 수행을 위해 호출하는 함수 API 호출

 

Prompts는 사용자가 제어하는 영역입니다.

보통 LLM에 입력하는 사용자 프롬프트와는 비슷하지만 쪼금 느낌이 다릅니다.

저도 차이점이 잘 인식은 안됐는데, AI에게 작업하는 방식에 대해 미리 만들어둔 요청 템플릿이라고 합니다.

이런식으로 프롬프트를 미리 용도별로 정의를 해두고, 사용자 입력에 따라 저 {}영역만 채워서 LLM에게 물어본다고 보면 됩니다.

단순히 문자열을 {}에 넣는다만은 아니고, 여러 메세지 형태로 구성될수도 있고 Tool 사용 흐름을 유도하는 역할도 합니다.

출처 : https://toss.tech/article/vulnerability-analysis-automation-2

아까 처음에 링크를 달았던 LLM으로 취약점 분석 자동화에서는 다음과 같은 content가 프롬프트의 역할을 합니다

 

2번째는 Resource입니다.

Resource는 별로 어려운 개념은 아닙니다.

그냥 AI에게 제공하는 자료로, 이미 존재하는 정보나 데이터입니다.

바이너리 정보 같은게 해당하겠네요.

 

3번째는 Tool입니다.

이게 MCP의 가장 핵심적인 기능인데, Tools는 AI가 실제로 실행할 수 있는 기능을 가르킵니다.

함수/API 호출에 해당하는 부분입니다.

토스테크 블로그 중 LLM으로 취약점 분석 자동화#2에 대한 부분에 자세하게 나와 있는데,

총 4개의 tools가 있습니다.

AI가 사용할 수 있는 효율적인 도구를 만들어주는 부분입니다.

물론 tools를 설계할때는 주의해야할 점이 있습니다.

제일 중요한 부분은 Tools는 작고 명확하게 만들어야 합니다.

또 허용된 파일/명령만 실행해야 하고, 위험한 작업은 사용자 승인을 받아야 합니다.

잘못된 설계를 보면 run_shell_command라는 tool을 만들었다고 해보겠습니다.

AI가 shell에 대한 제어권을 얻고 실행하는 순간 임의의 쉘 명령을 실행할 수 있고, /etc/passwd나 .env같은 민감 파일을 읽을 수 있고, 또 설정 파일을 맘대로 바꾸거나 실수로 중요한 파일을 삭제하는 경우도 있을 것 입니다.

https://www.boho.or.kr/kr/bbs/view.do?searchCnd=&bbsId=B0000133&searchWrd=&menuNo=205020&pageIndex=1&categoryCode=&nttId=72020

 

KISA 보호나라&KrCERT/CC

KISA 보호나라&KrCERT/CC

www.boho.or.kr:443

위에 링크는 Openclaw관련 취약점을 모아둔 페이지인데요,

한때 아주 핫했던 Openclaw도 MCP를 이용하고, 이 MCP를 이용하는 과정에서 MCP/Tool-calling 구조를 사용하는 에이전트단에서 권한,도구, 실행 취약점이 발생합니다. 이게 전부 MCP에서 발생하는 취약점은 아니지만, 관련된 취약점이 많습니다.

어쨌든 어디던간에 최소 권한 원칙은 지켜져야합니다.

 

MCP에 대해 적어보고 싶고 프로토콜을 설계해보고 싶은 생각이 있어서 작성해보았습니다.

내일은 다시 DDOS와 spoofing관련된 포스팅을 이어서 작성해보겠습니다.

 

읽어주셔서 감사합니다~