최근 보안 업계에서 아주 흥미롭지만 동시에 무시무시한 소식이 전해졌습니다.
바로 Shai-hulud라는 이름의 자기복제형 악성코드가 오픈소스 소프트웨어 생태계 속으로 파고들었다는 거예요.
이름부터 ‘듄(Dune)’의 거대한 샌드웜에서 따왔다고 하니, 뭔가 심상치 않죠? 🏜️
이 악성코드는 단순히 개발자 한두 명을 노리는 수준이 아니라, 수백 개의 오픈소스 패키지로 퍼져 나가며
계정 탈취, 토큰 도난, 프로젝트 감염을 이어가고 있습니다.
게다가 공격자가 매번 손을 쓰지 않아도 알아서 번식하는 웜 형태라 더욱 무섭습니다. 😨
🌊 Shai-hulud의 등장 배경
Shai-hulud가 처음 포착된 건 2025년 9월 15일, 보안 기업 ReversingLabs의 분석에 의해서였어요.
흥미로운 점은, 불과 며칠 전에도 유명 개발자 Qix의 NPM 계정이 해킹되면서 18개 인기 패키지가 오염된 사건이 있었는데요.
그때도 수십억 회 다운로드되는 코드가 잠깐 동안 암호화폐 탈취용 악성코드로 변질되었습니다.
Shai-hulud는 이보다 훨씬 더 자동화되고 확산력이 강한 방식으로 나타났다는 점에서 위험 수위가 높습니다.
🔁 Shai-hulud의 자기복제 메커니즘
이 웜의 전파 방식은 꽤나 치밀합니다.
- 초기 감염
- 누군가가 오염된 오픈소스 컴포넌트를 내려받습니다.
- 해당 코드가 실행되면, 정보 탈취기(Infostealer)가 동작해 개발자의 환경에서 토큰, 크리덴셜, 비밀 키 등을 수집합니다.
- NPM 계정 장악
- 탈취한 접근 권한을 이용해 피해자의 NPM 계정에 들어갑니다.
- 피해자가 관리하는 다른 패키지들을 찾아냅니다.
- 자기 복제 및 확산
- 각 패키지의 새로운 버전을 만들면서, 그 안에 자신을 심어 넣습니다.
- postinstall 스크립트를 추가해, 누군가 패키지를 설치하면 자동으로 악성코드(bundle.js)가 실행되도록 설정합니다.
- 끝없는 전파
- 새롭게 감염된 개발자의 계정을 다시 장악 → 또 다른 패키지 오염 → 또 다른 사용자 감염…
- 이 과정이 무한 반복되며 웜처럼 번식합니다.
📌 덤으로, Shai-hulud는 Trufflehog라는 비밀 탐색 툴까지 몰래 설치해 환경 속에 숨은 토큰을 싹 긁어간다고 해요.
게다가 비공개 저장소를 복제해 공개로 바꾸려는 시도도 관찰됐습니다.
이는 소스 코드 탈취와 취약점 찾기를 노린 행동으로 보입니다.
🧩 감염 규모와 피해 범위
ReversingLabs는 Shai-hulud 캠페인이 이미 700개 이상의 저장소에 영향을 미쳤을 것으로 추정합니다.
특히 피해자는 특정 산업군에 국한되지 않고 매우 다양해요.
- 기술 스타트업의 창업자와 CTO
- 소프트웨어 개발 서비스를 제공하는 기업
- 비영리 단체 소속 개발자
- 카지노 하드웨어·소프트웨어 개발사
- 오피스 프로그램 제작사
- AI 중심 스타트업 개발자들
- 보안 벤더(심지어 유명 EDR 업체까지 포함)
- 대학생 개발자 👩💻
즉, 오픈소스 의존도가 높은 누구나 피해자가 될 수 있다는 거죠.
🕵️♂️ 감염 여부 확인 방법
ReversingLabs는 개발자들에게 다음을 확인하라고 권장했습니다.
- NPM 사용자 계정 활동 페이지 확인
- 새로운 저장소가 생겼는데 설명에 “Shai-hulud Migration”이 있는지 체크
- 새로 생성된 브랜치 이름 중 “shai-hulud”가 있는지 검색
만약 이런 흔적이 보인다면, 이미 계정이 장악됐을 가능성이 높습니다. 😱
⚠️ 왜 Qix 사건보다 심각한가?
ReversingLabs의 소프트웨어 아키텍트 Tomislav Peričin은 이번 사건이 Qix 사건보다 훨씬 위험하다고 경고했습니다. 그 이유는:
- 단순히 암호화폐만 노리는 게 아니라, NPM/GitHub/AWS/GCP 비밀키 전부 탈취
- 노출된 비밀키가 어디에 쓰일지, 어떤 후속 공격으로 이어질지 예측 불가능
- 오픈소스 생태계 전체로 끝없이 확산 가능
즉, 이번 공격은 단순 해킹 사건이 아니라 소프트웨어 공급망 전체를 잠식할 수 있는 웜 캠페인이라는 거예요.
🛡️ 대응과 예방 방법
그렇다면 개발자와 기업들은 어떻게 대응해야 할까요?
- 비밀키 즉시 교체(rotate) – 노출 가능성이 있다면 서둘러 새 키로 갱신해야 합니다.
- NPM 계정 이중 인증(2FA) – 계정이 뚫리면 프로젝트 전부가 위험합니다.
- 오픈소스 의존성 점검 – 정기적으로 npm audit, snyk, safety, pip-audit 같은 도구로 점검하기.
- 의심스러운 저장소 활동 모니터링 – 갑자기 새로운 브랜치가 생기거나 설명이 바뀌면 주의!
- 보안 커뮤니티와의 신속한 정보 공유 – 감염 확산을 막기 위해서는 빠른 공조가 필수입니다.
Peričin도 강조했듯이, “보안 커뮤니티가 빠르게 대응한다면 웜의 확산 고리를 끊을 수 있다”고 합니다. 지금이 바로 속도를 내야 할 때라는 거죠.
🐍 마무리
Shai-hulud 웜 사건은 오픈소스 생태계가 얼마나 취약한 연결망 위에 서 있는지를 보여주는 대표적 사례입니다.
한 명의 개발자가 감염되면, 그 파급력은 전 세계 수많은 프로젝트로 확산될 수 있거든요.
앞으로의 과제는 명확합니다.
- 개발자 개인은 계정 보안과 비밀 관리에 더욱 신경 써야 하고,
- 기업은 공급망 보안 체계를 강화하며,
- 보안 커뮤니티는 신속한 위협 인텔리전스를 공유해야 합니다.
Shai-hulud는 우리에게 “오픈소스 보안은 모두의 책임”이라는 메시지를 강력하게 던지고 있습니다.
'CyberSecurity > Cyber Risk Insights🔐' 카테고리의 다른 글
| MuddyWater가 더 날카로워졌다 — 맞춤형 백도어와 정교한 스피어피싱의 시대 🕵️♂️🔥 (0) | 2025.09.18 |
|---|---|
| Microsoft & Cloudflare, RaccoonO365 피싱 서비스 무너뜨리다! 🚫🦝 (0) | 2025.09.18 |
| 북한 해킹 그룹 Kimsuky, ChatGPT로 가짜 군인 신분증까지 만든다 😨 (0) | 2025.09.18 |
| 자율 해킹 봇, 어떻게 만들어질까? 🤖💻 (0) | 2025.09.13 |
| 🔐 Palo Alto Networks User-ID Credential Agent 취약점 (CVE-2025-4235) 분석 (0) | 2025.09.12 |

