NPM 패키지에서 악성 웜 빠르게 퍼지고 있어

NPM 패키지에서 악성 웜 빠르게 퍼지고 있어
Photo by SCARECROW artworks / Unsplash
💡
Editor's Pick
- 9월 중순에 갑자기 등장한 웜
- 자가 증식으로 빠르게 퍼지며 비밀 탈취 및 공개
- 개발자들에게 경고하는 속도보다 확산 속도 더 빨라

새로운 컴퓨터 웜이 NPM에서 발견됐다. 누군가 개발자들을 노린 공급망 공격을 시도한 것으로 보인다. 보안 업체 리버싱랩스(ReversingLabs)가 제일 먼저 발견해 세상에 알렸다. “웜의 이름은 샤이훌루드(Shai-hulud)로, 이는 해당 악성코드의 리포지터리 이름이기도 합니다. 듄(Dune)이라는 인기 SF 시리즈에 등장하는 캐릭터에서 따온 것으로 추정됩니다.”

샤이훌루드는 개발자의 NPM 계정을 탈취한 뒤, 그 개발자가 관리하는 각종 코드 패키지에 몰래 자기 자신을 삽임하는 방법으로 퍼진다고 리버싱랩스는 밝혔다. “일종의 자가 증식이라고 할 수 있습니다. NPM에 수많은 소프트웨어 프로젝트들이 존재하고, 이런 프로젝트들이 개발자들 사이에서 활발히 유통된다는 걸 생각했을 때, 샤이훌루드가 생각보다 빠르게 확산될 수 있습니다.”

샤이훌루드가 최초로 감염시킨 패키지는 rxnt-authentication인 것으로 분석됐다. 감염 일자는 9월 14일. “문제의 패키지를 관리하는 메인테이너의 계정 이름은 techsupportrxnt입니다. 샤이훌루드 공격자가 제일 먼저 감염시킨 게 바로 이 계정이며, 여기서부터 웜이 확산됐을 것으로 추정됩니다.” 리버싱랩스 측의 설명이다. 현재 감염이 확인된 NPM 패키지는 수백 개가 넘는다고 한다.

“저희가 추적을 하는 동안에도 계속해서 감염이 이어지고 있어요. 수많은 패키지들에서 샤이훌루드가 겉잡을 수 없이 발견되는 중입니다. 인기 높은 패키지들에도 진입 성공해, 한 주만에 수백만 건 다운로드가 되기도 합니다. ngx-bootstrap이라는 패키지의 경우 일주일 30만 건 이상, @ctrl/tinycolor는 일주일 220만 건 이상 다운로드 되는데, 둘 다 감염됐었습니다.”

이렇게 샤이훌루드가 퍼지는 건 NPM 생태계만의 문제가 아니다. 리포지터리를 노리는 건 이른 바 공급망 공격에 해당하는데, 이는 NPM에서부터 시작되는 공급망 전체가 위험하다는 의미다. 강에 비유하면 리포지터리는 수원에 해당하고, 여기서부터 수많은 강들이 형성된다고 볼 수 있다. 누군가 이 물의 근원을 오염시킴으로써, 파생되는 강들과, 그 강들에 서식하는 모든 생명들을 한꺼번에 위협한다고 상상해보라. 물은 자정이라도 되지, 사이버 공간의 코드들에는 그런 게 없다.

샤이훌루드가 하는 일
자가 증식은 웜의 한 가지 특성일 뿐이다. 자가 증식으로 퍼져가기만 해서는 큰 위협이 될 수 없다. 악성 기능이 있어야 웜으로서 경계 대상이 된다. 샤이훌루드는 어떤 악성 기능을 가지고 있을까? “정보 탈취 기능입니다. 특히 클라우드 서비스 관련 토큰과 비공개 코드 등 민감할 수 있는 정보를 훔치는 데 특화돼 있습니다.”

샤이훌루드 단독으로 자가 증식도 하고 정보도 훔치는 건 아니다. “샤이훌루드 자체는 자가 증식에 집중하고 있습니다. 다만 증식하면서 다른 해킹 도구를 추가로 설치합니다. 이름은 트러플호그(TruffleHog)로, 800종 이상의 비밀 정보를 찾아내는 기능을 가지고 있습니다. 트러플호그가 비밀을 탐지하면 다시 샤이훌루드가 이를 빼돌립니다.”

이것만이 아니다. 샤이훌루드는 비공개 코드 라이브러리를 원래 주인이나 관리자 몰래 전체 공개로 전환시키기도 한다. 즉 누군가 상업적 이유 혹은 그 외 다른 이유로 공개하지 않는 지적재산을 자기 마음대로 노출시키는 건데, 이는 경우에 따라 심각한 손해로 이어질 수 있다. 리버싱랩스가 추적했을 때 약 700개 이상의 코드 라이브러리가 이런 식으로 세상에 공개됐다고 한다.

최초 침투 방법, 아직 몰라
최초 감염자인 techsupportrxnt가 어떻게 침해됐는지는 아직 알 수 없다. 다만 어떤 서비스나 플랫폼에서든 계정 침해를 가능하게 하는 건 소셜 엔지니어링과 취약점 익스플로잇 공격이기에, 해당 계정 주인도 비슷하게 당했을 거라고 리버싱랩스 측은 추측한다.

하지만 샤이훌루드가 자가 증식하는 웜이기 때문에 최초 감염 방법을 추적하는 것은 그리 중요한 문제가 아니다. 지금도 증식하고 있다는 걸 서둘러 알리는 게 우선이다. “계속해서 NPM 생태계 개발자들에게 연락을 취하고 있습니다. 하지만 웜이 퍼지는 속도가 너무 빨라서 저희로서는 역부족이에요. 이 소식을 접한 모든 NPM 개발자 및 개발사들은 다시 한 번 리포지터리와 코드 내역, 관련 로그를 확인해야 할 겁니다. 의심스러운 활동이 있었다면 빠르게 조치를 취하세요.”

현재 샤이훌루드를 탐지하기 위한 코드가 "Crysknife : Shai-Hulud Malware Detection Tool"이라는 이름으로 배포되고 있다.

Crysknife - Shai-Hulud Malware Detection Tool(https://github.com/brunos3d/crysknife)

이는 스캔 기능을 통해 깃 레포지토리, NPM 계정, NPM 패키지 등의 악성코드 감염에 대해 검증할 수 있다. 관리하고 있는 NPM 패키지가 있거나 기타 검증이 필요한 곳이 있다면 관련 도구등을 활용하여 상황을 파악해보는 것도 효과적일 것으로 판단한다.


매주 수십억 회 다운로드 되는 NPM 패키지 침해되다
💡Editor’s Pick - 유명 NPM 계정 침해한 공격자 - 침해 후 수십억 회 씩 다운로드 되던 패키지 오염시켜 - 다행히 5분만에 탐지돼 막혔으나 위험은 끝나지 않아 어쩌면 최악의 공급망 사건이 될 뻔한 일이 벌어졌다. 보안 업체 아이키도시큐리티(Aikido Security)가 발견해 세상에 알린 것으로, 오랜 시간 npm에서 활동해 온 계정

Read more

당신은 해킹당하지 않았다. 그러나 이미 표적이 되었다

당신은 해킹당하지 않았다. 그러나 이미 표적이 되었다

데이터 브로커가 국가안보 문제가 된 이유 개인정보에 대한 보호는 개인의 권리에 관한 문제로 여겨져 왔다. 기업이 과도한 정보를 수집하거나, 해킹으로 인해 개인정보가 유출되거나, 사용자의 동의 없이 정보가 활용되는 사건이 발생할 때마다 사회는 프라이버시 침해를 이야기했다. 그래서 개인정보 보호 역시 개인의 사생활을 지키기 위한 장치로 이해하는 경우가 많다. 그러나 데이터 브로커(

By Donghwi Shin, Jin Kwak
교통은 멈추지 않았지만 복구는 공격당했다

교통은 멈추지 않았지만 복구는 공격당했다

💡Editor Pick - LA 메트로 사건의 핵심은 복구 계층이 공격 대상이 되었다는 점 - 공격자는 백업, 가상화 관리 환경, 운영 화면의 신뢰를 흔드는 방식으로 인프라의 회복력 겨냥 - 핵심 인프라 보안은 침입 차단을 넘어, 스스로 다시 일어설 수 있는 구조를 갖추어야 함 도시의 교통망이 사이버 공격을 받았을 때, 사람들은 가장

By Donghwi Shin
사이버보안 ETF는 보안 산업을 사는 상품인가, 디지털 리스크를 사는 상품인가

사이버보안 ETF는 보안 산업을 사는 상품인가, 디지털 리스크를 사는 상품인가

💡Editor Pick - 사이버보안 ETF는 해킹 사고 증가에 단순히 베팅하는 상품인가? - 같은 사이버보안 ETF라도 CIBR은 인프라를, BUG는 순수 보안 소프트웨어를, IHAK은 기술 생태계에 초점을 맞춤 - 보안은 필수 지출이 되었지만, 사이버보안 ETF는 디지털 리스크를 자본시장이 가격화한 상품 사이버보안은 더 이상 기업이 선택적으로 집행하는 IT 프로젝트가 아니다. 클라우드 전환, 생성형

By Donghwi Shin
SD-WAN의 심장이 열린 순간 : Cisco CVE-2026-20182가 보여준 ‘신뢰된 네트워크’의 붕괴

SD-WAN의 심장이 열린 순간 : Cisco CVE-2026-20182가 보여준 ‘신뢰된 네트워크’의 붕괴

💡Editor Pick - CVE-2026-20182 취약점의 핵심은 SD-WAN Control Plane의 신뢰 붕괴 - 공격자는 네트워크가 스스로를 신뢰하는 ‘피어(Peer)’로 전환 - 중앙집중형 네트워크 운영은 효율을 높였지만, 동시에 제어권도 한곳에 집중시켰다. 기업 네트워크는 지난 수년간 급격히 바뀌었다. 과거 기업들은 본사와 지점을 MPLS 같은 전용 회선으로 연결했고, 각 지점마다 개별 라우터와 방화벽

By Donghwi Shin