GHSA-CCGF-5RWJ-J3HV: GHSA-ccgf-5rwj-j3hv: TeleJSON에서 안전하지 않은 역직렬화를 통한 DOM XSS
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를 적용합니다.
조치 단계
-
의존성 감사
npm audit또는yarn audit을 실행하여 설치된telejson버전을 확인합니다. -
패키지 업그레이드
npm install telejson@^6.0.0 # or yarn add telejson@^6.0.0 -
파싱 호출 검토
- 모든
telejson.parse()사용처를 점검합니다. - 커스텀 프로토타입 복원이 필요한 경우 옵션 객체에
{ allowFunction: true }를 명시적으로 전달합니다.
- 모든
-
postMessage 핸들러 보안
window.addEventListener('message', (event) => { const trustedOrigins = ['https://example.com', 'https://app.example.com']; if (!trustedOrigins.includes(event.origin)) return; // 안전한 파싱 진행 }); -
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 보고서를 참고하십시오.