공지사항

Security Insights & Trends

이더리움 악용한 npm 해킹, 배후는 APT 공격 대표주자 북한 라자루스?!

Raoul16 2026. 8. 19. 10:00

이더리움 악용한 npm 해킹,  배후는 APT 공격 대표주자 북한 라자루스?!

 

안녕하세요,

그로메트릭 입니다. 🐸

 

최근 npm 생태계에서 또 하나의 심상치 않은 공급망 공격이 포착됐습니다.

 

소나타입 리서치랩이 발견한 이번 사건은 npm 패키지 6종이 동일한 악성 페이로드를 유포한 사례로, sonatype-2026-005899, sonatype-2026-005901로 각각 추적되고 있습니다. 그중 3개는 원래 신뢰받던 정상 패키지가 하이재킹된 것이고, 나머지 3개는 처음부터 악성 코드를 품고 게시된 신규 패키지입니다.

 

더 눈길을 끄는 건 공격 방식입니다. 이 악성코드는 놀랍게도 이더리움 블록체인 트랜잭션을 명령제어(C2) 서버 주소를 찾는 용도로 활용합니다. 특정 지갑 주소의 최근 송금 내역을 조회해 수신자 주소를 IP로 디코딩하는 방식인데, 이는 북한(DPRK) 배후로 알려진 'Contagious Interview' 캠페인에서 확인된 'NullReceiver' 기법과 동일합니다. 게다가 여러 이더리움 RPC 제공자에 요청을 분산시키고 실패 시 대체 경로로 전환하는 등, 공격자는 탐지를 피하고 C2 인프라를 안정적으로 유지하기 위한 장치까지 마련해뒀습니다.

 

신뢰하던 오픈소스 패키지 하나가 사내 개발 환경 전체의 자격증명 탈취와 2차 침해로 이어질 수 있다는 점에서, 이는 단순한 기술 이슈가 아니라 실질적인 비즈니스 리스크입니다. npm 공급망을 겨냥한 국가 배후 공격이 갈수록 정교해지는 지금, 오늘 아티클에서는 이번 공격의 상세 기술 흐름과 대응 방안을 함께 살펴보겠습니다.

 

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

 


 

요약

  • 소나타입 리서치랩은 동일한 악성 페이로드를 유포하는 npm 패키지 6종을 확인했습니다. 이 중 3개는 하이재킹된 정상 패키지이고, 나머지 3개는 별도로 게시된 악성 패키지로, 각각 sonatype-2026-005899, sonatype-2026-005901로 추적되고 있습니다.
  • 이 악성코드는 OpenSourceMalware가 확인한 것과 동일한 이더리움 지갑 주소를 사용하며, 이는 북한(DPRK) 배후로 알려진 'Contagious Interview' 캠페인과 연관된 활동입니다. 추가 자바스크립트 페이로드를 호스팅하는 인프라를 찾기 위해 'NullReceiver' 기법을 활용합니다.
  • 영향을 받은 버전을 설치한 조직은 즉시 해당 패키지를 제거하고, 후속 페이로드 실행이나 침해 흔적이 없는지 환경을 조사해야 합니다.

2026년 8월 10일, 소나타입 리서치랩은 동일한 악성 페이로드를 담은 npm 패키지 6종을 확인했습니다. 이 중 3개는 정상적으로 운영되던 패키지가 하이재킹된 것이고, 나머지 3개는 처음부터 악성코드가 포함된 상태로 게시된 패키지입니다.

 

이 페이로드는 이더리움 블록체인 트랜잭션을 이용해 추가 악성 자바스크립트를 호스팅하는 인프라의 위치를 찾아냅니다. 소나타입 연구진은 이 6개 패키지가 최근 북한(DPRK) 배후의 'Contagious Interview' 캠페인과 연관된 활동에서 사용된 것과 동일한 이더리움 지갑 주소를 사용한다는 사실을 확인했습니다. OpenSourceMalware는 이 블록체인 기반 명령제어(C2) 기법에 'NullReceiver'라는 이름을 붙였으며, Contagious Interview는 Lazarus APT 그룹과 연계된 더 광범위한 캠페인을 지칭합니다.

 

npm 패키지 6종, 동일한 악성코드를 유포하다

소나타입의 Adam Reynolds에 따르면, 영향을 받은 패키지는 크게 두 그룹으로 나뉩니다.

첫 번째 그룹은 원래 정상적인 npm 패키지였으나 악성 버전이 게시되도록 하이재킹된 3개로, sonatype-2026-005899로 추적됩니다.

  • @kolbo/mcp@1.57.1
  • agentgui@1.0.1127
  • godot-kit@1.0.1786316795

하이재킹된 패키지의 경우, 페이로드는 이미 패키지 내에 존재하던 파일, agentgui의 database.js 파일 마지막 줄에 삽입된 것이 확인됐습니다.

출처: 소나타입 블로그

 

이후 연구진은 동일한 페이로드를 담은 추가 npm 패키지 3개를 확인했는데, 이는 기존 패키지의 하이재킹이 아니기 때문에 sonatype-2026-005901로 별도 추적되고 있습니다.

  • envpack-conf@1.0.1
  • postcss-initial-provider@3.0.4
  • tailwindcss-motion-advanced@1.0.1

 

왜 하필 블록체인인가: 악성코드의 다음 행보

npm에 침투한 경로는 서로 다르지만, 6개 패키지 모두 동일한 악성 페이로드를 담고 있으며 동일한 지갑 주소와 연관되어 있습니다.

 

악성코드가 실행되면 로더는 해당 지갑에서 발생한 특정 아웃바운드(송금) 트랜잭션을 이더리움 네트워크에 조회하고, 그 트랜잭션의 수신자 주소에서 바이트 값을 읽어옵니다. 이 바이트 값은 두 개의 IPv4 주소로 디코딩되며, 악성코드는 이를 각각 주(primary), 보조(secondary) 명령제어(C2) 엔드포인트로 사용합니다. 즉 이더리움 거래는 악성 프로그램이 다음에 연결할 위치를 알려주는 지침을 전달하는 임시 저장소 역할을 합니다.

 

이번에 소나타입이 관찰한 구현체는 기존에 알려진 NullReceiver보다 더 정교합니다.

로더는 여러 이더리움 RPC(원격 프로시저 호출) 제공자에 동시에 요청을 보내 경쟁시키고, 배치(batched) JSON-RPC 호출을 활용하며, 필요시 Blockscout API로 폴백해 해당 트랜잭션을 찾아냅니다. 한 가지 방법이 막히더라도 C2 인프라를 복구할 수 있는 여러 경로를 확보해둔 것입니다.

 

C2 인프라 위치를 확인한 로더는 /0x/cls, /0x/ls 두 엔드포인트에서 추가 단계의 페이로드를 내려받으려 시도합니다. 일반적인 HTTP GET 응답으로 인코딩된 페이로드를 받거나, 이것이 실패하면 HEAD 요청을 보내 X-Payload-B64 응답 헤더에서 페이로드를 복구합니다. 이렇게 받은 페이로드는 Base64 디코딩과 XOR 디코딩을 거쳐 실행됩니다. /0x/cls에서 받은 페이로드는 현재 Node.js 프로세스 내에서 eval()로 바로 실행될 수 있고, 다운로드된 다른 단계들은 별도의 Node.js 자식 프로세스로 실행될 수도 있습니다.

 

같은 페이로드, 두 갈래로 나뉜 npm 침투 경로

이번 6개 패키지 사례는 동일한 악성코드가 서로 다른 두 가지 방식으로 유포될 수 있음을 보여줍니다. 하나는 개발자가 이미 신뢰하고 있는 패키지를 하이재킹하는 방식이고, 다른 하나는 악성 페이로드 전달만을 목적으로 새 패키지를 게시하는 방식입니다.

 

하이재킹된 3개 패키지의 경우, 정상적인 기능은 대부분 그대로 유지된 채 악성 로더가 정상 파일 끝부분에 추가되는 형태였습니다.

이는 앞서 확인된 북한 배후의 PolinRider 캠페인에서 나타난 것과 동일한 수법입니다.

 

독립적으로 게시된 패키지들 역시 겉보기에는 정상적인 기능을 담고 있습니다. envpack-conf는 패키지 설정 관련 코드를, postcss-initial-provider는 정상적인 PostCSS 플러그인 코드를 포함하고 있으며, tailwindcss-motion-advanced는 utils.min.js 파일 안에 로더를 숨겨두었습니다.

 

익숙한 북한 배후 기법과의 연결고리

이번 6개 패키지는 북한(DPRK) 배후의 Contagious Interview 캠페인에서 사용된 블록체인 기반 명령제어 기법인 NullReceiver와 매우 유사한 수법을 사용합니다. 이 기법은 최근 OpenSourceMalware가 bianira-ui, fluid-type-ui 두 npm 패키지에서 처음 포착했습니다.

 

해당 사례에서 악성코드는 공격자가 통제하는 이더리움 지갑을 조회해 가장 최근 발생한 아웃바운드 트랜잭션의 수신자 주소를 읽고, 이를 C2 IP로 디코딩한 뒤 접속하는 방식이었습니다. OpenSourceMalware는 이 패키지들을 북한 Contagious Interview 캠페인 소행으로 지목했습니다.

 

소나타입 리서치랩은 이번에도 하이재킹된 패키지, 블록체인 기반의 후속 인프라 탐색, 패키지 파일에 내장되거나 함께 배포된 악성코드라는 유사한 수법을 확인했습니다.

 

우리 빌드에 해당 npm 패키지가 있는지 지금 바로 확인하세요

개발팀과 보안팀은 자사 환경에서 이번에 확인된 6개 npm 패키지가 존재하는지 점검하고, 영향을 받은 버전이 있다면 즉시 제거해야 합니다.

하이재킹된 3개 패키지는 개발자가 이미 신뢰하고 인지하고 있던 패키지를 통해 악성코드가 유입되었다는 점에서 특히 놓치기 쉬운 위험입니다. 나머지 3개의 신규 악성 패키지 사례는 동일한 페이로드가 새로 게시된 패키지를 통해서도 유입될 수 있음을 보여줍니다.

 

영향을 받은 패키지가 설치된 이력이 있다면, 후속 자바스크립트 실행 등 침해 흔적이 있는지 반드시 조사해야 합니다.

소나타입 리서치랩은 관련 npm 활동을 계속 조사 중이며, 추가 패키지나 인프라가 확인되는 대로 조사 결과를 업데이트할 예정입니다.

 


출처

소나타입 블로그 : Six npm Packages Use Ethereum Transactions to Retrieve Malicious Payloads