피드로 돌아가기
The RegisterSecurity
원문 읽기
npm 12 기본 설정 변경을 통한 Arbitrary Code Execution 공격 표면 제거
GitHub pulls pin on npm's auto-run scripts
AI 요약
Context
전이적 의존성(Transitive Dependency) 내 Lifecycle Script 자동 실행으로 인한 공급망 공격 취약점 노출. Shai-Hulud worm 사례와 같이 단일 패키지 침해만으로 개발자 머신 및 CI Runner의 제어권 탈취가 가능한 구조적 한계 존재.
Technical Solution
- preinstall, install, postinstall 스크립트의 기본 실행 권한을 Disable로 변경하여 Attack Surface 최소화
- allow-scripts 설정을 통한 패키지별 명시적 허용 방식의 Allowlist 구조 도입
- --allow-git 플래그의 기본값 Off 설정을 통한 .npmrc 조작 기반의 원격 코드 실행 경로 차단
- allow-remote 기본값을 none으로 설정하여 신뢰할 수 없는 원격 URL로부터의 의존성 다운로드 원천 봉쇄
- min-release-age 기능 도입을 통한 최신 배포 악성 패키지의 즉각적인 설치 방지 메커니즘 구현
- npm 11.10.0부터 Opt-in 방식으로 제공된 보안 플래그를 npm 12에서 기본값으로 강제 적용
실천 포인트
- .npmrc 파일 내 allow-scripts 설정을 통한 필수 Native Module 및 Binary Fetch 도구(Playwright, Puppeteer 등)의 화이트리스트 관리 - 기존 ignore-scripts 설정과 allow-scripts 간의 우선순위 충돌 여부 확인 및 설정 최적화 - 신규 패키지 도입 시 min-release-age 설정을 통한 배포 초기 안정성 검증 기간 확보