2026년 5월 11일,인기 있는 오픈소스 프로젝트인 TanStack이 매우 정교한 공급망 공격을 당했습니다. 이 사건은 TanStack 자체뿐만 아니라 Mistral AI, UiPath, OpenAI, Grafana Labs를 포함한 160개 이상의 npm 및 PyPI 패키지에까지 파급되었으며, 총 400개 이상의 악성 버전이 배포되었습니다.이번 공격은 TeamPCP라는 위협 조직에 의해 수행되었으며, “Mini Shai-Hulud”라는 이름이 붙여졌습니다. 이 사건은 현대 소프트웨어 개발에서 오픈소스 생태계의 취약성을 여실히 드러냈으며, Web3 분야의 보안에 경종을 울렸습니다.

TanStack 공급망 공격 사건 개요

TanStack供应链攻击深度剖析:开源生态的安全警钟与Web3防护之道

이번 공격은 2026년 5월 11일 UTC 기준 19:20부터 19:26 사이에 발생했으며, 공격자는 불과 6분 만에 42개의@tanstack네임스페이스 아래의 npm 패키지에 84개의 악성 버전을 배포했습니다. 주목할 점은 공격자가 npm 인증 정보를 직접 탈취하거나 피싱을 통해 관리자 계정을 확보한 것이 아니라, GitHub Actions 워크플로우의 일련의 취약점을 악용했다는 것입니다.

  • 취약점 연쇄 악용: 공격 연쇄에는 세 가지 주요 GitHub Actions 취약점이 관련되어 있습니다:pull_request_target워크플로우의 부적절한 구성, GitHub Actions 캐시 포이즈닝, 그리고 실행 시 OpenID Connect(OIDC) 토큰 추출입니다. 공격자는 먼저 TanStack/router 저장소에 위장 브랜치를 생성하고, 악성 페이로드를 포함한 풀 리퀘스트를 제출했습니다.pull_request_target워크플로우 구성 문제로 인해 이 풀 리퀘스트는 기본 저장소 권한을 가진 환경에서 실행되었으며, 이로 인해 공격자는 GitHub Actions 캐시에 악성 콘텐츠를 주입할 수 있게 되었습니다.그 후, 정당한 유지보수자가 코드를 병합하고 배포 워크플로를 트리거했을 때, 오염된 캐시가 복원되어 공격자는 GitHub Actions 실행기 프로세스의 메모리에서 직접 OIDC 토큰을 추출할 수 있게 되었습니다.
  • 악성 페이로드 및 확산: 이번 공격의 악성 페이로드는 “Mini Shai-Hulud”라고 불리며, 자체적으로 확산되는 자격 증명 탈취 웜입니다.감염된 패키지가 설치되면 악성 코드가 npm 라이프사이클 훅에서 실행되어 GitHub 토큰, npm 토큰,AWS, GCP, Azure 자격 증명, Kubernetes 서비스 계정 토큰, HashiCorp Vault 토큰, SSH 키 및 환경 변수를 포함한 다양한 민감한 정보를 탈취합니다.이 웜은 또한 피해자가 게시 권한을 가진 다른 npm 패키지를 식별하여, 해당 패키지의 아카이브를 수정해 동일한 악성 종속성을 주입하고, 버전 번호를 높인 뒤, 탈취한 자격 증명을 사용하여 새로운 감염된 버전을 게시함으로써 자가 전파를 실현합니다.
  • 은폐성 및 영향: 이번 공격의 위험성은 악성 소프트웨어 패키지가 TanStack의 합법적인 배포 파이프라인을 통해 배포되었으며, 유효한 npm 출처 증명(provenance attestations)을 동반하고 있다는 점에 있습니다.이는 이러한 악성 버전이 표준 검증 방법으로는 합법적인 버전과 거의 구별할 수 없으며, 심지어 SLSA 출처 검사 및 유효한 서명 인증서 검증까지 통과했다는 것을 의미합니다. 공격은 급속히 확산되어 OpenAI 내부 소스 코드 저장소의 인증 정보가 도난당하고, Grafana Labs의 코드베이스가 다운로드되었으며, 다음과 같이 다운로드 횟수가 많은 여러 소프트웨어 패키지에 영향을 미쳤습니다.@tanstack/react-router(주간 다운로드 수 1,270만 회 이상)과 같은 다수의 인기 소프트웨어 패키지에 영향을 미쳤습니다.

오픈소스 생태계의 보안 경종

TanStack 사건은 현대 소프트웨어 공급망의 점점 더 커지는 복잡성과 취약성을 여실히 드러냈으며, 전체 오픈소스 생태계에 다음과 같은 경종을 울렸습니다:

TanStack供应链攻击深度剖析:开源生态的安全警钟与Web3防护之道

  • CI/CD 파이프라인이 주요 공격 표면이 됨: 이번 공격은 공격자들이 더 이상 소스 코드 저장소나 인증 정보만을 노리는 것이 아니라, 캐시, 워크플로 권한, 의존성 분석 시스템을 포함한 지속적 통합/지속적 배포(CI/CD) 파이프라인 자체로 시선을 돌리고 있음을 보여줍니다. 빌드 파이프라인은 현대 소프트웨어 개발에서 주요 공격 표면이 되었습니다.
  • 기존 보안 조치의 한계: 프로젝트가 2단계 인증(2FA)을 활성화하고 SLSA 출처 검증과 같은 모범 사례를 준수하더라도, CI/CD 시스템의 신뢰 체인을 악용하는 이러한 복잡한 공격을 방어하지 못할 수 있습니다.
  • 신뢰 경계의 모호화: 공격은 GitHub Actions 내 ‘fork-to-base’ 신뢰 경계를 가로지르는 취약점을 악용하여, 포크 저장소에서 유래한 악성 코드가 기본 저장소의 권한 하에서 실행되도록 함으로써, 전통적으로 외부 기여에 대해 설정되어 있던 신뢰 경계를 모호하게 만듭니다.
  • “웜식” 확산의 위협: 악성 페이로드의 자가 확산 능력은 초기 침해 한 건이 의존성 그래프 전체로 급속히 확산되어 수백, 수천 개의 다운스트림 프로젝트에 영향을 미치며 광범위하고 심대한 피해를 초래할 수 있음을 의미합니다.

Web3 분야의 방어 방안

Web3 프로젝트는 막대한 규모의 디지털 자산을 관리한다는 특성상, 공급망 공격에 있어 특히 매력적인 표적이 됩니다. 공급망 공격은 사용자 자금 도난, 개인 키 유출 또는 악성 스마트 계약 배포로 직접 이어질 수 있으며, 그 결과는 대개 되돌릴 수 없습니다. 따라서 Web3 프로젝트는 다음 몇 가지 측면에서 보안을 강화해야 합니다:

1. 개발 프로세스 및 CI/CD 보안 강화

TanStack供应链攻击深度剖析:开源生态的安全警钟与Web3防护之道

  • 엄격한 GitHub Actions 구성: 모든 GitHub Actions 워크플로를 면밀히 검토하고, 특히pull_request_target트리거를 사용하는 워크플로를 면밀히 검토하여, 보안이 취약한 권한 하에서 포크된 저장소의 코드가 실행되지 않도록 해야 합니다.
  • 인증 정보 관리 및 주기적 갱신: CI/CD 파이프라인에서 사용되는 모든 민감한 인증 정보(예: 클라우드 서비스 키, API 토큰, SSH 키)를 엄격하게 관리하고 정기적으로 갱신해야 합니다.
  • 캐시 보안: 엄격한 캐시 정책을 시행하여, 특히 신뢰할 수 없는 출처의 코드를 처리할 때 CI/CD 환경에서 악용될 가능성이 있는 캐시가 공유되거나 재사용되지 않도록 방지합니다.
  • 출처 검증 및 추가 보안 검사: SLSA 출처 검증이 우회될 수 있음에도 불구하고, 이를 기본 보안 조치로 삼아야 합니다. 동시에, 새로운 소프트웨어 패키지의 출처와 무결성을 검증하기 위해 추가 보안 소프트웨어를 배포해야 합니다. 예를 들어,minimumReleaseAge와 같은 패키지 관리자 구성을 통해 새로 출시된 악성 패키지의 즉각적인 위험을 줄여야 합니다.

2. 의존성 관리 및 소프트웨어 자재 명세서(SBOM)

  • 포괄적인 의존성 감사: 직접 및 간접 의존성을 포함하여 프로젝트의 모든 타사 의존성을 정기적으로 감사하여, 그 출처가 신뢰할 수 있고 알려진 취약점이 없는지 확인해야 합니다.
  • SBOM 생성 및 유지 관리: 모든 Web3 애플리케이션에 대해 소프트웨어 빌딩 부품 목록(SBOM)을 생성하고 유지 관리하여, 모든 구성 요소와 그 버전을 명확히 기록함으로써 취약점이 발견되었을 때 영향을 받는 범위를 신속하게 파악할 수 있도록 해야 합니다.
  • 의존성 쿨링 전략: 새로 출시된 패키지의 즉시 설치를 차단하는 등 의존성 쿨링 전략을 채택하여, 빠르게 진행되는 공격에 대한 노출을 줄입니다.

TanStack供应链攻击深度剖析:开源生态的安全警钟与Web3防护之道

3. 코드 무결성 및 서명 인프라 보호

  • 코드 커밋 서명: 모든 코드 커밋에 대해 GPG 서명을 의무화하고 서명을 검증하여 코드의 무결성과 출처의 신뢰성을 보장합니다.
  • 서명 인프라 보호: 코드 서명 및 바이너리 파일 배포에 사용되는 인프라를 최고 수준의 보안으로 보호하여, 공격자가 합법적인 서명이 포함된 악성코드를 생성하는 것을 방지합니다.
  • 정적 및 동적 코드 분석: CI/CD 프로세스에 정적 애플리케이션 보안 테스트(SAST) 및 동적 애플리케이션 보안 테스트(DAST) 도구를 통합하여 잠재적인 취약점과 악성 코드를 탐지합니다.

4. 개발자 교육 및 사용자 보호

  • 보안 인식 교육: 개발 팀을 대상으로 Web3 특유의 공급망 공격 벡터에 대한 교육을 실시합니다. 예를 들어, 악성 npm 패키지가 어떻게 개인 키를 탈취하는지, 손상된 개발 도구가 어떻게 트랜잭션 매개변수를 수정하는지, 패키지 유지보수자를 대상으로 한 사회공학 공격 등이 포함됩니다.
  • 사용자 권한 제한: 사용자가 DApp과 상호작용할 때 부여하는 권한을 제한하고, 고위험 작업에 대해서는 다단계 인증을 실시할 것을 권장합니다.
  • 하드웨어 지갑 및 자산 격리: 사용자가 장기 보유 자산을 하드웨어 지갑에 보관하도록 권장하며, 잠재적 손실을 줄이기 위해 위험 등급이 다른 자산을 격리합니다.

TanStack供应链攻击深度剖析:开源生态的安全警钟与Web3防护之道

TanStack 공급망 공격 사례는 Web3의 보안이 단순히 스마트 계약 자체에 국한되지 않고, 소프트웨어 개발 수명 주기의 모든 단계에 걸쳐 있음을 다시 한번 입증했습니다. 공급망 보안에 대한 인식과 방어 능력을 전면적으로 제고해야만 Web3 생태계가 날로 복잡해지는 위협에 더 효과적으로 대응할 수 있습니다.