npm, 공급망 공격 대비 2FA 기반 게시와 패키지 설치 제어 도입
출처: The Hacker News
Ravie Lakshmanan2026년 5월 23일 · 소프트웨어 공급망 / DevSecOps
GitHub은 소프트웨어 공급망 보안을 강화하기 위해 npm에 새로운 제어 기능을 도입했습니다. 이제 유지관리자는 패키지가 공개적으로 설치 가능해지기 전에 릴리스를 명시적으로 승인할 수 있습니다.
**스테이징 퍼블리싱(staged publishing)**이라 불리는 이 기능은 현재 npm에서 일반 제공되고 있습니다. 패키지를 npmjs[.]com에 푸시하기 전에 유지관리자가 2단계 인증(2FA) 챌린지를 통과해 승인을 해야 합니다.
“패키지 버전이 바로 소비자에게 제공되는 직접 퍼블리시가 아니라, 사전 빌드된 tarball이 스테이지 큐에 업로드되고 유지관리자가 명시적으로 승인해야 설치 가능해집니다,” 라고 GitHub는 말했습니다.
Microsoft 산하 자회사는 이번 변경을 통해 비대화형 CI/CD 워크플로우와 OpenID Connect(OIDC) 인증을 이용한 신뢰할 수 있는 퍼블리시에서도 “존재 증명(proof of presence)”을 보장한다고 밝혔습니다.
스테이징 퍼블리싱을 사용하기 전에 패키지 유지관리자가 충족해야 할 조건
- 패키지에 대한 퍼블리시 권한이 있어야 함
- 패키지가 이미 npm 레지스트리에 존재해야 함(새 패키지는 스테이징할 수 없음)
- 계정에 2FA가 활성화되어 있어야 함
개발자는 패키지 루트 디렉터리에서 npm stage publish 명령을 사용해 스테이징 영역에 제출할 수 있습니다. 이 명령을 사용하려면 npm CLI 11.15.0 이상으로 업데이트해야 합니다. 최적의 보호를 위해 GitHub은 스테이징 퍼블리싱을 OIDC 기반 **신뢰할 수 있는 퍼블리싱(trusted publishing)**과 함께 사용할 것을 권장합니다.
npm에 대한 두 번째 업데이트는 기존 -allow-git 플래그와 함께 세 가지 새로운 설치 소스 플래그를 도입했습니다.
--allow-file: 로컬 파일 경로나 로컬 tarball에서의 설치를 제어--allow-remote: https tarball을 포함한 원격 URL에서의 설치를 제어--allow-directory: 로컬 디렉터리에서의 설치를 제어
GitHub는 “이 플래그들을 사용하면 모든 비레지스트리 설치 소스에 대해 동일한 명시적 허용 목록 방식을 적용할 수 있다”고 설명했습니다.
이러한 개발은 지난 몇 달간 오픈소스 생태계를 겨냥한 소프트웨어 공급망 공격이 급증하고 있는 상황에서 이루어졌습니다. 특히 TeamPCP 라는 사이버 범죄 조직이 자체 순환적인 타협 사이클을 통해 대규모로 인기 패키지를 오염시키는 사례가 전례 없이 늘어나고 있습니다.
이 기사가 흥미로우셨나요? 더 많은 독점 콘텐츠를 보려면 Google News, Twitter 및 **LinkedIn**에서 팔로우해 주세요.

