자바스크립트 개발의 필수 도구인 패키지 매니저 npm이 2026년 7월 출시 예정인 v12 버전에서 대대적인 보안 관련 변경 사항을 예고했습니다. 이번 업데이트의 핵심은 'npm install' 명령어의 기본 동작을 변경하여 잠재적인 공급망 공격(supply chain attack) 위험을 줄이는 것입니다. 개발자들은 npm 11.16.0 이상 버전에서 미리 경고를 통해 변경 사항을 확인하고 대비할 수 있습니다.
npm v12의 주요 변경 사항은 세 가지입니다. 첫째, 'allowScripts' 기본값이 'off'로 변경되어, 이제 의존성 패키지의 'preinstall', 'install', 'postinstall' 스크립트가 자동으로 실행되지 않습니다. 'node-gyp' 빌드와 같은 암묵적인 스크립트도 마찬가지입니다. 개발자는 'npm approve-scripts' 명령어를 통해 신뢰하는 패키지의 스크립트만 명시적으로 허용해야 합니다. 둘째, '--allow-git' 기본값이 'none'으로 설정되어, Git 의존성(direct or transitive)은 명시적으로 허용하지 않으면 설치되지 않습니다. 이는 Git 의존성의 '.npmrc' 파일이 Git 실행 파일을 재정의하여 코드를 실행할 수 있는 경로를 차단합니다. 셋째, '--allow-remote' 기본값도 'none'으로 변경되어, HTTPS tarball과 같은 원격 URL 의존성 역시 명시적 허용 없이는 설치되지 않습니다.
이러한 변화는 개발 환경의 보안을 강화하고 악성 코드 주입 위험을 줄이는 데 크게 기여할 것입니다. 그동안 npm은 편리함 때문에 의존성 패키지에 포함된 스크립트가 자동으로 실행되면서 보안 취약점에 노출될 수 있다는 지적을 받아왔습니다. npm v12는 개발자가 패키지 설치 과정을 더 세밀하게 제어하고, 신뢰할 수 있는 소스만 허용하도록 강제함으로써 공급망 공격에 대한 방어력을 높입니다. 개발자들은 npm 11.16.0 이상으로 업데이트한 후 'npm approve-scripts --allow-scripts-pending' 명령어를 사용하여 어떤 스크립트가 차단될지 확인하고, 필요한 스크립트만 승인하여 'package.json'에 반영해야 합니다. 이는 초기에는 다소 번거로울 수 있지만, 장기적으로는 더 안전하고 견고한 개발 생태계를 구축하는 데 필수적인 변화로 평가됩니다.