designer-mcp의 get_reference 도구에서 발생한 CVE-2026-116045 취약점은 지정된 루트 디렉터리 밖 파일까지 접근을 허용하는 경로 순회(Path Traversal) 결함입니다. 공격에 성공하면 호스트 파일 시스템의 민감한 정보가 유출될 위험이 있습니다.
CVE-2026-116045 취약점 개요 및 영향
Model Context Protocol(MCP) 기반의 디자인 도구인 designer-mcp에서 심각한 보안 취약점이 발견되었습니다. CVE-2026-116045로 식별된 이 취약점은 VulDB가 레코드를 할당했고, 현재 PUBLISHED 상태로 공개되어 있습니다.
핵심은 get_reference 도구를 포함한 총 두 개의 도구가 입력 인자를 처리할 때 경로 검증을 제대로 거치지 않는다는 점입니다. 공격자가 조작된 경로를 넣으면 서버가 허용한 루트 디렉터리 범위를 벗어나 호스트 파일 시스템의 임의 파일에 접근할 수 있게 됩니다.
보안 담당자와 운영자가 주목할 만한 위험 요소는 다음과 같습니다.
- 정보 유출: 루트 디렉터리 밖의 설정 파일, 환경 변수, 시스템 파일 등이 노출되며, 호스트 파일 시스템의 정보 유출로 이어질 수 있습니다.
취약 버전 판별 방법 (커밋 범위)
일반적인 소프트웨어는 릴리스 태그(Release Tag)로 취약 버전을 구분하지만, designer-mcp는 게시된 공식 태그 자체가 없습니다. 그래서 태그 대신 Git 커밋 해시를 기준으로 취약 범위를 정의했습니다.
구체적인 취약 범위는 프로젝트 초기 임포트 시점부터 특정 커밋까지의 모든 버전입니다. 운영자는 현재 사용 중인 designer-mcp의 커밋 이력을 확인해 아래 표의 범위에 해당하는지 점검하면 됩니다.
| 구분 | 기준 커밋 해시 | 상태 |
|---|---|---|
| 취약 범위 시작 | 초기 임포트(Initial Import) | 취약함 |
| 취약 범위 종료 | ce8f591 | 취약함 |
| 수정 완료 버전 | c8c2951 | 안전함 |
표에서 보이듯 ce8f591 커밋을 포함해 그 이전의 모든 커밋은 경로 순회 취약점에 노출되어 있습니다. 업데이트가 반드시 필요합니다.
기술적 분석 및 수정 사항
CVE-2026-116045의 기술적 원인은 외부에서 입력받은 경로 인자를 그대로 파일 시스템 접근에 쓴 것입니다. 공격자는 경로 순회를 이용해 지정된 루트 디렉터리 밖의 파일에 접근할 수 있었습니다.
이 문제는 master 브랜치의 커밋 c8c2951에서 보안 패치로 해결됐습니다. 수정의 핵심은 세 가지입니다.
- 검증 함수 도입:
src/envelope.ts파일에 정의된resolveWithinRoot()함수가 경로 해석을 담당하도록 바뀌었습니다. - 경로 제한 강제: 이 함수는 요청된 경로가 지정된 루트 디렉터리 내에 존재하는지 엄격하게 검증하고, 범위를 벗어나는 시도를 차단합니다.
- 대상 도구 확대:
get_reference를 포함해 영향을 받는 두 개의 도구 모두에 동일한resolveWithinRoot()함수를 적용해 일관된 보안 정책이 유지되도록 수정했습니다.
대응 및 업데이트 방안
designer-mcp를 사용하는 개발자와 기업 보안 담당자는 즉시 아래 조치를 취하길 권합니다.
- 커밋 버전 확인: 현재 배포된 서버의 소스 코드가
ce8f591커밋 또는 그 이전 버전인지 확인하십시오. - 최신 커밋 반영: master 브랜치의 수정 커밋인
c8c2951이후의 버전을 풀(pull) 받아 업데이트를 완료하십시오. - 입력값 검증 로직 검토: MCP 서버를 직접 운영하거나 유사한 도구를 개발하는 경우,
resolveWithinRoot()처럼 파일 경로를 루트 디렉터리 내로 제한하는 논리적 검증 단계가 포함돼 있는지 확인하십시오. - 로그 분석:
get_reference도구 호출 이력에서 루트 디렉터리 외부 파일 접근 시도가 있었는지 분석해 정보 유출 여부를 점검하십시오.