X, Vercel, Cursor, Discord 등 수백 개 기업을 공급망 공격으로 침투한 방법

1 month ago 11

  • 16살 고등학생이 Mintlify 플랫폼의 취약점을 이용해 X, Vercel, Cursor, Discord 등 주요 기업의 문서 사이트에서 교차 사이트 스크립팅(XSS) 공격이 가능했던 사례를 정리해 공개함. 이 취약점을 통해 버그바운티로 11,000 달러 수령
  • Mintlify의 내부 경로 /_mintlify/static/[subdomain]/[...route]가 도메인 검증 없이 외부 파일을 불러올 수 있는 구조로 되어 있었음
  • 공격자는 SVG 파일에 자바스크립트를 삽입해 Discord 등 주요 서비스 도메인에서 악성 스크립트를 실행할 수 있었음
  • 취약점은 Mintlify를 사용하는 거의 모든 고객사에 영향을 미쳤으며, 단 한 번의 링크 클릭으로 계정 탈취가 가능했음
  • 이 사건은 공급망 보안의 단일 취약점이 대규모 피해로 이어질 수 있음을 보여주는 사례로 평가됨

Discord에서의 발견

  • 2025년 11월 Discord가 AI 기반 문서 플랫폼 Mintlify로 전환하면서 취약점 탐색이 시작됨
    • 기존 커스텀 플랫폼에서 Mintlify로 이전한 직후, 연구자는 새 문서 시스템의 구조를 분석
  • Discord의 문서 도메인(discord.mintlify.app)이 Mintlify의 내부 경로(/_mintlify/*)를 그대로 노출하고 있었음
    • 이 경로는 인증 등 주요 기능을 위해 필수적으로 접근 가능해야 했음

Mintlify 플랫폼 구조

  • Mintlify는 Markdown 기반 문서 작성을 지원하며, 이를 자동으로 웹 문서로 변환하는 서비스
  • 모든 문서 사이트는 *.mintlify.app 하위 도메인 또는 커스텀 도메인에서 운영
  • 내부적으로 /_mintlify/api/user, /_mintlify/markdown/, /_mintlify/static/ 등의 엔드포인트를 사용

취약점 탐색 과정

  • /_mintlify/_markdown/_sites/[subdomain]/[...route] 엔드포인트가 도메인 검증 없이 다른 문서의 파일을 반환함을 발견
    • 단, 이 경로는 렌더링되지 않은 Markdown 텍스트만 반환해 코드 실행은 불가능했음
  • 이후 Mintlify CLI 패키지를 분석해 /_mintlify/static/[subdomain]/[...route] 엔드포인트를 추가로 발견
    • 이 경로는 정적 파일을 반환하며, 파일 확장자 화이트리스트를 적용
    • HTML·JS 파일은 차단되었으나 SVG 파일은 허용되어 있었음

공격 실현

  • 공격자는 자바스크립트가 삽입된 SVG 파일을 자신의 Mintlify 문서에 업로드
  • Discord 도메인에서 해당 파일을 호출(https://discord.com/_mintlify/_static/.../lmao.svg)하면 스크립트가 실행
  • 이를 통해 Discord뿐 아니라 Mintlify를 사용하는 모든 기업의 문서 도메인에서 XSS 실행 가능

협업 및 보고

  • 연구자는 다른 보안 연구자들과 협력해 취약점을 검증
  • Discord는 보고 직후 개발자 문서 전체를 2시간 동안 비활성화하고, 이후 기존 플랫폼으로 복귀
  • Mintlify는 Discord를 통해 취약점을 인지한 후, 엔지니어링 팀과 연구자 간 Slack 채널을 개설해 즉시 수정 작업 진행

영향 범위

  • X(Twitter), Vercel, Cursor, Discord 등 Mintlify 고객사 대부분이 영향권
  • 각 기업의 공식 도메인에서 단일 악성 링크로 계정 탈취 가능성 존재
  • 공급망 단일 취약점이 수백 개 기업의 보안에 연쇄적 위험을 초래할 수 있음

보상 및 결론

  • 연구팀은 총 약 11,000달러의 버그 바운티를 수령
    • Discord가 4,000달러, Mintlify가 개별 취약점에 대해 추가 보상 지급
  • 이 사례는 공급망 보안의 중요성과 단일 플랫폼 취약점의 파급력을 보여주는 대표적 사례로 남음

Read Entire Article