소프트웨어 공급망 공격 2026: 48시간, 3개 레지스트리, 무너진 신뢰

4월 셋째 주, 48시간 만에 npm, PyPI, Docker Hub 3개 레지스트리가 동시에 뚫렸음. 패스워드 매니저(Bitwarden), 보안 스캐너(Checkmarx), 배포 플랫폼(Vercel) — 개발자가 가장 신뢰하는 도구들이 무기로 전환되는 속도가 방어자의 대응 시간을 추월하고 있음.

Key Takeaways

  • Checkmarx TeamPCP 캠페인, GitHub Actions·Docker Hub·VS Code·npm·CI 인증정보 5개 벡터 동시 공격
  • CanisterSprawl: npm 최초 자가증식 웜, ICP 블록체인 C2로 테이크다운 저항, PyPI까지 크로스 생태계 전파
  • 공급망 공격 월평균 13건→41건으로 3배 증가, 오픈소스 멀웨어 73% 급증

48시간의 동시다발 공격: 3개 레지스트리, 한 주

2026년 4월 셋째 주는 소프트웨어 공급망 보안 역사의 분기점으로 기록될 것임. 4월 21~23일, 3개의 서로 다른 캠페인이 npm, PyPI, Docker Hub를 연달아 타격한 것임 (GitGuardian).

우연이 아님. 3개 캠페인 모두 자격증명 수집 스크립트, CI/CD 파이프라인 표적, 개발자 토큰 탈취라는 전술적 DNA를 공유하고 있음.

공급망 공격 월평균 건수가 3배 뛰었음. 2024년 13건에서 2025년 중반 28건, 2025년 하반기 41건으로 증가한 것임 (ReversingLabs). 오픈소스 플랫폼 멀웨어는 전년 대비 73% 늘었음 (Sonatype).

Group-IB는 공급망 공격을 2026년 최상위 글로벌 사이버 위협으로 분류했음 (Group-IB).

패턴이 명확함. 공격자는 멀웨어를 밑바닥부터 만들지 않음. 개발자가 이미 신뢰하는 도구와 파이프라인을 탈취하고 있는 것임.


Checkmarx 캠페인: 하나의 그룹, 5개 벡터 동시 공격

FIG-01

Checkmarx 캠페인: 자격증명 1건 탈취에서 5개 공격 벡터로
01

3월 23일

48-Hour Blitz: Three Registries
48-Hour Blitz: Three Registries (Photo: Pexels) by Erik Mclean
Trivy CI 자격증명 탈취

TeamPCP가 Trivy 인프라에서 CI 자격증명을 탈취, Checkmarx 빌드 시스템 초기 접근 확보.

02

4월 20-22일

GitHub Actions + Docker Hub 오염

ast-github-action, kics-github-action 침해. Docker Hub KICS 이미지 v2.1.20, alpine, v2.1.21 트로이목마화.

03

4월 22일

VS Code 익스텐션 변조

ast-results 2.53.0, cx-dev-assist 1.7.0에 자격증명 수집 페이로드 삽입.

04

4월 22일

Bitwarden CLI npm 하이재킹

@bitwarden/[email protected]에 bw1.js 주입 — 93분 노출, ~40종 자격증명 표적.

05

4월 27일

다크웹 데이터 게시 확인

Checkmarx, GitHub 리포지토리 데이터 다크웹 게시 확인. 5개 벡터 모두 C2: checkmarx[.]zone 공유.

SOURCE: IBVL, Sophos, The Hacker News (2026년 4월)

TeamPCP의 Checkmarx 캠페인은 역대 가장 정교한 공급망 공격임. 단일 위협 그룹이 5개 공격 벡터를 동시에 뚫은 것 자체가 전례 없는 수준의 조율임 (IBVL).

시작점은 탈취된 Trivy CI 자격증명임. 이 단 하나의 진입점에서 Checkmarx GitHub Actions(ast-github-action, kics-github-action), Docker Hub KICS 이미지(v2.1.20, alpine, v2.1.21), VS Code 익스텐션(ast-results 2.53.0, cx-dev-assist 1.7.0), Bitwarden CLI npm 패키지(@bitwarden/[email protected])까지 연쇄 침해가 발생한 것임.

5개 벡터 모두 동일한 C2 도메인(checkmarx[.]zone), 동일한 암호화 방식(tpcp.tar.gz), 약 40종의 동일한 자격증명 표적 목록을 공유함. 그러면서도 각 벡터에 맞춘 전달 메커니즘을 사용했음 (Sophos).

일반적인 침해와 다른 이유

쉽게 말해 이런 것임. 도둑이 현관 자물쇠, 창문, 지하실, 차고, 훔친 열쇠 — 5개 경로를 동시에 침투한 상황임. 기존 사고대응은 한 번에 하나의 공격 벡터를 가정하는데, TeamPCP가 그 전제를 깨버린 것임.

공격 표면이 단일 소프트웨어 패키지가 아니었음. 코드 스캔부터 패스워드 관리, 컨테이너 이미지, IDE 익스텐션까지 — 전체 신뢰 체인(Trust Chain)이 공격 대상이 된 것임.


Bitwarden CLI: 패스워드 매니저가 무기가 된 순간

@bitwarden/[email protected] 침해는 아이러니의 교과서임. 자격증명을 보호하기 위해 만들어진 도구 — 패스워드 매니저 — 가 자격증명을 탈취하는 무기로 전환된 것임 (Endor Labs).

삽입된 페이로드 bw1.js가 수집한 대상: GitHub 토큰(Runner.Worker 메모리 스크래핑), AWS·Azure·GCP 자격증명, SSH 키, .npmrc 파일, Claude AI 및 MCP 설정 파일까지 — 약 40종의 자격증명임.

93분의 노출

악성 버전이 살아 있던 시간은 정확히 93분임. 4월 22일 오후 5:57~7:30(미 동부시간) 사이임 (Bitwarden). 이 시간 동안 npm install @bitwarden/cli를 실행한 모든 사람이 오염된 패키지를 받은 것임.

특히 위험했던 건 웜 기능임. 탈취한 npm 토큰으로 피해자가 쓰기 권한을 가진 패키지를 재배포하고, GitHub Actions 워크플로우를 저장소에 주입하는 연쇄 침해 구조였음.

페이로드에는 러시아 로캘 킬 스위치, Dune 테마 저장소 명명 규칙, “Butlerian Jihad” 이념적 선언문이 포함되어 있었음. 귀속 분석에 도움이 되는 표식이지만 공격 자체의 효과에는 영향을 주지 못한 것임.


CanisterSprawl: 최초의 자가증식 공급망 웜

FIG-02

CanisterSprawl: npm 최초 자가증식 공급망 웜

CanisterSprawl 자가증식 웜 postinstall 훅 진입점 Regex 수집기 ~40종 시크릿 npm 재배포 16개+ 패키지 PyPI 교차 전파 생태계 간 이동 ICP 캐니스터 C2 테이크다운 저항

SOURCE: CSA, Socket, StepSecurity (2026년 4월)

Bitwarden CLI: When Your Password
Bitwarden CLI: When Your Password (Photo: Pexels) by Pixabay

Checkmarx 캠페인이 동시다발 공격의 넓이를 보여줬다면, CanisterSprawl은 자가증식이라는 새로운 깊이를 보여준 것임. 4월 21~22일 발견된 이 npm 웜은 npm 생태계 역사상 최초의 완전 자가증식 공급망 공격임 (CSA).

동작 원리가 정교함. postinstall 훅으로 실행 → regex 패턴 매칭으로 약 40종 시크릿 수집 → npm publish 토큰 발견 → 피해자가 배포 권한을 가진 모든 패키지의 패치 버전 자동 업로드 → 재감염. 쉽게 말해, 감기에 걸린 사람이 자기 명함을 가진 모든 사람에게 자동으로 감기를 옮기는 구조임.

PyPI 토큰이 발견되면 생태계를 넘어 전파됨. 이 크로스 생태계 전파(Cross-ecosystem Propagation)는 최초 사례로, 단일 npm 침해가 다중 레지스트리 위협으로 확대되는 구조인 것임.

블록체인 기반 C2의 등장

CanisterSprawl의 C2 인프라는 ICP(Internet Computer Protocol) 블록체인 캐니스터(cjn37-uyaaa-aaaac-qgnva-cai)를 사용함. 기존 서버와 달리 블록체인 기반 C2는 도메인 압류나 호스팅 업체 조치로 차단할 수 없음. 탈중앙화 인프라 자체가 검열 저항성을 제공하는 것임.

최소 16개 패키지 버전에서 감염이 확인됐고, Namastex Labs 조직과 연결되어 있음. 실제 피해 범위는 더 클 수 있음. 웜의 자가증식 특성상 감염된 개발자 한 명이 곧 배포 벡터가 되기 때문임.


Vercel 침해: OAuth 신뢰 체인의 붕괴

Vercel 침해는 다른 종류의 경고를 보여줌. OAuth 신뢰 관계가 만드는 보이지 않는 자격증명 확산(Credential Fan-out)의 교과서적 사례임 (The Hacker News).

공격 체인을 보면 이렇게 됨. Context.ai 직원 Lumma Stealer 감염(2026년 2월) → Context.ai AWS 환경 침해 → Vercel 직원 Google Workspace OAuth 토큰 탈취 → Vercel 내부 시스템 접근 → 고객 프로젝트 환경 변수 열거.

단일 Vercel 프로젝트에 평균 10~30개 환경 변수가 존재함. 50개 프로젝트를 운영하는 조직이면 500~1,500개 자격증명이 플랫폼에 있는 셈임. 공격자의 체류 시간은 약 2개월 — 2월부터 4월까지였음.

$2M 몸값 요구

ShinyHunters 연계를 주장하는 공격자가 200만 달러(약 28억 원)를 요구했음. Vercel은 침해를 확인하되, 접근 가능했던 것은 비민감 기본 환경 변수(고객 암호화 시크릿 아님)라고 밝혔음.

구조적 교훈이 있음. 서비스 간 OAuth 연결은 어떤 단일 벤더도 전체를 모니터링하지 않는 신뢰 체인을 형성함. 하나의 링크가 끊어지면 자격증명 연쇄 확산이 발생하는 것임.


숫자가 말하는 것

FIG-03

소프트웨어 공급망 공격 2026: 핵심 지표

3배

월간 공격 증가율 (2024→2025)

73%

오픈소스 멀웨어 전년 대비 증가

93분

Bitwarden CLI 악성 버전 노출 시간

~40종

bw1.js 표적 자격증명 유형 수

SOURCE: ReversingLabs, Sonatype, Bitwarden, JFrog (2026)

데이터가 체계적 에스컬레이션을 보여주고 있음:

지표수치출처
공급망 공격 월평균 (2024)13건ReversingLabs
공급망 공격 월평균 (2025 하반기)41건ReversingLabs
증가율3배ReversingLabs
오픈소스 멀웨어 전년 대비 증가73%Sonatype
Bitwarden CLI 노출 시간93분Bitwarden
CanisterSprawl 감염 패키지16개+ 버전CSA / Socket
Vercel 공격자 체류 시간약 2개월The Hacker News
bw1.js 자격증명 표적 유형약 40종JFrog / Socket
Axios npm 주간 다운로드7천만~1억npm
LiteLLM PyPI 일일 다운로드약 340만PyPI
Vercel Breach: OAuth Trust Chain
Vercel Breach: OAuth Trust Chain (Photo: Pexels) by Jerson Martins

2026년 1분기에 발생한 추가 대형 사건 두 건이 이 추세를 뒷받침함. Axios npm 침해(3월 31일)는 북한 Sapphire Sleet 그룹이 배후로 지목됐고 주당 7천만~1억 다운로드 패키지가 대상이었음. LiteLLM PyPI 침해(3월 24일)는 일일 약 340만 다운로드 패키지를 표적으로 50종 이상 자격증명을 노린 것임.


공격자 플레이북: 2026년에 바뀐 것

2026년 공급망 공격의 구조적 변화 3가지가 핵심임:

Attacker Playbook: Changed 2026
Attacker Playbook: Changed 2026 (Photo: Pexels) by cottonbro studio

변화 1: 다중 벡터 동시 공격

TeamPCP 캠페인이 증명한 것임. 고도화된 공격자는 더 이상 한 번에 하나의 벡터만 공격하지 않음. GitHub Actions, Docker Hub, VS Code, npm, CI 인증정보 — 5개 동시 침해는 방어자에게 다전선 사고대응 역량을 요구하는 것임.

변화 2: 자가증식

CanisterSprawl이 공격자가 개별 패키지를 하나하나 찾아 공격할 필요를 없앤 것임. 웜이 자율적으로 전파하면서 감염된 개발자 한 명이 무의식적 배포자가 됨. 계산법이 바뀐 것임. “몇 개 패키지를 오염시킬 수 있는가”에서 “한 번의 감염이 몇 명의 개발자에게 도달하는가”로 전환된 것임.

변화 3: 테이크다운 저항 인프라

블록체인 C2(ICP 캐니스터), Dune 테마 운영 보안, 크로스 생태계 전파 — 공격자가 지속성에 투자하고 있다는 신호임. 도메인 하나 차단하면 캠페인이 끝나는 시대가 저물고 있는 것임.


방어자 체크리스트: 지금 당장 해야 할 5가지

2026년 4월 사건들을 기반으로, 모든 개발팀이 즉시 실행해야 할 5가지 조치임:

GitHub Actions를 태그가 아닌 커밋 SHA에 고정할 것. Checkmarx 캠페인이 태그 기반 참조를 악용한 것임. SHA 고정은 감사한 코드만 실행하게 보장함 — 태그는 침해된 커밋으로 이동될 수 있음.

npm/PyPI 토큰에 최소 권한 + 단기 수명을 강제할 것. CanisterSprawl의 전파 메커니즘 전체가 넓은 범위의 publish 토큰을 찾는 데 의존하고 있음. 범위 제한된 단기 토큰이 폭발 반경을 줄여줌.

환경 변수를 전용 시크릿 매니저로 이전할 것. Vercel 침해가 플랫폼 저장 환경 변수의 위험을 노출한 것임. Vault, AWS Secrets Manager, Azure Key Vault는 저장 시 암호화, 접근 로깅, 자동 교체(Rotation) 기능을 제공하는데, 플랫폼 환경 변수는 이 기능이 없음.

OAuth 앱 권한을 분기별로 감사하고 미사용 연결을 철회할 것. Vercel 공격 체인이 OAuth 신뢰 관계에서 시작된 것임. 대부분의 조직이 한 번도 감사하지 않은 수십 개의 OAuth 연결을 보유하고 있음.

CI 러너의 아웃바운드 네트워크 트래픽을 모니터링하고 IMDS v2를 강제할 것. bw1.js가 외부 C2 도메인으로 자격증명을 유출한 것임. CI 러너의 아웃바운드 허용 목록 관리 — IMDS v2 강제로 클라우드 메타데이터 탈취 방지와 결합 — 이 유출을 탐지하거나 차단할 수 있었음.


한국: 공급망 보안의 빈틈

한국 소프트웨어 생태계도 고유한 공급망 보안 과제를 안고 있음. NetSec-KR 2026에서 전문가들이 강조한 핵심: 공급망 보안은 더 이상 개발자만의 문제가 아니라 기업 전체가 참여해야 하는 영역이라는 것임 (데일리시큐).

South Korea: Supply Chain Security
South Korea: Supply Chain Security (Photo: Pexels) by 홍준 김

SK쉴더스는 2026 위협 전망 보고서에서 소프트웨어 공급망 공격을 최상위 위협으로 분류했음. 한국 기업의 높은 오픈소스 의존도가 4월 공격 패턴에 특히 취약하다는 분석인 것임 (SK쉴더스).

EU 사이버복원력법(CRA)이 2026년부터 보안 요구사항을, 2027년부터 SBOM(Software Bill of Materials, 소프트웨어 명세서) 포함 공급망 보안 의무를 전면 시행함. EU 시장에 수출하는 한국 기업은 반드시 준수해야 함 — 4월 공격이 이 요구사항의 존재 이유를 정확히 보여주고 있는 것임.

한국 개발팀이 해야 할 일

Checkmarx, Bitwarden CLI, Vercel을 CI/CD 파이프라인에서 사용하는 한국 조직은 4월 캠페인의 침해 지표(IoC)를 즉시 점검해야 함. Bitwarden의 93분 노출 시간과 Vercel의 2개월 체류 시간을 감안하면, 이미 노출됐으면서 탐지하지 못한 경우가 있을 수 있음.

한국의 SBOM 도입 속도는 EU·미국 타임라인에 비해 뒤처져 있음. 4월 사건은 SBOM 구현을 서두를 구체적 비즈니스 근거를 제공한 것임 — 규정 준수 체크박스가 아니라 실질적 보안 통제 수단으로서의 도입이 필요함.


자주 묻는 질문 (FAQ)

Q. 소프트웨어 공급망 공격이란 무엇인가요? A. 오픈소스 패키지, CI/CD 도구, 개발 플랫폼 등 신뢰받는 컴포넌트를 침해하여 하위 사용자에게 멀웨어를 배포하는 공격 방식입니다. 대상을 직접 공격하는 대신 개발자가 이미 의존하는 도구와 라이브러리를 오염시켜 단일 침해로 수천 개 조직에 접근하는 구조입니다.

Q. 2026년 4월 공격에 우리 조직이 영향받았는지 어떻게 확인하나요? A. npm lock 파일에서 @bitwarden/[email protected](악성 버전)을 확인하고, Docker 이미지에서 KICS v2.1.20/alpine/v2.1.21을 점검합니다. VS Code 익스텐션 ast-results 2.53.0 또는 cx-dev-assist 1.7.0을 감사하고, 2026년 2~4월 기간의 Context.ai 또는 Vercel 관련 OAuth 권한을 재검토합니다. Bitwarden 공식 성명에 상세한 침해 지표가 제공되어 있습니다.

Q. 소프트웨어 공급망 공격이 2026년에 급증하는 이유는 무엇인가요? A. 세 가지 요인이 복합적으로 작용합니다. 첫째, 오픈소스 의존성 심화(일반 애플리케이션이 200개 이상 패키지 사용)입니다. 둘째, CI/CD 파이프라인에 넓은 접근 권한의 고가치 자격증명이 저장되어 있다는 점입니다. 셋째, CanisterSprawl 같은 자가증식 기법의 등장으로 단일 침해가 자율적 캠페인으로 전환되기 때문입니다.

Q. SBOM이 무엇이고 공급망 보안에 왜 중요한가요? A. SBOM(Software Bill of Materials)은 소프트웨어 제품에 포함된 모든 컴포넌트, 라이브러리, 의존성의 포괄적 목록입니다. 보이지 않는 것은 방어할 수 없다는 원칙에 따라 중요합니다. Bitwarden CLI가 침해됐을 때 SBOM을 보유한 조직은 영향받는 버전 사용 여부를 즉시 확인할 수 있었습니다. SBOM이 없는 조직은 수동 감사를 수행해야 했으며, 이 과정에서 공격자가 자격증명을 계속 유출하고 있었습니다.



이 글은 정보 제공 및 분석 목적으로 작성됐으며, The ByteDive는 사이버보안 컨설팅 서비스를 제공하지 않음. 각 조직의 사고 대응과 복구는 전문 보안 업체와 상의할 것.

한줄 코멘트. 2026년 소프트웨어 공급망 공격이 구조적 문턱을 넘은 것임 — 개별 패키지 오염에서 조율된 자가증식 크로스 생태계 캠페인으로, 방어자가 가장 의존하는 도구를 무기로 전환하는 단계에 진입한 것임.

직장인 시사점. CI/CD 파이프라인이 여전히 태그 기반 GitHub Actions를 참조하고, 시크릿을 플랫폼 환경 변수에 저장하고, 한 번도 감사하지 않은 OAuth 연결을 보유하고 있다면 — 4월 사건이 직접적 경고임. Bitwarden의 93분이 증명하는 것임. 현대 공급망 공격은 인간의 사고대응 속도보다 빠르게 움직임. 자동화가 선택이 아니라 공격자 속도에 대응하는 유일한 방어 수단이 된 시점임.

이 글이 도움이 되셨나요?

☕ Buy me a coffee