SkillDB라는 서비스를 출시하면서 원격 MCP 서버에 OAuth를 붙이는 과정과 그때 직접 밟은 보안 버그 3건을 정리한 글이에요. ① 이미 탈퇴한 사용자의 캐시된 토큰이 검증을 그냥 통과하던 문제, ② 대칭키로 서명한 내부용 토큰을 외부 API로 흘려보내 누구나 토큰을 위조할 수 있던 문제, ③ 클라이언트 등록을 열어둔 데다 동의 화면이 허술해 로그인한 사용자의 인증 코드를 가로챌 수 있던 문제예요. 사내 도구를 원격 MCP로 노출하려는 팀에 그대로 쓸 출시 전 점검표가 돼요.
용어 풀이
- OAuth
- 비밀번호를 넘기지 않고 제3자 앱에 권한만 위임하는 표준 인증 방식
- MCP
- Model Context Protocol. AI 에이전트가 외부 도구·데이터에 접속하는 표준 규약
- PKCE
- 인증 코드 탈취를 막기 위해 OAuth에 더하는 보안 절차
- JWT
- 사용자 정보를 서명된 토큰에 담아 주고받는 형식
- confused deputy
- 권한 있는 중간자가 속아서 공격자의 요청을 대신 수행해 버리는 보안 결함
운영자 인사이트
MCP에 OAuth를 붙이는 건 새로운 보안 문제라기보다 웹 인증의 고전적 함정이 그대로 재현되는 자리예요 — 위조 가능한 내부 토큰을 신뢰 경계 밖으로 넘기지 말고, 프록시 뒤에서 호스트·출처를 읽는 모든 지점(토큰 검증·동의 화면·redirect)을 빠짐없이 감사하세요.
여러 관점으로 보기
- 실무 사례 SkillDB 출시 중 직접 겪은 OAuth 보안 버그 3건을 코드 수준으로 짚어요. SkillDB
- 커뮤니티 반응 해커뉴스 토론은 점수·댓글이 적어 별다른 여론은 모이지 않았어요. Hacker News