개발자들이 즐겨 사용하는 자바스크립트(JavaScript) 패키지 관리 도구 npm의 차기 메이저 버전인 npm v12에서 `npm install` 명령어의 보안 관련 기본값이 대폭 변경될 예정입니다. 이는 기존의 자동 실행 및 해석 방식에서 개발자가 명시적으로 허용해야만 작동하는 방식으로 전환되어, 패키지 설치 과정의 보안을 한층 강화하려는 움직임입니다.
가장 큰 변화는 `allowScripts` 기본값이 '꺼짐(off)'으로 설정된다는 점입니다. 이로 인해 `preinstall`, `install`, `postinstall` 스크립트와 암묵적인 `node-gyp rebuild`, Git/파일/링크 의존성의 `prepare` 스크립트 실행이 기본적으로 차단됩니다. 또한, `allow-git`과 `allow-remote` 기본값도 '없음(none)'으로 변경되어, 명시적으로 허용하지 않은 Git 의존성이나 HTTPS tarball 같은 원격 URL 의존성 해석이 중단됩니다. 개발자는 `npm approve-scripts` 명령어를 통해 신뢰하는 패키지의 스크립트 실행을 허용하고, 이 `allowlist`를 `package.json`에 커밋해야 합니다. npm 11.16.0 이상 버전에서는 이러한 변경 사항에 대한 경고를 미리 확인할 수 있습니다.
이러한 변화는 소프트웨어 공급망 공격(Supply Chain Attack)에 대한 방어력을 높이는 데 중점을 둡니다. `postinstall` 스크립트 등은 편리하지만, 악의적인 코드가 삽입될 경우 개발 시스템에 심각한 보안 위협을 초래할 수 있었습니다. npm v12의 새로운 기본값은 이러한 잠재적 위험을 사전에 차단하고, 개발자에게 어떤 코드가 실행되고 어떤 외부 리소스가 사용되는지에 대한 명확한 통제권을 부여합니다. 이는 개발 생태계 전반의 보안 태세를 강화하고, 새로운 개발자들이 무심코 위험한 패키지를 설치하는 것을 방지하는 중요한 단계로 평가됩니다.