본문으로 건너뛰기

샤이 훌루드(Shai-Hulud) 공격: 공급망 웜이 암호화폐 개발자와 사용자로부터 5,800만 달러를 탈취한 방법

· 약 9 분
Dora Noda
Software Engineer

2025년 크리스마스 이브, 암호화폐 업계의 대부분이 휴가를 즐기고 있을 때 공격자들은 트러스트 월렛 (Trust Wallet)의 크롬 확장 프로그램에 악성 업데이트를 푸시했습니다. 48시간 만에 2,520개의 지갑에서 850만 달러가 사라졌습니다. 수천 명의 사용자 시드 구문 (seed phrases)이 일상적인 텔레메트리 데이터로 위장하여 조용히 수집되었습니다. 하지만 이것은 단독 사건이 아니었습니다. 이는 몇 주 동안 암호화폐 개발 생태계를 통해 확산되고 있었던 공급망 공격 (supply chain attack)의 정점이었습니다.

듄 (Dune)의 모래 벌레 이름을 딴 샤이 훌루드 (Shai-Hulud) 캠페인은 2025년 가장 공격적인 npm 공급망 공격을 상징합니다. 700개 이상의 npm 패키지를 오염시켰고, 27,000개의 GitHub 리포지토리를 감염시켰으며, 487개 조직에 걸쳐 약 14,000개의 개발자 비밀 정보 (developer secrets)를 노출시켰습니다. 총 피해액은 5,800만 달러 이상의 암호화폐 탈취로, 암호화폐 역사상 개발자를 대상으로 한 가장 막대한 피해를 입힌 공격 중 하나가 되었습니다.

공급망 웜의 해부

사용자가 악성 소프트웨어를 다운로드하도록 유도하는 일반적인 맬웨어와 달리, 공급망 공격은 개발자가 이미 신뢰하고 있는 도구를 오염시킵니다. 샤이 훌루드 캠페인은 거의 모든 암호화폐 지갑, DeFi 프론트엔드 및 Web3 애플리케이션을 포함하여 대부분의 자바스크립트 (JavaScript) 개발을 구동하는 패키지 관리자인 npm을 무기화했습니다.

이 공격은 2025년 9월 첫 번째 물결로 시작되어 약 5,000만 달러의 암호화폐 도난을 초래했습니다. 그러나 작전의 진정한 정교함을 보여준 것은 11월의 "두 번째 강림 (The Second Coming)"이었습니다. 11월 21일부터 23일 사이, 공격자들은 Zapier, ENS Domains, AsyncAPI, PostHog, Browserbase, Postman 등을 포함한 주요 프로젝트의 개발 인프라를 침해했습니다.

전파 메커니즘은 정교하면서도 치명적이었습니다. 샤이 훌루드가 정상적인 npm 패키지를 감염시키면, preinstall 스크립트에 의해 트리거되는 setup_bun.jsbun_environment.js라는 두 개의 악성 파일을 주입합니다. 설치 후 활성화되는 전통적인 맬웨어와 달리, 이 페이로드는 설치가 완료되기 전, 심지어 설치가 실패하더라도 실행됩니다. 개발자가 무언가 잘못되었다는 것을 깨달을 때쯤에는 이미 자격 증명이 탈취된 상태입니다.

이 웜은 감염된 개발자가 관리하는 다른 패키지를 식별하여 악성 코드를 자동으로 주입하고 새로운 감염 버전을 npm 레지스트리에 게시합니다. 이러한 자동화된 전파를 통해 맬웨어는 공격자의 직접적인 개입 없이도 기하급수적으로 확산될 수 있었습니다.

개발자 비밀 정보에서 사용자 지갑까지

오염된 npm 패키지와 트러스트 월렛 해킹 사이의 연결 고리는 공급망 공격이 어떻게 개발자로부터 최종 사용자에게 파급되는지 보여줍니다.

트러스트 월렛의 조사 결과에 따르면, 11월 샤이 훌루드 발생 기간 동안 개발자의 GitHub 비밀 정보가 노출된 것으로 나타났습니다. 이 노출로 인해 공격자는 브라우저 확장 프로그램 소스 코드와 중요하게는 크롬 웹 스토어 (Chrome Web Store) API 키에 접근할 수 있게 되었습니다. 이러한 자격 증명을 확보한 공격자들은 트러스트 월렛의 내부 릴리스 프로세스를 완전히 우회했습니다.

2025년 12월 24일, 트러스트 월렛 크롬 확장 프로그램의 2.68 버전이 크롬 웹 스토어에 등장했습니다. 이는 트러스트 월렛 개발자가 아닌 공격자에 의해 게시된 것이었습니다. 악성 코드는 확장 프로그램에 저장된 모든 지갑을 순회하며 각 지갑에 대해 니모닉 구문 (mnemonic phrase) 요청을 트리거하도록 설계되었습니다. 사용자가 비밀번호나 생체 인식으로 인증했는지 여부와 관계없이, 시드 구문은 정상적인 분석 데이터로 위장하여 공격자가 제어하는 서버로 조용히 유출되었습니다.

도난당한 자금의 내역은 다음과 같습니다: 비트코인 약 300만 달러, 이더리움 300만 달러 이상, 그리고 솔라나 및 기타 토큰의 소량 금액. 며칠 만에 공격자들은 중앙화 거래소를 통해 자금을 세탁하기 시작했습니다. ChangeNOW로 330만 달러, FixedFloat으로 34만 달러, 그리고 KuCoin으로 44만 7천 달러가 전송되었습니다.

데드맨 스위치 (Dead Man's Switch)

아마도 가장 우려되는 점은 샤이 훌루드 맬웨어의 "데드맨 스위치" 메커니즘일 것입니다. 만약 웜이 GitHub이나 npm에 인증할 수 없게 되어 전파 및 유출 채널이 차단되면, 사용자 홈 디렉토리의 모든 파일을 삭제합니다.

이 파괴적인 기능은 여러 목적을 수행합니다. 탐지 시도를 방해하고, 공격자의 흔적을 감추는 혼란을 야기하며, 방어자가 명령 및 제어 (C&C) 인프라를 차단하려고 할 때 압박 수단이 됩니다. 적절한 백업을 유지하지 않은 개발자의 경우, 정화 시도가 실패하면 자격 증명 탈취에 더해 치명적인 데이터 손실을 입을 수 있습니다.

공격자들은 심리적인 정교함도 보여주었습니다. 트러스트 월렛이 침해 사실을 발표하자, 동일한 공격자들은 뒤따르는 패닉을 악용하여 피싱 캠페인을 시작했습니다. "지갑 확인"을 위해 사용자의 복구 시드 구문을 입력하라는 가짜 트러스트 월렛 브랜드 웹사이트를 만들었습니다. 일부 피해자들은 두 번이나 피해를 입었습니다.

내부자 소행 의혹

바이낸스 (Binance)의 공동 창립자 창펑 자오 (CZ)는 트러스트 월렛 탈취가 내부자 또는 배포 권한에 이전에 접근했던 누군가에 의해 수행되었을 가능성이 "매우 높다"고 암시했습니다. 트러스트 월렛 자체 분석에 따르면 공격자들이 2025년 12월 8일 이전에 개발자 장치를 제어하거나 배포 권한을 획득했을 수 있다고 제안합니다.

보안 연구원들은 국가 차원의 개입 가능성을 시사하는 패턴에 주목했습니다. 크리스마스 이브라는 타이밍은 보안 팀의 인력이 부족한 연휴 기간에 공격하는 흔한 지능형 지속 위협 (APT) 수법을 따릅니다. 샤이 훌루드 캠페인의 기술적 정교함과 규모, 그리고 신속한 자금 세탁은 일반적인 범죄 조직을 넘어서는 자원이 투입되었음을 시사합니다.

브라우저 확장 프로그램이 유독 취약한 이유

트러스트 월렛 (Trust Wallet) 사건은 암호화폐 보안 모델의 근본적인 취약점을 부각시킵니다. 브라우저 확장 프로그램은 웹 페이지를 읽고 수정하며, 로컬 스토리지에 접근하고, 암호화폐 지갑의 경우에는 수백만 달러의 자산에 접근할 수 있는 키를 보유하는 등 막대한 권한을 가지고 작동합니다.

공격 표면은 매우 넓습니다:

  • 업데이트 메커니즘: 확장 프로그램은 자동으로 업데이트되며, 단 한 번의 오염된 업데이트가 모든 사용자에게 도달합니다.
  • API 키 보안: Chrome 웹 스토어 API 키가 유출되면 누구나 업데이트를 게시할 수 있습니다.
  • 신뢰 가정: 사용자는 공식 스토어에서 제공하는 업데이트가 안전하다고 가정합니다.
  • 연휴 타이밍: 연휴 기간 동안 보안 모니터링이 줄어들어 공격자가 더 오랜 시간 탐지되지 않고 머물 수 있습니다.

이것은 암호화폐 사용자를 대상으로 한 최초의 브라우저 확장 프로그램 공격이 아닙니다. 이전의 사례로는 VS Code 확장 프로그램을 겨냥한 GlassWorm 캠페인과 FoxyWallet Firefox 확장 프로그램 사기 사건이 있었습니다. 하지만 트러스트 월렛 침해 사고는 금전적 규모 면에서 가장 컸으며, 공급망 침해가 어떻게 확장 프로그램 공격의 파급력을 증폭시키는지 입증했습니다.

바이낸스의 대응과 SAFU 선례

바이낸스는 피해를 입은 트러스트 월렛 사용자들이 SAFU (사용자 안전 자산 펀드)를 통해 전액 보상받을 것이라고 확인했습니다. 이 펀드는 2018년 거래소 해킹 이후 설립되었으며, 보안 사고로 인한 사용자 손실을 보전하기 위해 거래 수수료의 일부를 예비비로 적립해 둡니다.

보상 결정은 중요한 선례를 남기며, 책임 할당에 대한 흥미로운 질문을 던집니다. 트러스트 월렛은 해당 기간에 단순히 지갑을 열었을 뿐인 사용자의 직접적인 잘못 없이 침해되었습니다. 하지만 근본 원인은 개발자 인프라를 무너뜨린 공급망 공격이었고, 이는 다시 npm의 광범위한 생태계 취약성으로 인해 가능했습니다.

트러스트 월렛의 즉각적인 대응에는 2주 동안 새로운 버전 출시를 차단하기 위한 모든 릴리스 API 만료 처리, 악성 데이터 유출 도메인을 등록 기관에 신고(즉시 정지 처리), 깨끗한 버전인 2.69 버전 배포 등이 포함되었습니다. 12월 24일에서 26일 사이에 확장 프로그램 잠금을 해제했던 사용자들에게는 즉시 새로운 지갑으로 자금을 옮길 것이 권고되었습니다.

크립토 생태계를 위한 교훈

Shai-Hulud 캠페인은 트러스트 월렛을 넘어 확장되는 시스템적 취약성을 드러냅니다:

개발자를 위한 제언

의존성을 명시적으로 고정하십시오. npm install 시 임의의 코드가 실행될 수 있기 때문에 사전 설치 스크립트 악용이 가능해집니다. 알려진 안전한 버전으로 고정하면 자동 업데이트를 통해 오염된 패키지가 도입되는 것을 방지할 수 있습니다.

비밀 정보가 노출된 것으로 간주하십시오. 2024년 11월 21일에서 12월 25일 사이에 npm 패키지를 가져온 모든 프로젝트는 자격 증명이 노출되었다고 가정해야 합니다. 이는 npm 토큰, GitHub PAT, SSH 키 및 클라우드 서비스 제공업체 자격 증명을 취소하고 재생성해야 함을 의미합니다.

적절한 비밀 관리 시스템을 구현하십시오. 앱 스토어 게시와 같은 중요 인프라를 위한 API 키는 프라이빗 레포지토리라 할지라도 절대 버전 관리 시스템에 저장해서는 안 됩니다. 하드웨어 보안 모듈(HSM)이나 전용 비밀 관리 서비스를 사용하십시오.

피싱 방지 MFA를 강제하십시오. 표준 2단계 인증은 정교한 공격자에 의해 우회될 수 있습니다. YubiKey와 같은 하드웨어 키는 개발자 및 CI / CD 계정에 대해 더 강력한 보호를 제공합니다.

사용자를 위한 제언

지갑 인프라를 다각화하십시오. 모든 자금을 브라우저 확장 프로그램에 보관하지 마십시오. 하드웨어 지갑은 소프트웨어 취약점으로부터 격리 환경을 제공하며, 잠재적으로 침해된 브라우저에 시드 구문을 노출하지 않고도 트랜잭션에 서명할 수 있습니다.

업데이트가 악성일 수 있다고 가정하십시오. 소프트웨어를 편리하게 만드는 자동 업데이트 모델은 소프트웨어를 취약하게 만들기도 합니다. 보안이 중요한 확장 프로그램의 경우 자동 업데이트를 비활성화하고 새 버전을 수동으로 확인하는 것을 고려해 보십시오.

지갑 활동을 모니터링하십시오. 비정상적인 트랜잭션을 알리는 서비스를 사용하면 침해 사실을 조기에 인지하여 공격자가 지갑 전체를 비우기 전에 손실을 제한할 수 있습니다.

업계를 위한 제언

npm 생태계를 강화하십시오. npm 레지스트리는 Web3 개발의 핵심 인프라임에도 불구하고 웜(worm)과 같은 확산을 방지할 수 있는 많은 보안 기능이 부족합니다. 필수적인 코드 서명, 재현 가능한 빌드, 패키지 업데이트에 대한 이상 탐지 등은 공격자의 진입 장벽을 크게 높일 수 있습니다.

브라우저 확장 프로그램 보안을 재고하십시오. 확장 프로그램이 자동 업데이트되고 광범위한 권한을 갖는 현재의 모델은 막대한 자산을 보유하기 위한 보안 요구 사항과 근본적으로 양립할 수 없습니다. 샌드박스 실행 환경, 사용자 검토를 거친 지연 업데이트, 권한 축소 등이 도움이 될 수 있습니다.

사고 대응을 공조하십시오. Shai-Hulud 캠페인은 크립토 생태계 전반의 수백 개 프로젝트에 영향을 미쳤습니다. 더 나은 정보 공유와 조율된 대응이 있었다면 오염된 패키지가 식별됨에 따라 피해를 제한할 수 있었을 것입니다.

크립토 공급망 보안의 미래

암호화폐 산업은 역사적으로 스마트 컨트랙트 감사, 거래소 콜드 스토리지, 사용자 대상 피싱 방지에 보안 노력을 집중해 왔습니다. Shai-Hulud 캠페인은 가장 위험한 공격이 크립토 사용자가 직접 상호작용하지는 않지만 그들이 사용하는 모든 애플리케이션의 기반이 되는 개발자 도구 및 인프라에서 올 수 있음을 보여줍니다.

Web3 애플리케이션이 복잡해짐에 따라 의존성 그래프도 커지고 있습니다. 각 npm 패키지, 각 GitHub 액션, 각 CI / CD 통합은 잠재적인 공격 경로를 나타냅니다. Shai-Hulud에 대한 업계의 대응은 이것이 일회성 경고로 끝날지, 아니면 크립토 인프라에 대한 공급망 공격 시대의 시작이 될지를 결정할 것입니다.

현재로서는 공격자들의 신원이 밝혀지지 않았습니다. 도난당한 트러스트 월렛 자금 중 약 280만 달러가 공격자의 지갑에 남아 있으며, 나머지는 중앙화 거래소와 크로스체인 브릿지를 통해 세탁되었습니다. 더 넓은 Shai-Hulud 캠페인의 초기 탈취액인 5,000만 달러 이상의 자금은 블록체인의 가명성 속으로 대부분 사라졌습니다.

샌드웜(sandworm)은 크립토의 기반 깊숙이 파고들었습니다. 이를 뿌리 뽑으려면 업계가 초창기부터 당연하게 여겨왔던 보안 가정들을 근본적으로 재고해야 할 것입니다.


안전한 Web3 애플리케이션을 구축하려면 견고한 인프라가 필요합니다. BlockEden.xyz는 모니터링 및 이상 탐지 기능이 내장된 엔터프라이즈급 RPC 노드와 API를 제공하여 개발자가 사용자에게 영향을 미치기 전에 비정상적인 활동을 식별할 수 있도록 돕습니다. 보안 중심의 기반 위에서 구축을 시작하려면 API 마켓플레이스를 살펴보세요.