English Advisory →
CVE-2026-453219.6/CRITICALCISA KEV 등재CWE-506

TanStack npm 패키지 공급망 침해 사고 및 악성 코드 주입 취약점 (CVE-2026-45321)

영향받는 벤더 / 생태계
tanstack
대상 컴포넌트 / 패키지
router, query, table, form, store, virtual, ranger
권고문 발행일
2026-05-12

실무자 핵심 요약 (Executive Summary)

SECOPS ASSESSMENT
영향 대상

2026년 5월 11일 19:20 ~ 19:26 UTC 사이에 배포된 총 42개 @tanstack/* 범위 내 84개 악성 패키지 버전

파급 효과

공격자가 GitHub Actions OIDC 신뢰 토큰을 탈취하여 공식 권한으로 자격 증명 탈취용 악성코드가 포함된 패키지를 npm에 업로드함

권장 조치

감염된 버전의 패키지를 즉시 삭제하고, 안전한 최신 버전으로 강제 업데이트 및 빌드 환경의 자격 증명(API Key 등) 재설정

영향받는 제품 및 버전 범위

@tanstack/router를 포함한 42개 @tanstack/* 관련 패키지 전체. 2026년 5월 11일 19:20 ~ 19:26 UTC 사이에 릴리즈된 패키지당 정확히 2개의 악성 버전(총 84개 버전)이 영향을 받습니다.

권장 패치 및 임시 완화(Workaround) 가이드

PATCH & WORKAROUND

1. 감염된 패키지 확인 및 강제 업데이트

프로젝트의 package.json 및 락파일(package-lock.json, yarn.lock, pnpm-lock.yaml)에서 2026년 5월 11일에 배포된 @tanstack/* 패키지가 있는지 확인하고, 즉시 안전한 버전으로 업데이트하십시오.

bash
# npm을 사용하는 경우 캐시 삭제 후 재설치
npm cache clean --force
npm install @tanstack/react-router@latest

# yarn을 사용하는 경우
yarn cache clean
yarn upgrade-interactive --latest

2. 자격 증명(Credentials) 회수 및 재설정

해당 시간대에 악성 패키지가 설치된 환경(개발자 로컬 PC, CI/CD 빌드 서버, 프로덕션 환경)에서 사용된 모든 환경 변수, API 키, AWS/GCP 자격 증명, npm 토큰 등은 유출된 것으로 간주하고 즉시 폐기 후 재발급해야 합니다.

3. GitHub Actions 보안 강화 (DevSecOps)

유사한 공격을 방지하기 위해 pull_request_target 트리거 사용 시 쓰기 권한이나 비밀값(Secrets)에 접근하지 못하도록 워크플로우 권한을 최소화하십시오.

yaml
# GitHub Actions 워크플로우 권한 최소화 예시
permissions:
  contents: read
  id-token: write # OIDC가 필요한 단계에서만 제한적으로 사용
권장 아키텍처 방어 통제 (Recommended Security Control)
Snyk Open Source & Container Security
공급망 침해 사고가 발생한 시간대의 TanStack 패키지 의존성을 즉시 검사하고, 빌드 환경의 모든 비밀 키를 즉시 로테이션하십시오.

내 GitHub/GitLab 레포지토리에 이 취약한 패키지가 숨어 있는지 30초 만에 스캔하세요

간접 의존성(Transitive Dependency)에 포함된 취약점은 수동 확인이 불가능합니다. Git 연동 한 번으로 취약 버전 탐지부터 호환성을 유지하는 최소 버전 업그레이드 PR까지 자동 생성하세요.

무료 플랜 지원 · GitHub/GitLab 1클릭 연동
CI/CD 파이프라인에 자동 보안 스캐닝(SAST/SCA) 구축하는 실전 강의
커리큘럼 확인하기

취약점 발생 원리 및 공격 메커니즘

본 취약점은 TanStack 라이브러리의 배포 파이프라인(CI/CD)을 겨냥한 고도로 정교한 공급망 공격(Supply Chain Attack)입니다. 공격자는 GitHub Actions의 설계 및 설정 취약점 3가지를 연쇄적으로 악용(Chaining)하였습니다:

  • Pwn Request (pull_request_target 오설정): 외부 포크(Fork) 저장소의 PR 요청이 기본 저장소의 권한을 가진 컨텍스트에서 실행되도록 허용된 취약점을 악용했습니다.
  • GitHub Actions 캐시 오염 (Cache Poisoning): 포크 경계 간의 신뢰 관계를 악용하여 빌드 캐시를 악성 코드로 오염시켰습니다.
  • OIDC 토큰 메모리 추출: 실행 중인 Actions 러너 프로세스의 런타임 메모리에서 npm 레지스트리 인증용 OIDC(OpenID Connect) 신뢰 토큰을 추출하여 탈취했습니다.

결과적으로 공격자는 공식 배포 워크플로우 자체를 수정하지 않고도, 탈취한 OIDC 토큰을 사용해 npm 레지스트리에 정상적인 배포자로 위장하여 자격 증명을 탈취하는 악성 패키지를 업로드할 수 있었습니다.

공식 보안 권고문 및 참조 링크

NVD Original English Description

On 2026-05-11, between approximately 19:20 and 19:26 UTC, 84 malicious versions across 42 @tanstack/* packages were published to the npm registry. The publishes were authenticated via the legitimate GitHub Actions OIDC trusted-publisher binding for TanStack/router, but the publish workflow itself was not modified. The attacker chained three known vulnerability classes — a pull_request_target "Pwn Request" misconfiguration, GitHub Actions cache poisoning across the fork↔base trust boundary, and runtime memory extraction of the OIDC token from the Actions runner process — to publish credential-stealing malware under a trusted identity. Each affected package received exactly two malicious versions, published a few minutes apart.

SecOps Advisory Dispatch & RSS Feed

일간 취약점 브리핑 및 긴급 Zero-Day 경보 구독

보안 실무자와 인프라·백엔드 엔지니어를 위해 매일 아침 주요 취약점과 패치 우선순위를 요약해 발송합니다.

Slack / Teams / RSS 리더 연동:
CVE-2026-45321: TanStack npm 패키지 공급망 침해 사고 및 악성 코드 주입 취약점 (CVE-2026-45321) (CVSS 9.6) | CVE Pulse