본문 바로가기
보안2025년 7월 30일3분 읽기

대규모 NPM 타이포스쿼팅 공격 — 500개 악성 패키지 발견

YS
김영삼
조회 477

대규모 NPM 타이포스쿼팅 공격 발견

보안 연구팀 Socket이 npm 레지스트리에서 500개 이상의 악성 패키지를 발견했다. 이 패키지들은 lodash, axios, express 등 인기 패키지의 이름을 교묘하게 변형하여 개발자의 오타를 노리는 타이포스쿼팅(typosquatting) 기법을 사용했다. 최소 15만 회 이상 다운로드된 것으로 파악된다.

공격 수법 분석

발견된 악성 패키지들은 정교한 다단계 공격을 수행했다. 설치 시에는 정상적으로 동작하지만, postinstall 스크립트를 통해 환경 변수, SSH 키, AWS 자격증명 등 민감 정보를 외부 서버로 전송했다. 일부 패키지는 백도어를 설치하여 원격 명령 실행까지 가능했다.

  • 이름 변형 패턴: 하이픈 추가/제거(lodash → lo-dash), 오타(axois → axios)
  • 탈취 정보: 환경 변수, .env 파일, SSH 키, 클라우드 자격증명
  • 백도어 설치: reverse shell을 통한 원격 코드 실행 기능
  • 우회 기법: 코드를 Base64로 인코딩하여 정적 분석 회피

피해 규모와 대응

npm 보안팀은 신고 접수 후 24시간 내에 전체 악성 패키지를 삭제했다. 그러나 이미 설치된 프로젝트에서의 피해는 확인이 어렵다. Socket은 영향을 받았을 가능성이 있는 프로젝트 목록을 공개했으며, npm audit 명령으로 검사할 수 있는 시그니처도 배포했다.

공급망 공격의 증가 추세

npm을 대상으로 한 공급망 공격은 해마다 증가하고 있다. 2024년 대비 2025년 상반기에만 타이포스쿼팅 시도가 300% 증가했다. 이번 사건은 단일 그룹이 조직적으로 수행한 것으로 추정되며, 공격에 사용된 인프라는 동유럽에 위치한 것으로 분석되었다.

개발자 대응 방안

전문가들은 여러 방어 전략을 권고한다. 패키지 설치 전 이름을 반드시 확인하고, package-lock.json을 활용하여 의존성을 고정해야 한다. Socket, Snyk 등의 보안 도구를 CI/CD 파이프라인에 통합하는 것도 효과적이다. 또한 npm의 provenance 기능을 활용하면 패키지의 빌드 출처를 검증할 수 있다.

댓글 0

아직 댓글이 없습니다.
Ctrl+Enter로 등록