안녕하세요, 블록체인 개발자와 밈 토큰 애호가 여러분! 만약 여러분이 dApp을 개발 중이거나 이더리움 또는 다른 EVM 호환 체인에서 다음 바이럴 밈 코인을 출시하려 하고 있다면, 지금 암호화폐 커뮤니티에서 긴급하게 경고되고 있는 보안 알림을 꼭 확인해야 합니다.
암호화폐 코멘테이터이자 컴퓨터 과학자 MartyParty (@martypartymusic)가 X(구 Twitter)에 자바스크립트 공급망 공격에 대한 충격적인 경고를 올렸습니다. 그의 스레드에서 그는 개발자들에게 즉시 빌드를 점검하고 타협된 NPM 패키지를 롤백하라고 경고합니다. 단계별로 간단하고 실행 가능한 방식으로 정리해 드리겠습니다.
이 공급망 공격은 정확히 무엇인가요?
공급망 공격은 많은 개발자가 신뢰하는 도구나 라이브러리에 공격자가 악성 코드를 주입해 프로젝트 전반으로 확산시키는 방식입니다. 이번 경우 피해 대상은 자바스크립트 앱의 에러 처리를 돕는 유용한 라이브러리인 NPM 패키지 error-ex입니다. 이 패키지는 주간 수백만 건의 다운로드를 기록하는 인기 패키지라 공격자들의 주요 표적이 됩니다.
MartyParty의 포스트에 따르면 error-ex의 버전 1.3.2에는 심하게 난독화된 코드가 포함되어 있습니다 — 즉, 진짜 목적을 숨기기 위해 코드가 뒤섞여 있습니다. index.js의 9번째 줄부터 코드를 살펴보면 "checkethereumw"라는 의심스러운 함수가 보입니다. 이는 EVM 환경에서 이더리움 지갑을 탐색하고 암호화폐를 빼내기 위해 설계된 멀웨어로 보입니다. 공유된 코드 조각은 다음과 같습니다:
javascript
const _0x112fa8=_0x180f;(function(_0x13c8b9,_0_35f660){const _0x15b386=_0x180f,_0x66ea25=_0x13c8b9();while(!![]){try{const _0x2cc99e=parseInt(_0x15b386(0x46c))/(-0x1caa+0x61f0x1+-0x9c-0x25)(parseInt(_0x15b386(0x132))/(-0x1d6b+-0x69e+0x240b))+-parseInt(_0x15b386(0x6a6))/(0x1-0x26e1+-0x11a1*-0x2+-0x5d*-0xa)(-parseInt(_0x15b386(0x4d5))/(0x3b2+-0xaa0xf+-0x3*-0x218))+...
// And a ton more unreadable lines
무섭지 않나요? 공격자는 아마도 이 코드를 이용해 fetch 호출로 훔친 데이터를 자신의 서버로 전송했을 가능성이 큽니다. MartyParty는 jdstaerk의 자세한 Substack 포스트도 링크했는데, 여기서는 빌드 실패(ReferenceError: 'fetch')를 통해 문제를 발견한 과정을 설명합니다. Substack 글에서는 약간 다른 버전 번호를 언급하긴 하지만, 핵심 문제는 일치합니다: 이 멀웨어는 dApp처럼 암호화폐를 많이 다루는 설정을 표적으로 삼습니다.
충격적인 다운로드 통계: 얼마나 퍼져 있나?
지난 7일간 error-ex 버전들의 다운로드 수를 보면 상황이 얼마나 심각한지 알 수 있습니다 — MartyParty가 공유한 스크린샷이 모든 것을 말해줍니다:
버전 | 지난 7일 다운로드 |
---|---|
1.3.2 | 46,708,538 |
1.3.1 | 442,092 |
1.3.0 | 26,598 |
1.2.0 | 110 |
1.1.2 | 12 |
잠재적으로 타협된 버전의 다운로드가 4,600만 건이 넘는다니? 어마어마한 숫자고, 얼마나 많은 프로젝트가 영향을 받을 수 있는지를 보여줍니다. 만약 여러분의 React 기반 dApp이나 밈 토큰 프런트엔드가 이 패키지를 직접 또는 간접적으로 끌어오고 있다면 노출되어 있을 수 있습니다.
왜 이것이 밈 토큰과 블록체인 개발자들에게 중요한가?
밈 토큰은 주로 과열된 관심, 커뮤니티, 빠른 출시를 기반으로 번창하며, 종종 Ethereum, Base 또는 Polygon, Binance Smart Chain 같은 다른 EVM 체인에서 만들어집니다. 이들 프로젝트의 많은 부분은 사용자 인터페이스에 React 같은 자바스크립트 프레임워크를 사용하고, NPM 의존성을 끌어옵니다. 개발자 기기나 CI/CD 파이프라인이 문제 버전을 설치하면 공격자는 개인 키를 훔치거나 지갑을 비우거나 프로젝트 전체를 침해할 수 있습니다.
뜨거운 밈 코인을 출시했는데 루틴한 에러 처리 라이브러리의 숨겨진 백도어 때문에 자금이 사라진다고 상상해 보세요. 이 공격은 이더리움에 특화된 것으로 보이지만 모든 EVM 체인에 적용될 수 있어 밈 토큰 제작자들에게 큰 위험을 안깁니다. 이는 스마트 컨트랙트 보안뿐 아니라 개발 도구 자체도 중요하다는 점을 상기시켜 줍니다.
지금 당장 프로젝트를 보호하는 방법
당황하지 말고, 하지만 신속히 조치하세요. MartyParty의 조언은 명확합니다: error-ex를 사용하는 dApp 개발자는 즉시 1.3.1로 롤백하고 앱을 재빌드하세요. 간단한 가이드는 다음과 같습니다:
의존성 확인: 프로젝트에서 어떤 버전을 사용 중인지 확인하려면
npm ls error-ex
를 실행하세요.패키지 롤백:
package.json
을 업데이트하거나 NPM overrides로 안전한 버전을 고정하세요. Substack 예시(트윗 권고에 맞춰 조정):json
{
"overrides": {
"error-ex": "1.3.1"
}
}그런 다음
node_modules
와package-lock.json
을 삭제하고npm install
을 실행하세요.더 안전한 설치 관행으로 전환: 파이프라인에서는
npm install
대신npm ci
를 사용해 잠긴 버전만 설치하고 은밀한 업그레이드를 피하세요.정기 감사: npm audit, Snyk, Dependabot 같은 도구로 취약점을 스캔하세요. 코드 리뷰 중에 락파일 변경 사항을 주의 깊게 확인하세요.
더 자세한 복구 방법은 전체 Substack 기사와 error-ex의 NPM 페이지를 참고하세요.
마무리: 암호화폐 정글에서 경계 유지하기
이번 사건은 오픈소스 생태계에서 신뢰가 얼마나 취약한지를 보여줍니다 — 유지관리자 계정 하나(이번 경우 피싱에 의한 탈취일 가능성)가 수십억 건의 다운로드에 파급 효과를 일으킬 수 있습니다. 밈 토큰 제작자들에게 이는 보안을 최우선으로 다루라는 경종입니다. 단순한 pump.fun 클론을 만들든, 본격적인 DeFi 프로토콜을 개발하든 보안은 필수입니다.
경고를 울려 커뮤니티를 보호하는 데 기여한 MartyParty에게 박수를 보냅니다. 피해를 입었거나 팁이 있다면 아래 댓글에 공유해 주세요. 블록체인에서는 지식이 곧 힘이며—보안이 최고의 밈입니다. 모두 안전하게 지내세요!
밈 토큰이 처음이거나 블록체인 관련 더 많은 인사이트를 원한다면 Meme Insider의 knowledge base를 둘러보세요.