MCP 프록시 extensible-mcp의 위협 모델 문단이 '삭제를 진행하기 전에 confirmation: CONFIRM_DELETE를 요구하는 식으로 인자 값을 정책에 쓰고 싶어지지만, 검토한 뒤 버렸다'고 적어 뒀어요 — 파일을 지우도록 프롬프트 인젝션에 넘어가는 모델이라면 확인 문자열을 채우는 것도 똑같이 넘어가서, 실수는 막아도 공격자는 못 막는다는 이유예요. OWASP의 MCP 보안 점검 문서도 '도구 입력은 전부 검증하라, 악의적 맥락에 영향받은 모델 출력에서 나온 값이다'와 '확인 화면이 모델이 지어낸 응답으로 우회되지 않게 하라'를 나란히 적어 뒀고, MCP 공식 명세는 확인 창을 서버가 받는 인자가 아니라 애플리케이션이 띄우는 것으로 두면서 서버가 사용자에게 되물어야 할 때 쓸 별도 절차(elicitation)를 따로 뒀어요. 다만 이 문구가 실린 저장소는 별이 4개고 코드 커밋이 4월 30일에서 멈춰 있어서, 값어치가 있는 건 도구가 아니라 그 위협 모델 문단이에요.
- MCP
- 에이전트를 외부 도구·데이터에 붙이는 연결 규약
- 프롬프트 인젝션
- 모델이 읽는 글에 지시를 심어 모델을 원래 목적과 다르게 움직이게 하는 공격
- 위협 모델
- 무엇을 막고 무엇은 못 막는지 미리 적어 두는 보안 설계 문서
- OWASP
- 소프트웨어 보안 지침을 공개하는 비영리 단체. Open Worldwide Application Security Project
사내 MCP 서버에 확인 인자를 달아 뒀다면 그건 실수를 막는 장치일 뿐이라고 다시 적어 두고, 진짜 관문은 모델이 값을 채울 수 없는 자리(클라이언트 권한 규칙이나 사용자에게 직접 되묻는 절차)로 옮기세요. 인자에 남은 'CONFIRM_DELETE' 값을 사람이 승인했다는 증적으로 감사 기록에 쓰고 있었다면, 그건 승인 증거가 아니에요.
- 보안 점검 문서가 같은 것을 짚어요 OWASP는 도구 입력을 '악의적 맥락에 영향받은 모델 출력에서 나온 값'으로 보고 전부 검증하라면서, 확인 화면이 모델이 지어낸 응답으로 우회되지 않게 하라고 따로 적어 뒀어요. OWASP Cheat Sheet Series
- 공식 명세가 확인 창을 두는 자리 명세는 도구 호출을 거부할 사람이 늘 있어야 한다며 확인 창을 띄우는 주체를 서버가 아니라 애플리케이션으로 두고, 도구에 붙은 설명값은 믿을 만한 서버에서 온 게 아니면 신뢰하지 말라고 못 박아요. Model Context Protocol
- 서버가 사용자에게 되묻는 정식 경로 서버가 사용자 판단이 필요할 때 쓰라고 규약이 따로 둔 자리로, 승낙·거절·취소를 클라이언트 화면에서 사용자가 직접 고르고, 명세는 사용자가 스스로 주장하는 신원은 위조될 수 있으니 그대로 믿지 말라고도 적어 뒀어요. Model Context Protocol