GHSA-CCGF-5RWJ-J3HV: GHSA-ccgf-5rwj-j3hv: TeleJSON에서 안전하지 않은 역직렬화를 통한 DOM XSS

발행: (2026년 4월 3일 AM 09:10 GMT+9)
4 분 소요
원문: Dev.to

Source: Dev.to

취약점 개요

  • 취약점 ID: GHSA-CCGF-5RWJ-J3HV
  • CVSS 점수: 5.1
  • 공개일: 2026-04-02
  • 유형: DOM 기반 교차 사이트 스크립팅 (XSS)
  • CWE IDs: CWE‑79, CWE‑94

telejson 패키지는 6.0.0 이전 버전에서 _constructor-name_ 라는 JSON 속성을 new Function()을 사용해 역직렬화합니다. 해당 속성 값이 정제되지 않기 때문에 공격자는 조작된 JSON 페이로드를 제공하여 취약한 애플리케이션 컨텍스트에서 임의의 JavaScript 코드를 실행할 수 있습니다.

기술적 세부 사항

  • 근본 원인: telejson은 검증되지 않은 _constructor-name_ 속성을 역직렬화 과정에서 new Function()을 통해 동적으로 생성된 함수에 직접 전달합니다.
  • 공격 벡터: 주로 window.postMessage를 통해 iframe 또는 Storybook 애드온 간에 전송되는 네트워크 기반 JSON 페이로드.
  • 필요 권한: 없음.
  • CVSS v4.0 벡터: CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N

영향

이 취약점을 악용하면 공격자는 피해자의 브라우저에서 임의의 JavaScript를 실행할 수 있으며, 그 결과는 다음과 같습니다:

  • 세션 토큰 및 기타 민감 데이터 탈취.
  • 피싱이나 UI 재배치를 위한 DOM 조작.
  • 애플리케이션 클라이언트‑사이드 로직 추가 침해.

완화 방안

  • 업그레이드: telejson≥ 6.0.0 버전으로 업데이트합니다.
  • 출처 검증: 들어오는 JSON을 처리하는 모든 window.postMessage 리스너에 대해 event.origin을 엄격히 검증합니다.
  • 콘텐츠 보안 정책: 동적으로 생성된 코드를 차단하기 위해 'unsafe-eval' 지시어가 없는 CSP를 적용합니다.

조치 단계

  1. 의존성 감사
    npm audit 또는 yarn audit을 실행하여 설치된 telejson 버전을 확인합니다.

  2. 패키지 업그레이드

    npm install telejson@^6.0.0   # or yarn add telejson@^6.0.0
  3. 파싱 호출 검토

    • 모든 telejson.parse() 사용처를 점검합니다.
    • 커스텀 프로토타입 복원이 필요한 경우 옵션 객체에 { allowFunction: true }를 명시적으로 전달합니다.
  4. postMessage 핸들러 보안

    window.addEventListener('message', (event) => {
      const trustedOrigins = ['https://example.com', 'https://app.example.com'];
      if (!trustedOrigins.includes(event.origin)) return;
      // 안전한 파싱 진행
    });
  5. CSP 적용

    Content-Security-Policy: default-src 'self'; script-src 'self';

참조

  • GitHub Security Advisory: GHSA-ccgf-5rwj-j3hv
  • Official Repository:
  • Vulnerable Code Reference (v5.3.3):
  • Fixed Code Reference (v6.0.0):

전체 분석 보고서(대화형 다이어그램 및 익스플로잇 상세 포함)는 자문 웹사이트에 게시된 GHSA‑CCGF‑5RWJ‑J3HV 보고서를 참고하십시오.

0 조회
Back to Blog

관련 글

더 보기 »

AI 에이전트와 인간을 위한 Jira

우선, 걱정하지 마세요. 여기서 저는 Moltbook을 새로 만든 것이 아닙니다. 제가 아는 모든 스타트업은 도구가 너무 많습니다—어디엔가 보드 하나, Notion 문서 하나, Slack...