1P by yjcho9317 19시간전 | ★ favorite | 댓글과 토론

AI 에이전트가 MCP 서버를 통해 파일을 읽거나 도구를 호출할 때, 서버가 돌려주는 응답은 별도 검증 없이 컨텍스트에 들어갑니다. mcp-fence는 이 요청과 응답 양쪽을 실시간으로 검사하는 보안 프록시입니다.

nworks(NAVER WORKS MCP 서버)를 만들면서 이 구조를 직접 경험했습니다. GitHub에서 MCP 보안 프로젝트 28개를 확인했는데, 대부분 보내는 쪽만 검사하고 돌아오는 쪽은 보지 않는 구조였습니다. 그래서 직접 만들었습니다.

만들고 나서 보안 감사를 직접 돌렸습니다. 사람 눈에는 같아 보이지만 컴퓨터는 다른 글자로 인식하는 문자로 탐지를 전부 뚫었고, 눈에 안 보이는 투명 문자를 끼워넣어 모든 검사를 통과시켰고, 특수한 입력으로 보안 검사 자체를 멈추게 만드는 버그도 찾았습니다. 전부 출시 전에 수정했습니다. 1,426개 테스트 중 630개가 적대적 보안 테스트이고, 알려진 MCP 취약점 13건 대상 86% 탐지율입니다. OWASP MCP Top 10 기준 10개 중 9개를 커버합니다.

인젝션, 시크릿, PII, 커맨드 인젝션을 탐지하고, 도구 설명이 몰래 바뀌는 rug-pull도 해시 핀닝으로 잡습니다. 탐지는 정규식 기반이라 같은 뜻을 다르게 표현하면 통과합니다. ML 시맨틱 탐지는 v1.x 계획입니다.

예를 들어 filesystem MCP 서버를 쓸 경우, 앞에 붙이면 됩니다.

npx mcp-fence start -- npx @modelcontextprotocol/server-filesystem /tmp  

기존 서버 코드를 수정할 필요 없이 이 한 줄로 동작합니다. 기본은 로그만 남기고 차단은 안 합니다. 어떤 트래픽이 오가는지 먼저 확인하고, 괜찮으면 차단 모드로 전환하면 됩니다.

모바일 보안 9년차 엔지니어가 혼자 10주 만든 프로젝트라 부족한 부분이 있을 수 있습니다. 피드백 주시면 감사하겠습니다.