npm v12 출시! 보안 강화 및 2FA 우회 토큰 정책 변경
npm v12 출시로 설치 시 보안 기본값(Install-time Security Defaults)이 강화되어 스크립트 실행 및 Git/원격 URL 의존성 자동 해결이 옵트인(Opt-in)으로 변경됨
2FA 우회 토큰(2FA-bypass Token)을 사용한 민감한 계정 관리 작업(토큰 생성/삭제, 비밀번호 변경 등) 시 2FA 건너뛰기 기능이 2026년 8월부터 중단됨
2FA 우회 토큰의 직접 게시 기능도 2027년 1월부터 제한되며, 신뢰할 수 있는 게시(Trusted Publishing) 또는 단계별 게시(Staged Publishing)로 전환 필요
npm v12의 설치 시 보안 기본값 변경 상세
npm v12부터는 스크립트 실행(Script Execution), Git 의존성(Git Dependencies), 원격 URL 의존성(Remote URL Dependencies) 해결이 기본적으로 비활성화되고 명시적 허용이 필요하게 됨.
allowScripts 기본값 off: `preinstall`, `install`, `postinstall` 같은 라이프사이클 스크립트(Lifecycle Scripts) 및 `node-gyp` 빌드가 자동으로 실행되지 않음. 보안 위험을 줄이기 위한 조치로, 신뢰하는 스크립트는 `npm approve-scripts` 명령어로 허용 목록(Allowlist)에 등록해야 함.
allow-git 및 allow-remote 기본값 none: Git 저장소나 원격 URL에서 직접 의존성을 설치하는 행위가 차단됨. 이는 악의적인 패키지(Malicious Packages)의 잠재적 위협으로부터 개발 환경을 보호하기 위함임.
이러한 변경은 이전 버전(npm 11.16.0+)에서 경고로 제공되었으므로, 점진적인 전환(Gradual Transition)이 가능했음.
2FA 우회 토큰(GAT)의 단계적 비활성화
npm은 2026년 8월부터 2FA 우회 토큰(2FA-bypass Token)이 민감한 계정, 패키지, 조직 관리 작업에서 2단계 인증(2FA)을 건너뛰는 기능을 점진적으로 중단할 예정임.
영향 범위: 토큰 생성/삭제, 비밀번호/이메일/프로필/2FA 설정 변경, 패키지 접근 권한 변경, 조직/팀 멤버십 관리 등 보안에 민감한 작업에 영향을 미침.
대안: 이러한 작업은 인터랙티브 모드(Interactive Mode)에서 2FA를 통해 직접 수행하도록 권장함. 자동화된 워크플로우에서는 신뢰할 수 있는 게시(Trusted Publishing) 또는 OIDC(OpenID Connect)와 같은 대체 인증 메커니즘(Alternative Authentication Mechanisms)으로 전환해야 함.
이는 계정 탈취(Account Takeover) 위험을 최소화하고 npm 생태계의 전반적인 보안 수준을 높이기 위한 결정임.
2FA 우회 토큰의 게시 기능 제한 및 대안
2027년 1월경부터 2FA 우회 토큰은 직접적인 패키지 게시(Direct Package Publishing) 기능도 제한될 예정임. 이는 앞서 언급된 계정 관리 작업 제한에 이어지는 조치임.
변경 사항: 2FA 우회 토큰은 이제 비공개 패키지 읽기(Reading Private Packages) 및 게시 스테이징(Staging a Publish)만 가능하며, 실제 패키지 공개는 인간의 2FA 승인 후에만 이루어짐.
권장 마이그레이션 경로: 자동화된 게시 프로세스는 신뢰할 수 있는 게시(Trusted Publishing) (예: OIDC 연동) 또는 단계별 게시(Staged Publishing) 워크플로우로 전환해야 함. 이는 장기 실행 토큰(Long-lived Publish Token) 의존성을 제거하고 보안을 강화하는 데 목적이 있음.
npm은 향후 몇 달간 이러한 전환을 용이하게 하기 위한 마이그레이션 가이드(Migration Guides)를 제공할 예정임.
npm v12 마이그레이션 및 커뮤니티 지원
npm v12로의 업그레이드를 준비하는 개발자는 이전 버전(npm 11.16.0+)에서 제공된 경고 메시지를 통해 변경 사항을 미리 인지하고 대비할 수 있었음.
스크립트 허용 목록 관리: `npm approve-scripts --allow-scripts-pending` 명령어를 사용하여 신뢰하는 스크립트를 검토하고 `package.json`에 허용 목록을 커밋하는 과정을 거쳐야 함.
2FA 정책 변경 대비: 2FA 우회 토큰을 사용하는 CI/CD 파이프라인이나 자동화된 배포 스크립트는 신뢰할 수 있는 게시(Trusted Publishing) 또는 단계별 게시(Staged Publishing) 방식으로 전환하는 계획을 세워야 함.
npm은 커뮤니티 토론(Community Discussion)을 통해 사용자의 질문에 답변하고 관련 문서를 제공하며, 향후 마이그레이션 가이드도 공유할 예정임. 이는 안정적인 전환(Stable Transition)을 지원하기 위한 노력임.