npm v12, 보안 기본값 강화 예정
npm v12에서 보안 기본값 변경으로 npm install 동작 방식이 수정됨
스크립트 실행 기본값 비활성화로 사전 설치, 설치, 사후 설치 스크립트 자동 실행 차단
Git 및 원격 URL 의존성 자동 해결 기능도 명시적 허용 필요로 변경됨
2026년 7월 출시 예정이며, 현재 버전에서 경고를 통해 사전 준비 가능
npm install 스크립트 실행 제어 강화
npm v12부터는 `allowScripts` 기본값이 `off`로 변경되어, 의존성 패키지의 사전 설치(preinstall), 설치(install), 사후 설치(postinstall) 스크립트가 자동으로 실행되지 않음.
이는 `binding.gyp` 파일이 있는 네이티브 모듈 빌드(`node-gyp rebuild`)에도 적용되어, 명시적 스크립트가 없어도 차단될 수 있음.
Git, 파일, 링크 의존성의 `prepare` 스크립트 역시 동일하게 차단됨.
`npm approve-scripts --allow-scripts-pending` 명령어로 차단될 스크립트를 미리 확인하고, `npm approve-scripts` 또는 `npm deny-scripts`로 신뢰하는 패키지만 허용 목록(`package.json`에 기록)에 추가해야 함.
이 변경은 공급망 공격(Supply Chain Attack) 벡터를 차단하고, 의도치 않은 코드 실행을 방지하는 데 목적이 있음.
Git 및 원격 URL 의존성 해결 방식 변경
npm v12는 `allow-git` 및 `allow-remote` 플래그의 기본값을 `none`으로 변경하여, Git 저장소나 원격 URL(예: https tarballs)로부터의 의존성 자동 해결을 차단함.
이전에는 `--ignore-scripts` 옵션이 있더라도 Git 의존성의 `.npmrc` 파일이 Git 실행을 재정의할 수 있는 코드 실행 경로(Code Execution Path)가 존재했음.
이 변경은 `npm 11.10.0+` 버전부터 적용되었으며, `npm install` 시 명시적으로 `--allow-git` 또는 `--allow-remote` 플래그를 사용해야 해당 의존성을 설치할 수 있음.
이는 외부 소스에 대한 통제력을 강화하고, 잠재적인 보안 위협으로부터 프로젝트를 보호하기 위한 조치임.
보안 강화 배경 및 사전 준비 가이드
npm v12의 변경 사항은 개발 생태계 전반의 공급망 보안(Supply Chain Security) 강화라는 더 큰 흐름의 일환임.
`npm install` 시 스크립트 실행 및 외부 의존성 자동 해결은 악의적인 패키지가 시스템에 침투할 수 있는 주요 경로였음.
사전 준비: npm v11.16.0 이상으로 업그레이드 후, `npm install`을 실행하여 발생하는 경고를 검토해야 함.
`npm approve-scripts --allow-scripts-pending` 명령어를 사용하여 차단될 스크립트 목록을 확인하고, 신뢰하는 패키지에 대해서만 `npm approve-scripts` 명령으로 허용 목록을 생성하여 `package.json`에 커밋하는 것이 권장됨.
이 과정을 통해 v12 업그레이드 후에도 기존과 같이 스크립트가 필요한 경우, 명시적으로 승인된 스크립트만 실행되도록 보장할 수 있음.
npm v12 출시 일정 및 영향
npm v12는 2026년 7월 출시가 예상되며, 이번 변경 사항들은 현재 npm v11.16.0 이상 버전에서 경고 메시지를 통해 미리 경험해볼 수 있음.
`allow-scripts`, `allow-git`, `allow-remote`와 같은 기본값 변경은 기존 `npm install` 워크플로우에 영향을 줄 수 있으므로, 사전에 테스트하고 적응하는 과정이 필수적임.
특히 CI/CD 파이프라인에서 `npm install`을 사용하는 경우, 스크립트 실행이나 Git/원격 URL 의존성 해결 방식의 변경으로 인해 빌드 실패가 발생할 수 있음.
따라서 개발팀은 릴리스 노트와 공식 문서를 주의 깊게 검토하고, 필요한 설정을 미리 적용하여 안정적인 업그레이드를 준비해야 함.