[해외보안뉴스] 악성 npm 패키지 'indexed-btree', 탐지 회피 위해 런타임 코드에 악성 로더 숨겨
정상적인 B-tree 인덱싱 유틸리티 패키지인 'sorted-btree'를 모방한 악성 npm 패키지 'indexed-btree'가 발견되어 최근 삭제되었습니다. 보안 전문 기업 Checkmarx에 따르면, 이 패키지는 기존의 악성 오픈소스들이 주로 사용하던 설치 시점의 수명 주기 스크립트(Lifecycle Scripts) 대신, 실제 애플리케이션이 실행되는 런타임 코드 내부에 악성 로더를 숨기는 방식을 취했습니다.
이러한 수법은 최근 보안 솔루션들이 패키지 설치 단계의 자동 실행 스크립트('postinstall' 등)를 집중적으로 모니터링하자, 이를 회피하기 위해 공격자들이 전략을 전환했음을 시사합니다. 개발자가 해당 패키지를 정상적인 유틸리티로 오인해 코드에 포함하고 함수를 호출할 때만 악성 행위가 수행되므로, 기존의 설치 단계 검사나 정적 분석 도구를 우회하여 개발 환경 및 서비스에 심각한 보안 위협을 가할 수 있습니다.
해당 패키지는 현재 npm 레지스트리에서 제거되었으나, 로컬 개발 환경이나 기존 프로젝트에 이미 설치되어 있을 가능성이 있으므로 의존성(Dependencies) 목록을 즉시 점검해야 합니다. 또한, 오픈소스 라이브러리 도입 시 패키지명이 유사한 타이포스쿼팅(Typosquatting) 공격인지 주의 깊게 확인하고, 설치 시점뿐만 아니라 애플리케이션 런타임 동작까지 모니터링할 수 있는 공급망 보안 체계를 구축해야 합니다.
♥ 추천 0
npm 라이프사이클 스크립트 차단 정책을 우회해 런타임 코드 자체에 악성 로더를 삽입하는 방식은 공급망 공격이 더 정교해졌음을 보여줍니다.
이제는 단순히 패키지 설치 시점의 검사만으로는 부족하며, SCA(소프트웨어 구성 분석) 및 정적 분석(SAST) 도구가 런타임 코드 내 비정상적인 네트워크 요청이나 난독화 패턴까지 감지할 수 있도록 검증 파이프라인을 강화해야 합니다.
개발팀 내부적으로도 패키지 오탈자(Typosquatting) 방지를 위해 의존성 추가 시 원본 레포지토리를 재확인하고, Hash 검증이 포함된 Lockfile 관리를 철저히 해야 합니다.
기존의
postinstall같은 라이프사이클 스크립트 감시를 우회하기 위해 공격 벡터를 런타임 코드 내부로 전환한 점이 인상적입니다. 이는--ignore-scripts와 같은 기존 방어 옵션을 무력화하며, 실제 모듈이 호출되는 시점에만 악성 로더가 동작하므로 정적 탐지 솔루션을 우회하기에 매우 유리합니다. 공급망 공격 관점에서 탐지를 피하고 타깃 시스템 내에 오랫동안 은닉할 수 있어, 실제 침투 테스트 시나리오에서도 매우 위협적이고 악용 가능성이 높은 기법입니다.공급망 공격 기법이 기존의 설치 스크립트 방식을 넘어 런타임 코드 은닉 방식으로 고도화되면서, 기존 빌드 단계 검사만으로는 위협 탐지의 사각지대가 발생하고 있습니다. 이제 오픈소스 라이브러리 도입 시 단순 유사 이름(Typosquatting) 방지를 넘어, 정적 분석과 런타임 행위 기반의 '제로 트러스트' 종속성 검증 정책을 강화해야 합니다. 개발 생산성을 보장하면서도 외부 라이브러리의 전체 생애주기를 통제할 수 있도록 SBOM 관리 및 보안 거버넌스 체계를 즉시 재정비하겠습니다.