npm 보안 강화를 위한 .npmrc 필수 최소 설정 가이드

최근 Shai-Hulud(796개 패키지 영향) 및 axios 변조(2026년 3월)와 같은 심각한 공급망 공격이 잇따르자, CyberAgent CIU는 npm 보안 강화를 위한 최소한의 .npmrc 설정 가이드를 공개했습니다. 핵심은 ignore-scripts=true로 자동 실행 코드를 차단하고, min-release-age=1을 통해 출시 직후의 잠재적 위험 패키지 도입을 유예하여 설치 단계에서의 보안 통제력을 확보하는 것입니다.

AI 요약

CyberAgent의 CIU(CyberAgent group Infrastructure Unit) 소속 전문가인 히라이(@did0es)는 최근 빈번해진 npm 공급망 공격에 대응하기 위해 pnpm이나 bun으로의 전환 이전에 npm 자체 설정을 통해 즉각 적용 가능한 보안 강화 방안을 제시했습니다. 특히 2025년 말 발생한 'Shai-Hulud' 공격과 2026년 3월 말 발생한 'axios' 패키지 변조 사건은 npm install 시점에 발생하는 보안 취약점의 위험성을 여실히 보여주었습니다. 본 기사는 이러한 사고를 방지하기 위해 .npmrc 파일을 통해 패키지 설치 시의 스크립트 실행을 제한하고, 노드 버전 일관성을 강제하며, 새로 공개된 패키지의 도입 시점을 늦추는 등의 4가지 필수 설정을 제안합니다. 이는 보안 사고 발생 시 개발 환경으로의 즉각적인 확산을 방지하고, 실무 환경에서 재현하기 어려운 버그를 줄이는 데 목적이 있습니다.

핵심 인사이트

  • 대규모 공격 사례: 2025년 9월~11월 사이 발생한 'Shai-Hulud' 공격은 796개 패키지에 영향을 미쳤으며, 주당 2,000만 건 이상의 다운로드 규모를 기록했습니다.
  • axios 변조 사건: 2026년 3월 31일, axios@1.14.1 및 0.30.4 버전이 변조되어 약 3시간 동안 원격 제어형 멀웨어가 유포되었습니다.
  • 릴리스 유예 설정: min-release-age=1 설정을 통해 패키지 공개 후 최소 1일이 지나지 않은 버전의 설치를 제한하여 초기 공격 위험을 회피합니다.
  • 스크립트 실행 차단: ignore-scripts=true 설정을 통해 의존성 패키지의 pre/postinstall 스크립트 자동 실행에 따른 임의 코드 실행 리스크를 제거합니다.

주요 디테일

  • 환경 정합성 강제: engine-strict=true를 적용하면 Node.js 및 npm 버전이 일치하지 않을 때 설치를 실패 처리하여 환경 차이에 따른 불필요한 오류를 방지합니다.
  • 상시 취약점 감사: audit=true로 상시 감사를 활성화하고, audit-level=high 설정을 통해 심각도가 높은 취약점 발견 시 CI/CD 단계에서 빌드를 실패시킬 수 있습니다.
  • 버전 고정 전략: 추가 설정으로 제안된 save-exact=true는 패키지 버전을 ^ 없이 고정하여 예기치 않은 마이너 업데이트로 인한 변조 위험을 줄입니다.
  • 의존성 충돌 방지: strict-peer-deps=true를 통해 peer dependency 충돌 시 경고 대신 설치 실패를 유도하여 런타임 안정성을 확보합니다.
  • 유예 기간의 조정: 현재 권장되는 1일(1440분)은 pnpm의 기준을 참고한 것이며, 보안 전문가 Andrew Nesbitt의 권고에 따라 향후 7일까지 연장을 검토 중입니다.

향후 전망

  • 보안 표준의 진화: 단순한 패키지 관리를 넘어 설치 시점의 보안 검증이 프론트엔드 개발 워크플로우의 필수적인 표준으로 자리 잡을 것입니다.
  • 운영 부하와의 균형: min-release-age와 같은 설정은 보안성을 높이지만 개발 속도에 영향을 줄 수 있으므로, 프로젝트의 성격에 맞는 단계적 도입이 늘어날 전망입니다.
Share

이것도 읽어보세요

댓글

이 소식에 대한 의견을 자유롭게 남겨주세요.

댓글 (0)

불러오는 중...