공지사항

Security Insights & Trends

2026년 2분기 오픈소스 악성 패키지: 개발자 신뢰를 노리는 공급망 공격

Raoul16 2026. 7. 15. 11:06

2026년 2분기 오픈소스 악성 패키지: 개발자 신뢰를 노리는 공급망 공격

 

 

안녕하세요,

그로메트릭 입니다. 🐸

 

혹시 우리 팀이 사용하는 npm 패키지 중 하나가 사실은 공격자의 침투 경로였다면 어떨까요? 소나타입(Sonatype) 리서치팀이 발표한 2026년 2분기 오픈소스 악성코드 지수(Open Source Malware Index)에 따르면, 지난 10년간 누적 탐지된 악성 오픈소스 패키지가 180만 건을 돌파했습니다. 이 중 96.6%가 npm 생태계에서 발견됐을 정도로, 개발자들이 가장 많이 의존하는 자바스크립트 패키지 저장소가 공격의 최전선이 되고 있습니다.

 

이번 분기의 특징은 단순한 악성 패키지 업로드를 넘어, 신뢰받는 패키지와 메인테이너 계정, 의존성 관계 자체가 공격 경로로 악용됐다는 점입니다. Shai-Hulud Miasma 웜, 176개 패키지를 동원한 디펜던시 컨퓨전 캠페인, PyTorch Lightning과 Red Hat 패키지 탈취 사건까지, 개발자가 아무 의심 없이 설치(install)하는 순간 자격 증명과 CI/CD 시크릿이 유출되는 사례가 이어졌습니다. 코드 실행 시점의 보안 공백이 곧 기업 인프라 전체의 리스크로 직결된다는 뜻이기도 합니다.

 

이번 글에서는 소나타입이 분석한 2026년 2분기 오픈소스 공급망 공격 동향과 npm 외 PyPI·NuGet 생태계의 위협 양상, 조직이 지금 점검해야 할 방어 전략을 함께 살펴보겠습니다.

 

*아래 글은 소나타입(Sonatype)의 공식 블로그 글을 번역하여 작성되었습니다.

 


2026년 2분기 오픈 소스 악성코드 지수: 공격자들이 개발자의 신뢰를 악용하고 있다

 

요약

  • 2026년 2분기 말 기준, 소나타입 리서치팀이 지금까지 기록한 악성 오픈소스 패키지는 180만 건을 넘어섰습니다.
  • 이번 분기 npm은 전체 악성 패키지 중 96.6%를 차지했으며, 저장소 남용(repository abuse)과 트로이목마형 악성코드가 신뢰도 높은 고자동화 생태계를 얼마나 적극적으로 노리는지 보여줬습니다.
  • 이번 분기를 관통하는 키워드는 "압박받는 신뢰(trust under pressure)"입니다. 대규모 저장소 남용 캠페인, 웜(worm)형 악성코드, 종속성 혼란(dependency confusion), 메인테이너 계정 탈취가 신뢰받던 소프트웨어 배포 채널을 공격 경로로 바꿔놓았습니다.
  • Shai-Hulud Miasma, CanisterSprawl, Atomic Arch, 악성 PyTorch Lightning 배포판, 종속선 혼란, 메인테이너·패키지 탈취 등 공격자들이 눈에 띄는 악성 패키지를 넘어 신뢰받는 개발자 워크플로우 자체를 표적으로 진화하고 있음을 확인했습니다.

2026년 2분기, 소나타입 리서치팀은 여러 생태계에 걸쳐 지난 10년간 누적된 악성 패키지가 180만 건을 넘어섰다고 밝혔습니다. 이번 분기 악성 활동은 압도적으로 npm이 주도했으며, 전체의 96.6%를 차지했습니다.

이번 분기의 악성 행위는 개별적인 악성 업로드보다는 훨씬 산업화된 패턴을 보였습니다. 예를 들면 다음과 같습니다.

  • 대규모 패키지 게시(대량 업로드)
  • 저장소 오남용(repository misuse)
  • 대규모로 작동하는 트로이목마(trojan)급 악성코드

npm의 비중이 압도적이라고 해서 다른 생태계 이야기가 묻혀서는 안 됩니다. 소나타입은 PyPI, NuGet, Hugging Face 모델, RubyGems, Go, Cargo 등에서도 양은 적지만 신호 강도가 높은 악성 행위를 다수 관찰했습니다. 즉, npm이 '물량 공세'를 담당했다면, 나머지 생태계는 공격자들이 여전히 신뢰받는 개발자 워크플로우 전반을 얼마나 집요하게 탐색하고 있는지를 보여줬습니다.

 

2분기는 1분기 트렌드를 한층 더 밀어붙였습니다. 오픈소스 악성코드는 더 이상 패키지 단위로 하나씩 탐지하면 끝나는 문제가 아닙니다.

방어자는 악성 패키지가 어떻게 동작하는지, 어디서 실행되는지, 어떤 신뢰 관계를 악용하는지까지 이해해야 합니다.

출처: 소나타입 블로그

 

npm은 물량 공세로, PyPI·NuGet은 '표적화'된 위협

npm은 위협 건수 기준으로 2분기를 주도했지만, npm을 제외하면 위협 지형은 훨씬 더 집중된 양상을 보였습니다.

non-npm 악성 활동의 약 87%가 단 두 생태계, 즉 PyPI(48.5%)와 NuGet(38.0%)에 집중됐습니다. Hugging Face 모델(6.8%)과 RubyGems(3.0%)가 나머지 대부분을 차지했습니다.

PyPI와 NuGet은 고위험 행위의 비중도 가장 높았습니다.

위협 유형 PyPI의 수량 NuGet의 수량
잠재적으로 원치 않는 애플리케이션(PUA) 3,286 3,268
비밀 유출 2,155 1,962
드로퍼 1,326 676
호스트 정보 유출 341 8

 

저장소 남용과 트로이목마형 활동이 전체 물량을 견인했지만, PyPI와 NuGet에 집중된 탈취·페이로드 전달 행위는 공격자들이 npm 하나만이 아니라 여러 신뢰받는 생태계를 동시에 노리고 있다는 사실을 다시 한번 보여줍니다.

 

트로이목마형 활동은 '페이로드' 문제를 보여주고, 브랜드재킹(brandjacking)과 탈취는 '신뢰' 문제를 보여줍니다.

2분기는 이 두 가지가 함께 나타난 시기였습니다. 공격자들은 npm의 파급력, 익숙한 패키지 이름, 탈취한 메인테이너 계정, 의존성 관계를 활용해 신뢰받던 경로를 공격 경로로 바꿔놓았습니다.

 

이번 분기를 관통한 패턴: 신뢰받던 경로가 공격 경로로

2분기 데이터는 실제 악성코드 리서치 결과로도 뒷받침됩니다.

소나타입 리서치팀은 신뢰받는 패키지, 메인테이너, 의존성 관계, 설치 시점 워크플로우를 악용한 캠페인들을 다수 공개했습니다.

각 캠페인을 개별적으로 분석하기보다, 공통적으로 보여주는 패턴별로 정리해보겠습니다.

자가 전파형·메인테이너 표적형 악성코드의 진화

Shai-Hulud는 공격자가 신뢰받는 패키지를 전파 인프라로 바꿔놓은 대표적인 사례로 남아 있습니다.

6월 초, 소나타입 리서치팀은 수백 개의 npm 패키지에 영향을 미친 새로운 Shai-Hulud Miasma 웨이브를 추적했습니다. 이 캠페인은 일반적인 설치 스크립트 수준을 넘어 binding.gyp를 악용해 설치 시점에 실행되도록 설계됐으며, 이를 통해 개발자 및 CI/CD 데이터를 수집하고 토큰을 탈취하고 자격 증명을 검증한 뒤 추가 악성 아티팩트까지 게시했습니다.

 

공격자들은 방어자의 대응 패턴에 맞춰 진화하고 있습니다. 보안팀이 package.json 내 의심스러운 라이프사이클 스크립트만 살핀다면, 공격자는 실행 위치를 다른 곳으로 옮길 뿐입니다.

소나타입은 또한 개발자 머신에서 민감한 데이터를 탈취한 뒤, 탈취한 자격 증명을 이용해 추가로 손상된 패키지를 게시하는 자가 전파형 npm 악성코드 캠페인인 CanisterSprawl도 추적했습니다.

 

이제 자격 증명 탈취는 공격의 '끝'이 아닙니다. 최신 오픈소스 악성코드에서 탈취한 자격 증명은 다음 확산 수단이 될 수 있습니다.

 

의존성 관계 자체가 배포 수단으로 악용

2분기의 여러 캠페인은 공격자들이 패키지 매니저의 의존성 해석(resolve) 및 설치 방식을 어떻게 악용하는지 보여줬습니다.

디펜던시 컨퓨전을 활용한 176개 npm 패키지 캠페인에서 소나타입 연구진은 내부 의존성을 상대로 한 자동 해석 경쟁에서 승리하도록 설계된, 비정상적으로 높은 버전 번호를 가진 악성 패키지를 다수 발견했습니다.

이 악성코드는 호스트 환경을 파악하고, 플랫폼별 페이로드를 다운로드했으며, 환경 변수와 자격 증명, CI/CD 시크릿, 인증 토큰까지 수집했습니다.

 

easy-day-js 캠페인도 유사한 패턴을 따랐습니다. 공격자들은 신뢰받는 Mastra 패키지를 침해하고 악성 의존성을 추가했으며, 이로 인해 해당 패키지를 설치하면 easy-day-js도 함께 설치되고 실행됐습니다.

Atomic Arch는 이 패턴을 npm 바깥, 즉 방치된 Arch User Repository(AUR) 패키지로까지 확장했습니다. PKGBUILD를 수정해 악성 npm 의존성을 끌어오도록 만듦으로써, 이 캠페인은 자격 증명 탈취, 은폐, 안티디버깅, 데이터 유출까지 가능하게 했고, 결과적으로 여러 웨이브에 걸쳐 약 1,500개 패키지에 영향을 미쳤습니다.

 

이러한 캠페인들은 공격자가 굳이 개발자를 설득해 명백히 악성인 패키지를 설치하게 만들 필요가 없다는 점을 보여줍니다. 신뢰받는 의존성 관계 하나만 손상시켜도 충분합니다.

 

신뢰받는 패키지와 메인테이너는 여전히 고가치 표적

2분기에는 신뢰받는 패키지와 메인테이너 계정을 겨냥한 공격도 계속됐습니다.

PyTorch Lightning 사건에서 소나타입은 퍼블리셔 계정이 침해된 이후 인기 패키지 lightning의 악성 버전이 PyPI에 업로드된 경위를 보고했습니다. 이 악성 버전들은 개발자 자격 증명을 탈취하고, 탈취한 토큰으로 접근 가능한 저장소의 악성 버전을 다시 게시하도록 설계됐습니다.

 

또한 자격 증명 탈취, 신뢰받는 워크플로우를 통한 확산, 개발자 환경 노출을 노린 설치 시점 악성코드를 배포한 Red Hat Cloud Services 패키지 탈취 사건도 보고했습니다.

다른 탈취된 npm 패키지는 PolinRider와 연관된 악성코드(RAT) 배포를 시도했으며, 이를 통해 개발자 시스템과 CI/CD 파이프라인, 자격 증명이 노출됐습니다.

 

이러한 사건들은 메인테이너 및 퍼블리셔 보안이 왜 오픈소스 리스크의 핵심으로 남아 있는지를 보여줍니다. 일단 신뢰받는 패키지나 계정이 침해되면, 공격자는 그 신뢰성 자체를 물려받게 됩니다.

 

브랜드재킹은 여전히 유효한 신뢰 악용 기법

2분기에는 npm을 겨냥한 Lazarus Group의 브랜드재킹 활동도 확인됐습니다.

소나타입은 주간 다운로드 수가 최대 500회에 달하는 패키지를 포함해 수십 개 패키지가 연루된 캠페인을 보고했으며, 이들은 네이밍과 모방 전략을 활용해 정상적인 개발 환경에 속한 것처럼 보이도록 만들어졌습니다.

 

브랜드재킹은 2분기 데이터셋에서 트로이목마형 활동에 비해 건수 자체는 적지만, 개발자의 '당연한 가정'을 정확히 노린다는 점에서 여전히 위험합니다. 공격자들은 네이밍 컨벤션, 생태계 패턴, 조직 시그널, 패키지 관계를 모방해 악성 소프트웨어가 설치되도록 유도합니다.

 

방어자의 과제: 물량공세에 휘둘리지 않고 우선순위를 정하는 법

2026년 2분기의 데이터와 사건들은 악성 패키지의 '양'이 상당하더라도, 양 자체가 제대로 된 리스크 모델이 될 수 없다는 점을 보여줍니다.

가장 큰 카테고리에만 집중하면 이번 분기를 그저 'npm 저장소 남용'으로만 축소해 이해하게 됩니다. 마찬가지로 심각한 페이로드에만 집중하면, 악성 패키지가 확산될 수 있게 만드는 자동화, 신뢰 악용, 의존성 체인 행위를 놓치게 됩니다.

 

최신 오픈소스 악성코드는 애플리케이션 런타임을 기다리기보다 설치·빌드·CI/CD 자동화 과정에서 실행되는 경우가 많습니다. 전통적인 스캐닝은 실행이 이미 끝나고, 시크릿이 노출되고, 후속 활동이 이미 진행 중인 '너무 늦은 시점'에야 아티팩트를 탐지하는 경우가 많습니다. 따라서 보안 통제는 더 이른 시점에, 그리고 지속적으로 작동해야 합니다.

 

조직이 점검해야 할 사항은 다음과 같습니다.

  • 알려진 악성 컴포넌트가 내부 저장소에 유입되기 전에 차단합니다.
  • 직접 의존성뿐 아니라 전이(transitive) 의존성 전반에서 악성 행위 탐지를 자동화합니다.
  • 패키지 출처(provenance), 퍼블리셔 행동, 릴리스 무결성 검증을 강제합니다.
  • 내부 네임스페이스를 디펜던시 컨퓨전으로부터 보호합니다.
  • 개발자 또는 CI/CD 환경이 노출됐을 가능성이 있다면 자격 증명을 교체(rotate)합니다.
  • 전통적인 패키지 매니저뿐 아니라 AI·ML 아티팩트까지 소프트웨어 공급망 거버넌스 범위를 확장합니다.

 

규모가 위협이 될 때

 

2026년 2분기는 단순히 악성 패키지 수가 늘어난 것을 넘어, 오픈소스 악성코드가 얼마나 산업화됐는지를 명확히 보여준 시기였습니다.

공격자들은 npm에 활동을 집중시키면서도 생태계를 넘나드는 기법을 계속 정교화하고 있습니다.

이들은 신뢰받는 패키지, 메인테이너, 의존성, 설치 동작을 악용하고, 탈취한 자격 증명을 이용해 피해자를 공격하고 소프트웨어 공급망을 통해 확산됩니다.

데이터는 npm에 스포트라이트를 비추지만, 실제 위협 지형은 훨씬 더 넓습니다. 공격자들은 시스템적인 신뢰, 자동화, 의존성 해석 구조 자체를 악용하고 있습니다. 방어자는 악성 패키지를 더 이상 개별적인 아티팩트로만 취급해서는 안 됩니다.

 

오픈소스는 여전히 현대 소프트웨어 개발을 가속하는 강력한 도구입니다.

하지만 2026년 2분기는 오픈소스를 강력하게 만드는 바로 그 '규모'가, 동시에 공격자에게도 매력적인 표적이 된다는 사실을 보여줍니다.

신뢰받던 경로가 공격 경로가 되는 순간, 보안은 더 빠르게, 더 이른 시점에, 더 많은 맥락(context)을 갖고 움직여야 합니다.

 


 

출처

소나타입 블로그 : Q2 2026 Open Source Malware Index: Attackers Abuse Developer Trust