반응형
- 60개 악성 패키지, 개발자부터 기업까지 실시간 노출 🚨
안녕하세요!
오늘은 개발자라면 꼭 알아야 할
npm 생태계를 타깃으로 한 실제 악성 패키지 캠페인 소식을 쉽고 자세하게 풀어볼게요.
Node.js, npm 패키지는 전 세계 개발 현장에서 표준처럼 쓰이고 있는데,
이번 사태는 “npm install 한 번”으로 내 PC, 회사 서버, 빌드 파이프라인까지
모두 해킹 위험에 노출될 수 있다는 현실을 보여줬습니다.
1. 무슨 일이 일어난 걸까?
실제 공격 개요 🕵️♂️
- Socket Threat Research Team이
11일 전부터 시작된 60개 악성 npm 패키지 캠페인을 공개! - 범인은 총 3개 계정(bbbb335656, cdsfdfafd49Group2436437, sdsds656565)을 돌려가며
20개씩, 총 60개의 패키지 업로드 - 최신 패키지는 “몇 시간 전”에도 새로 업로드될 만큼아직도 공격이 계속 진행 중이에요.
2. 어떤 방식으로 공격했나?
‘npm install’만으로 감염되는 악성 스크립트
- 이 악성 패키지들은 npm install 시 자동 실행되는 postinstall 스크립트를
Node.js 코드에 몰래 숨겨둠 - 스크립트가 실행되면
- 호스트명(hostname)
- 내부/외부 IP 주소
- DNS 설정
- 현재 사용자명, 홈디렉터리
- 설치 경로, 프로젝트명, 조직 정보
등 시스템/네트워크 정보를 꼼꼼하게 수집
- 수집된 데이터는실시간으로 Discord Webhook(해커가 제어하는 주소)로 전송→ Windows, macOS, Linux 등 플랫폼 구분 없이 동작
공격의 디테일과 정교함
- os, dns 등 Node.js 표준 모듈 활용
(거의 모든 환경에서 탐지 어렵게 작성) - 내부망 인터페이스까지 탐색해 기업/개발팀 네트워크까지 파악
- 외부IP는 ipinfo.io 등 API로 조회
- 샌드박스·분석환경 탐지:
- AWS/GCP/VM 등 호스트네임, 디렉터리 패턴 확인 후
분석환경이면 실행 중단
→ “진짜 사용자만 공격”하는 치밀함
- AWS/GCP/VM 등 호스트네임, 디렉터리 패턴 확인 후
3. 악성 패키지, 실제 피해 범위는? 😱
- 다운로드 수만 3,000건 돌파
- 그만큼 실제 개발자, 기업, 오픈소스 프로젝트에 직접 유입
- 내부망/빌드서버/CI(지속적 통합) 환경까지 노출
- 내부 npm 레지스트리 주소, 빌드 경로 등까지 해커 손에 넘어갈 수 있음
- 공격자는
기업 네트워크 구조, 실명, 조직 경로 등을 실시간 파악
→ 후속 공격(랜섬웨어, 백도어 삽입, 추가 해킹)까지 가능성 O
4. npm, 패키지 생태계의 구조적 취약점
“npm install만으로 해킹”이 가능한 이유
- npm은
- postinstall/postuninstall 등 라이프사이클 스크립트가 자동 실행
- 개발자는 거의 확인하지 않고 의존성 자동 설치
- 패키지 tarball(압축 파일) 사이즈가 작아도,
핵심 코드는 스크립트 한 줄이면 충분
- npm 공식 레지스트리도실시간/자동 악성 패키지 탐지 체계가 완전하지 않음
- 이번 사건도 신고 후에도 아직 패키지/계정이 살아 있음
- 공격자는 계정 돌려가며 반복 업로드
5. 실제 악성 스크립트의 정체와 동작 방식 💣
- os, dns 모듈로 정보 수집
- 내부망 IP, DNS 서버, 사용자 디렉터리,
설치 경로, 패키지명 등 JSON 데이터로 정리 - 공격자가 제어하는 Discord Webhook으로 전송
- 실시간 수집, 피해자 목록 자동 관리 가능
- 샌드박스 탐지:
- AWS, GCP, ‘research’ 폴더 등 있으면 실행 안 함
→ 보안/분석팀 우회, 실제 피해자만 노림
- AWS, GCP, ‘research’ 폴더 등 있으면 실행 안 함
6. 실무 보안 대응법: “당장 이것부터!” ✔️
(1) 의존성 설치·업데이트 전 점검
- npm install 시 ‘postinstall’ 스크립트,
의심 파일명, 하드코딩된 URL, 최소 tarball 용량 등 체크 - 의심 패키지 명단 사내 공유
(이번 공격 계정, 패키지 목록 배포 필요)
(2) 자동 감지 툴/플러그인 적극 활용
- Socket Github App, CLI, 브라우저 확장
→ npm 설치/브라우징 단계에서 실시간 경고 - Snyk, Dependabot, npm audit 등 기존 취약점 탐지 도구와
병행 활용
(3) 빌드 서버/CI 파이프라인 분리
- 외부 오픈소스 의존성은
격리 환경에서만 설치/테스트 - 내부망, 실제 운영환경 접근 권한 최소화
(필요시 air-gap 빌드, 자동 의존성 업그레이드 제한)
(4) npm 레지스트리 정책 개선 요구
- postinstall, preinstall 스크립트 디폴트 차단/승인제 필요
- 신규 패키지 등록 시 실명 인증/지연 배포 등 보안 강화
7. 공격 계정 및 IoC 정보 🛑
- 악성 계정
- bbbb335656 (npm9960+1@gmail[.]com)
- sdsds656565 (npm9960+2@gmail[.]com)
- cdsfdfafd1232436437 (npm9960+3@gmail[.]com)
- 패키지 수: 60개 (계정별 20개씩)
- 데이터 유출 서버:
- hxxps://discord[.]com/api/webhooks/1330015051482005555/5fll497pcjzKBiY3b_oa9YRh-r5Lr69vRyqccawXuWE_horIlhwOYzp23JWm-iSXuPfQ
8. 마무리: “npm 패키지 관리, 이제 진짜 보안의 시대!” 🎯
이번 캠페인은 “npm은 안전하다”는 오랜 개발문화에 경종을 울리는 사건입니다.
npm install 한 번에 내 PC, 사내 서버, 모든 빌드 환경까지 해킹될 수 있다는 현실!
이제 개발팀, DevOps, 보안팀 모두가 의존성 관리 + 보안 체크를 습관으로 삼아야 할 때입니다.
“코드/패키지를 직접 읽지 않으면, 나도 모르는 사이에 내 정보가 해커에게 실시간 전송될 수 있다”는 사실,
꼭 기억해 주세요!
728x90
반응형
'CyberSecurity > Security🔐' 카테고리의 다른 글
DanaBot: 러시아 해커 생태계, 범죄와 사이버전, 스파이 행위의 ‘경계 없는’ 실체 🚨 (4) | 2025.05.27 |
---|---|
Oracle TNS 취약점(CVE-2025-30733) (2) | 2025.05.27 |
Katz Stealer, 또 하나의 위험한 정보탈취형 악성코드 (2) | 2025.05.27 |
“암호화폐 기업 500개 해킹 DB 다크웹 유출” (2) | 2025.05.27 |
Lumma Stealer 대규모 차단 작전! (1) | 2025.05.27 |