Osegi
보안·2 분 소요

npm bee-js 13.3.0 악성코드, 암호화폐 지갑 키 노렸다

Swarm 라이브러리 @ethersphere/bee-js 13.3.0이 프로젝트의 공식 배포 절차로 나왔고, 설치 즉시 지갑 키를 훔치려 했습니다.

Laptop screen showing JavaScript code with a red warning icon and a crypto wallet key being pulled away.
이미지: Хабр

Swarm용 자바스크립트 라이브러리 @ethersphere/bee-js의 13.3.0 버전이 설치되는 순간 암호화폐 지갑 키를 훔치려 한 것으로 확인됐습니다. 이 버전은 프로젝트의 공식 배포 절차를 그대로 거쳐 나왔습니다.

CodeScoring은 11월 9일부터 이 버전을 악성으로 분류하고 있습니다. bee-js는 분산 저장소 Swarm을 위한 라이브러리입니다.

bee-js 13.3.0에서 무슨 일이 있었나

배포 계정 bee-worker 명의로 공식 저장소에 직접 커밋이 들어갔습니다. 이어 릴리스가 만들어졌고, 기존 GitHub Actions 워크플로가 실행됐습니다. Socket에 따르면 npm의 빌드 정보는 공식 저장소와 프로젝트의 정상 배포 절차를 가리켰습니다. 악성코드는 그 시점에 이미 소스에 들어 있었다는 뜻입니다.

공격자는 패키지를 수정해 설치 때 스크립트가 자동 실행되게 했습니다. 이런 스크립트 실행이 허용돼 있으면 앱에서 라이브러리를 쓰기도 전에 악성코드가 돌아갑니다. 코드 주석에는 자기 서버와의 통신이 분석 데이터 전송이라고 적혀 있었습니다. 실제로는 그 서버에서 자바스크립트를 받아 설치한 사용자의 권한으로 바로 실행했습니다.

무엇을 훔치려 했나

페이로드는 Swarm Desktop 데이터에서 암호화된 지갑 키와 설정 파일을 찾았습니다. 설정에 키의 비밀번호가 들어 있으면 두 파일만으로 지갑을 장악할 수 있습니다. 시스템에 계속 남으려는 시도도 있었습니다.

Linux와 macOS에서는 원격 명령 실행용 백도어까지 설치했습니다. 명령 서버 주소는 Ethereum 스마트 컨트랙트에서 읽어 왔습니다. 운영자는 트랜잭션 한 번으로 주소를 바꿀 수 있어, 새 악성 빌드를 내놓을 필요가 없습니다.

내 프로젝트가 영향을 받았는지 확인하려면

13.3.0은 간접 의존성으로도 들어올 수 있었습니다. Swarm의 여러 도구가 허용하는 의존성 범위에 이 버전이 포함돼 있었기 때문입니다. 매니페스트에서 직접 의존성만 찾아서는 부족하고, lock 파일에서 실제로 해석된 버전을 확인해야 합니다. lock 파일, 패키지 캐시, CI 설치 로그를 점검하십시오.

스크립트 실행을 허용한 채 이 버전을 설치했거나 Swarm Desktop 0.56.2를 실행했다면 해당 PC나 CI 러너를 조사해야 합니다. CI 러너라면 패키지 배포 토큰과 소스 접근 권한도 점검 대상입니다.

주목할 만한 앱

SUMO: 숫자 퍼즐

올바른 칸을 고르고 더해 목표 숫자를 맞추세요. 배우긴 쉽고 마스터하긴 어렵습니다. 무료, 전 연령.

태그:npmswarmbee-jssupply chain attackcrypto walletgithub actions

같은 날의 다른 뉴스

전체 보기 →

관련 카테고리: 보안

전체 보기 →