npm의 보안 개선
npm의 Trusted publishing, provenance, 세분화 토큰 등의 개선은 "배포" 측면을 보호하지만
"소비" 단계에서 악성 패키지 설치 자체를 막지는 못함
npm install 및 npm update 시 lifecycle scripts (preinstall, postinstall 등)가 패키지 안정성 평가 이전에 개발자 권한으로 임의 코드를 실행할 수 있는 구조임
스크립트가 npm / GitHub / AWS / DB 자격 증명 / 소스코드 / 클라우드 인프라 / 파일 시스템 전체에 접근이 가능함
Shai-Hulud 같은 공격은 이 구조를 악용하며, 유지 보수가 계정이 탈취되면 악성 스크립트가 실행되어 커뮤니티가 감지하기 전에 피해가 발생할 수 있음
해결 방안 - npm의 배포 측 개선 + pnpm의 소비 측 제어의 상호 보완 (defense-in-depth)
pnpm은 기본적으로 lifecycle script를 차단하고 설치를 경고
pnpm-workspace.yaml 파일의 설정을 통해 스크립트가 있으면 설치가 실패하도록 강제화 가능 (strcitDepBuilds: true)
설치 실패 설정을 통해 다음의 단계를 강제할 수 있음
- pnpm이 어떤 패키지에 스크립트가 있는지 명확히 알려줌
- 스크립트 동작을 조사하고 이해
- 허용/차단을 사람 판단으로 의식적으로 결정하고 문서화
최근에 배포된 버전은 일정 쿨다운 기간 동안 설치를 막아, 커뮤니티가 악성 패키지를 탐지, 제거할 시간을 벌어줌
이전보다 약한 인증으로 배포된 버전이 나타나면 설치를 차단할 수 도 있음
Reference
https://news.hada.io/topic?id=25183
npm 공급망 공격으로부터 보호하는 방법 | GeekNews
Seattle Times는 Shai-Hulud 2.0 공격을 우연히 피했지만, 운이 보안 전략이 될 수 없다는 전제에서 클라이언트 측 방어를 도입함npm의 Trusted publishing / provenance / 세분화 토큰 같은 개선은 “배포” 측면
news.hada.io
'Development > Development' 카테고리의 다른 글
| 웹훅 서명 검증 (0) | 2026.01.04 |
|---|---|
| 효과적인 API 재시도 로직 구현 (0) | 2026.01.04 |
| 블랙박스 테스팅에 대해 알아보자 (0) | 2025.12.21 |
| UUID v4 기본키를 피해야하는 이유 (1) | 2025.12.21 |
| 2025년 가장 위험한 소프트웨어 취약점 Top25 (0) | 2025.12.21 |