기타 Lobsters · 2026-09-22

"패키지 깔다 털리는 일 막는다"… npm v12 대격변 예고

핵심 요약
  • npm이 2026년 7월 출시 예정인 v12부터 의존성 스크립트 실행과 git 및 원격 URL 의존성 자동 설치를 기본 비활성화합니다.
  • 자동 실행으로 인한 코드 실행 취약점과 공급망 공격 경로를 차단하기 위해 명시적 승인 방식으로 전환됩니다.
  • 개발자는 npm 11.16.0 이상에서 경고를 확인하고 스크립트 허용 목록을 package.json에 미리 설정해야 합니다.
요약 GitHub가 공개한 내용에 따르면, 차기 npm 주요 메이저 버전인 v12에서 `npm install`의 기본 보안 설정이 대대적으로 개편됩니다. 이번 변경은 2026년 7월 정식 출시를 목표로 하고 있으며, 기존에 자동으로 실행되던 여러 기능들을 사용자가 직접 명시적으로 허용(opt-in)해야만 작동하는 방식으로 전환하는 것이 핵심입니다. 가장 큰 변화는 `allowScripts`의 기본값이 꺼짐(off)으로 바뀌는 점입니다. 앞으로는 프로젝트 내에서 명시적으로 허용하지 않는 한 의존성 패키지의 `preinstall`, `install`, `postinstall` 스크립트가 실행되지 않습니다. 심지어 자체 인스톨 스크립트가 없더라도 내부적으로 node-gyp rebuild를 구동하는 네이티브 node-gyp 빌드 패키지나, git·file·link 의존성의 `prepare` 스크립트 역시 동일하게 차단 대상에 포함됩니다. 개발자는 `npm approve-scripts --allow-scripts-pending` 명령어로 차단 대상을 확인한 뒤, 신뢰하는 패키지만 승인하고 나머지는 차단해 그 결과를 `package.json`에 커밋해야 합니다. 이 외에도 외부 소스를 직접 끌어오는 방식에 대한 제한이 강화됩니다. `--allow-git`의 기본값이 'none'으로 설정되어, git 의존성의 `.npmrc`를 악용해 실행 파일을 탈취하던 취약점 경로가 차단됩니다. 또한 https tarball 등 원격 URL로부터 패키지를 받아오는 동작 역시 `--allow-remote`의 기본값이 'none'으로 변경되면서 기본적으로 막히게 됩니다. 개발팀은 현재 배포 중인 npm 11.16.0 이상 버전에서 이러한 경고 메시지를 미리 확인하고 프로젝트 설정을 사전에 대비할 것을 권장하고 있습니다.
Sponsored · 광고