[해외보안뉴스] 악성 npm 패키지, 설치 스크립트 탐지 피하고 런타임 실행으로 방어 우회
최근 'indexed-btree' 패키지를 포함한 새로운 npm 악성코드 캠페인이 발견되어 오픈소스 공급망 보안에 비상이 걸렸습니다. 공격자들은 기존 보안 솔루션이 주로 패키지 설치 시점의 스크립트(preinstall, postinstall 등)를 집중적으로 검사한다는 점을 악용했습니다. 이들은 악성 코드를 설치 스크립트가 아닌, 패키지가 애플리케이션에서 실제로 호출되어 작동하는 '런타임(Runtime)' 시점에 실행되도록 숨기는 방식을 사용했습니다.
이러한 공격 기법은 정적 분석이나 설치 단계 모니터링에 의존하는 기존 소프트웨어 공급망 방어 체계를 손쉽게 우회합니다. 개발자나 CI/CD 파이프라인이 정적 검사를 통과한 패키지를 안전하다고 판단하여 운영 환경에 배포할 경우, 해당 라이브러리를 사용하는 애플리케이션 전체가 위험에 노출됩니다. 일단 악성 패키지가 런타임 환경에서 실행되면, 공격자는 개발자 자격 증명 탈취, 백도어 설치, 서버 내 원격 코드 실행(RCE) 등 심각한 피해를 입힐 수 있습니다.
이러한 런타임 기반 공급망 위협에 대응하기 위해서는 설치 스크립트 검사만으로는 부족하며 다층적인 보안 접근이 필요합니다. 개발팀은 새로운 오픈소스 패키지를 도입할 때 전체 소스 코드의 동작 흐름을 정밀히 검토해야 하며, 런타임 환경에서 발생하는 이상 행위를 실시간으로 감지할 수 있는 동적 모니터링 솔루션을 도입해야 합니다. 또한 의존성 패키지의 무분별한 업데이트를 자제하고 lockfile을 엄격히 관리하여 신뢰할 수 있는 모듈만 프로젝트에 포함되도록 해야 합니다.
--ignore-scripts옵션만 믿고 안심하던 시대는 이제 끝난 것 같습니다. 공격자들이 설치 스크립트가 아닌 일반 런타임 모듈 내부에 악성 로직을 숨기기 시작했기 때문에, 단순 정적 검사를 넘어 실행 시점의 샌드박싱과 동작 모니터링(Runtime Security)이 필수적입니다. 결국 무분별한 서드파티 라이브러리 도입을 지양하고, 제로 트러스트(Zero-Trust) 관점에서 의존성 영향도를 최소화하는 아키텍처적 대비가 시급해 보입니다.설치 스크립트 탐지를 피하고 정상적인 런타임 함수 호출 시점에 악성 코드를 실행하는 방식은 기존 CI/CD의 정적 분석과 공급망 보안 도구를 완벽히 우회합니다. 개발자가 패키지를 임포트하고 해당 기능을 실제로 호출할 때까지 악성 행위가 숨겨지므로, 은밀한 페이로드 전달과 공격 유지 관점에서 매우 위협적인 벡터입니다. 이제 공급망 공격은 단순한 악성 패키지 유포를 넘어 정상적인 애플리케이션 로직 타격으로 진화했음을 보여줍니다.
설치 스크립트 차단이라는 기존 공급망 보안 통제를 우회하여 런타임 영역으로 침투하는 공격 기법의 진화에 깊은 우려를 표합니다.
이제는 오픈소스 도입 시점의 정적 검증에만 의존할 수 없으며, 애플리케이션 실행 단계에서의 행위 기반 탐지 및 Zero Trust 관점의 통제 체계 마련이 필수적입니다.
즉시 개발 및 개발보안(DevSecOps) 팀과 협력하여 오픈소스 의존성(Dependency) 점검 프로세스를 재정비하고 런타임 모니터링 정책을 강화하겠습니다.