Skip to content

Npm

  • Published on
    package.json에 직접 적은 패키지는 열몇 개인데 실제로 설치되는 것은 천 개가 넘습니다. 이 글은 전이 의존성이 왜 직접 의존성보다 위험한지, 락파일의 무결성 해시가 재현성은 보장하지만 악성 코드는 전혀 막지 못하는 이유를 실제 락파일 항목으로 설명합니다. 타이포스쿼팅과 의존성 혼동 공격이 성립하는 조건과 스코프 고정, 인덱스 우선순위 설정으로 막는 법, postinstall 스크립트가 사실상 임의 코드 실행 지점이라는 점과 차단 방법을 다룹니다. 그리고 SBOM이 답해야 할 유일한 질문이 사고 당일 5분 안에 우리가 이 패키지를 쓰는지 확인하는 것이라는 관점에서, 취약점 알림의 신호 대 잡음을 도달 가능성 분석으로 줄이는 방법과 서명 및 재현 빌드의 위치까지 정리합니다.
  • Published on
    2026년 3월 31일 00:21 UTC, 주간 다운로드 8천만 건이 넘는 axios에 악성 버전 1.14.1이 올라왔습니다. 흥미로운 건 axios가 이미 npm trusted publishing을 쓰고 있었다는 점입니다 — 직전 정상 릴리스 1.14.0은 GitHub Actions가 OIDC로 발행했고 SLSA provenance까지 붙어 있었습니다. 그런데도 막지 못했습니다. trusted publishing이 뚫린 게 아니라, 애초에 유일한 배포 경로가 아니었기 때문입니다. 이 글은 npm 레지스트리 API가 지금도 그대로 남겨 둔 타임스탬프로 사건을 직접 재구성하고, provenance가 무엇을 증명하고 무엇을 증명하지 않는지, npm audit signatures를 실제로 돌리면 왜 통과해 버리는지, 그리고 결국 이걸 멈춘 게 어떤 자동화된 통제도 아닌 사람이었다는 사실을 정리합니다. 덤으로 보안 벤더의 그럴듯한 설명 하나가 레지스트리 타임라인과 어긋나는 지점도 짚습니다.
  • Published on
    npm 생태계의 공급망 공격은 우연한 사건이 아니라 설치 스크립트, 전이 의존성, 타이포스쿼팅이라는 구조에서 반복적으로 나온다. 2025년 Shai-Hulud 웜은 설치 스크립트로 스스로 번식하며 npm 토큰과 클라우드 키를 훔쳐 갔다. 최근 Hacker News에서 화제가 된 npm-scan은 이 문제를 로컬에서 정적·행위 분석으로 잡겠다고 표방하는 도구다. 이 글은 README를 근거로 npm-scan이 실제로 무엇을 검사하고 무엇을 검증할 수 없는지 가르고, 락파일과 설치 스크립트 차단, provenance, 최소 의존성처럼 정말 효과 있는 방어를 정리한다.
  • Published on
    2026년 6월 Red Hat Cloud Services 공식 npm 패키지까지 악성 코드에 노출된 사건을 계기로, npm 공급망 공격의 유형을 해부하고 lockfile 무결성, provenance 서명, 사내 레지스트리, CI 네트워크 격리까지 조직이 갖춰야 할 방어 스택을 정리합니다. 바로 적용할 수 있는 .npmrc와 GitHub Actions 설정 예제를 함께 제공합니다.