탈중앙화 파생상품 거래소인 dYdX의 공식 개발 라이브러리에서 심각한 보안 결함이 발견되었습니다. 이번 dYdX 해킹 사고는 개발자들이 흔히 사용하는 소프트웨어 저장소에 악성 코드를 심어 사용자 지갑의 자산을 탈취하는 정교한 공급망 공격 형태로 발생했습니다. 특히 지갑의 핵심 보안 요소인 시드 구문이 외부로 유출될 수 있어 관련 도구를 사용하는 개발자와 서비스 운영자들의 즉각적인 점검이 요구됩니다.

dYdX 해킹 원인과 npm 패키지 오염 실태
이번 보안 사고의 핵심은 개발자들이 자바스크립트 환경에서 사용하는 npm 저장소에 악성 코드가 포함된 패키지가 배포된 것입니다. 공격자들은 dYdX의 공식 계정을 탈취하거나 권한을 획득하여 정상적인 업데이트처럼 위장한 악성 버전을 업로드했습니다. 이 패키지를 설치하거나 업데이트한 개발 환경 및 서비스 백엔드는 순식간에 공격자의 통제 아래 놓이게 되었습니다.
문제가 된 npm 패키지는 @dydxprotocol/v4-client-js이며 구체적인 위협 버전은 다음과 같습니다.
- npm 버전: 3.4.1, 1.22.1, 1.15.2, 1.0.31
- PyPI 버전: 1.1.5post1 (파이썬 환경)
해당 버전들은 정상적인 기능을 수행하는 것처럼 보이지만 내부적으로는 사용자의 민감한 정보를 특정 도메인으로 전송하는 기능을 숨기고 있었습니다. 이는 단순한 코드 오류가 아니라 명백한 의도를 가진 탈취 목적의 공격으로 분석됩니다.
악성 코드가 가상화폐 지갑을 탈취하는 과정
악성 패키지가 설치된 환경에서 애플리케이션이 실행되면 내부에 심어진 악성 함수가 활성화됩니다. 이 함수는 사용자가 지갑을 생성하거나 복구할 때 사용하는 시드 구문인 니모닉 코드를 가로챕니다. 지갑의 모든 권한을 가진 시드 구문이 노출되면 공격자는 즉시 다른 곳에서 해당 지갑을 복구하여 잔액을 모두 이체할 수 있습니다.
공격 과정에서 확인된 특징은 다음과 같습니다.
- 니모닉 구문 가로채기: 지갑 서명 과정에서 발생하는 시드 구문을 실시간으로 포착함
- 장치 핑거프린팅: 감염된 기기의 고유 식별 정보를 함께 수집하여 피해자를 추적함
- 유사 도메인 활용: 정상 사이트인 dYdX의 주소와 유사한 가짜 도메인을 수신 서버로 사용함
특히 이번 공격에 사용된 dydx[.]priceoracle[.]site라는 도메인은 공식 서비스인 것처럼 착각하게 만드는 타이포스쿼팅 기법을 사용하여 보안 모니터링을 우회하려 시도했습니다.

PyPI 백도어와 원격 제어 트로이목마의 위험성
npm뿐만 아니라 파이썬 패키지 저장소인 PyPI를 통해서도 공격이 진행되었습니다. PyPI에 배포된 악성 패키지는 단순히 정보를 훔치는 것에 그치지 않고 원격 제어 트로이목마인 RAT 기능을 포함하고 있었습니다. 이는 공격자가 감염된 서버나 개인 컴퓨터에 임의의 명령을 내릴 수 있음을 의미합니다.
PyPI 패키지에 포함된 백도어의 주요 동작 방식은 다음과 같습니다.
- 백그라운드 상주: 시스템 시작 시 자동으로 실행되어 보이지 않게 동작함
- 주기적 신호 전송: 10초마다 공격자의 서버에 접속하여 새로운 명령이 있는지 확인함
- 임의 코드 실행: 서버로부터 전달받은 파이썬 코드를 즉시 실행하여 시스템 권한을 획득함
- 정보 엑스필트레이션: SSH 키, API 인증 정보, 소스 코드 등 민감한 파일을 외부로 유출함
이러한 기능 덕분에 공격자는 지갑 자산뿐만 아니라 해당 기기에 저장된 모든 개발 자산과 네트워크 내부의 다른 시스템까지 접근할 수 있는 교두보를 마련하게 됩니다.
왜 dYdX를 겨냥한 공격이 계속 반복될까?
dYdX는 과거에도 여러 차례 보안 사고의 표적이 된 적이 있습니다. 2022년에는 이번과 유사한 npm 공급망 공격이 발생했으며 2024년에는 DNS 하이재킹을 통해 웹사이트 방문자들을 가짜 사이트로 유도하는 일이 있었습니다. 이처럼 특정 플랫폼이 반복해서 공격받는 이유는 해당 거래소가 처리하는 막대한 거래 규모 때문입니다.
공격자들이 dYdX를 선호하는 이유는 다음과 같습니다.
- 높은 유동성: 수조 달러에 달하는 누적 거래량으로 인해 탈취할 수 있는 자산 규모가 큼
- 개발자 중심 환경: 자동화된 트레이딩 봇이나 API 활용이 많아 패키지 배포 방식의 공격이 효과적임
- 신뢰 기반 배포: 공식 계정을 통해 배포되는 패키지에 대한 개발자들의 높은 신뢰를 역이용함
반복되는 사고는 오픈 소스 생태계의 취약성을 보여줍니다. 아무리 강력한 보안 시스템을 갖춘 거래소라 할지라도 개발 도구 자체에 악성 코드가 심어지면 방어하기가 매우 까다롭기 때문입니다.

내 자산을 안전하게 보호하는 3단계 실천법
이미 해당 패키지를 사용했거나 dYdX 관련 개발 환경을 운영 중이라면 즉시 대응이 필요합니다. 지갑 자산의 안전을 확보하기 위해 다음의 3단계를 순차적으로 진행하시기 바랍니다.
첫째, 패키지 의존성을 전면 점검하고 문제가 된 버전을 삭제해야 합니다.
- 프로젝트 내 package.json 또는 requirements.txt 파일 확인
- 문제가 된 버전(@dydxprotocol/v4-client-js: 3.4.1 등) 발견 시 즉시 제거
- 공식 채널에서 권장하는 안전한 버전으로 재설치
둘째, 노출되었을 가능성이 있는 모든 비밀 정보를 교체해야 합니다.
- 사용 중인 지갑의 시드 구문과 개인 키 폐기 후 새 지갑 생성
- 해당 환경에서 사용했던 API 키, SSH 접속 키, 데이터베이스 비밀번호 변경
- 기존 지갑에 남아있는 잔액을 즉시 안전한 신규 지갑으로 이체
셋째, 시스템 전체에 대한 악성 코드 검사와 모니터링을 강화해야 합니다.
- RAT 설치 여부를 확인하기 위해 백그라운드 프로세스 및 네트워크 연결 상태 점검
- 서버 내 비정상적인 파일 생성이나 변조 여부 확인
- 향후 패키지 설치 시 버전 잠금 기능을 활용하여 의도치 않은 업데이트 방지

마무리: 공급망 보안 강화를 위한 대응 방안
이번 dYdX 해킹 사건은 우리가 신뢰하고 사용하는 개발 도구가 언제든 공격의 통로가 될 수 있음을 다시 한번 각인시켜 주었습니다. 가상화폐 시장은 자산의 이동이 비가역적이기 때문에 한 번의 실수가 치명적인 손실로 이어질 수 있습니다. 개발자들은 단순히 편리함만을 쫓기보다 패키지를 도입할 때 보안 무결성을 검증하는 습관을 지녀야 합니다.
동시에 개별 사용자들도 자신이 이용하는 서비스의 보안 공지에 귀를 기울이고 이상 징후가 발견될 경우 즉각적인 조치를 취하는 자세가 필요합니다. 기술의 발전만큼 공격 기법도 정교해지고 있는 만큼 다중 인증 사용과 하드웨어 지갑 활용 같은 기본적인 보안 수칙을 생활화하여 소중한 자산을 지켜내시길 바랍니다.

이어서 보면 좋은 글
#dYdX해킹 #npm악성패키지 #PyPI악성코드 #가상화폐지갑보안 #공급망공격 #보안주의보 #시드구문유출 #니모닉탈취 #트로이목마 #블록체인보안