npm 패키지는 공개되기 전에 검사된다: 게시 자동화가 기다려야 할 5분
npm이 새 패키지를 공개하기 전에 악성코드 검사를 시작했습니다. 대부분 약 5분의 지연이 생기며, 보안 도구처럼 이중 용도 기능을 담은 패키지에는 새 메타데이터와 공개 문서가 요구됩니다.
npm이 2026년 7월 28일 새 패키지와 버전을 레지스트리에서 설치 가능하게 만들기 전에 악성코드를 자동 검사하는 절차를 도입했습니다. 게시 명령이 성공했다고 해서 패키지를 곧바로 설치하거나 사용 중단 처리(deprecate)·삭제(unpublish)할 수 있는 것은 아닙니다. 이를 전제로 한 자동화는 실행 순서를 조정해야 합니다.
무엇이 바뀌었나
새로 게시된 패키지는 검사 결과에 따라 정상 공개, 수동 검토 보류, 차단 중 하나로 처리됩니다. npm은 보통 약 5분, 혼잡 시간이나 패키지의 크기·내용에 따라 15분 이상 걸릴 수 있다고 안내했습니다. 이 시간은 보장된 서비스 수준이 아닙니다.
검사 중에도 npm dist-tag는 사용할 수 있지만, 해당 버전이 공개돼야 하는 npm deprecate와 npm unpublish는 바로 작동하지 않습니다.
개발자에게 왜 중요한가
릴리스 파이프라인이 게시 직후 별도 환경에서 설치 테스트를 하거나, 태그·공지·배포를 연달아 실행한다면 짧은 대기와 재시도 로직이 필요합니다. 고정된 5분 대기는 혼잡 상황을 처리하지 못하므로 레지스트리에서 버전이 조회되는지 확인한 뒤 다음 단계로 넘어가는 편이 안전합니다.
이중 용도 패키지의 새 조건
침투 테스트나 보안 분석처럼 합법적이지만 악성코드와 비슷한 기능을 가진 패키지는 package.json의 contentPolicy 필드와 루트의 텍스트 전용 DISCLOSURE 파일로 기능과 정당한 사용 목적을 밝혀야 합니다. 이런 패키지는 2단계 인증을 강제하는 방식으로 게시해야 합니다.
한 번 이중 용도로 선언한 패키지는 이후 버전에서 해당 필드와 파일을 제거할 수 없습니다. 요구 사항은 단계적으로 적용되며 npm은 영향을 받는 유지관리자에게 직접 연락한다고 밝혔습니다.
기존 프로젝트 영향
패키지를 설치하는 일반 이용자에게 새 버전 호환성 변화는 없습니다. 변화의 중심은 게시자와 CI/CD입니다. 검사 지연은 공급망 방어층을 늘리지만 모든 악성 패키지를 잡는다는 보장은 아니므로 잠금 파일, 출처 검토, 최소 권한 토큰 같은 기존 통제를 유지해야 합니다.
적용 전 확인 사항
- 게시 직후 설치하는 작업에 지수 백오프와 제한 시간을 둡니다.
- 게시 성공과 레지스트리 공개 완료를 별도 상태로 기록합니다.
- 보안·관리 도구는 이중 용도 선언 대상인지 문서와 함께 검토합니다.
- OIDC 기반 신뢰 게시나 대화형 2단계 인증 등 허용된 게시 경로를 확인합니다.
GitHub Changelog — npm publish-time malware scanning and dual-use metadata · npm Docs — Dual-use content policy · npm Docs — Trusted publishing