edu-npm-postinstall-demo2
v1.0.3
Published
Educational npm postinstall demonstration package.
Maintainers
Readme
edu-npm-postinstall-demo
교육용 로컬 npm postinstall 동작 시연 패키지.
이 패키지는 공개 npm 레지스트리에 배포하지 않는 실습용 패키지. npm pack으로 .tgz 파일을 만든 뒤 로컬에서만 설치하는 용도.
목적
- npm 패키지 설치 중 lifecycle script가 실행될 수 있음을 시연.
postinstall이 무해한 데모 데이터를 로컬 수집 서버로 보낼 수 있음을 확인.build단계에서 의존성 내부 파일이 호출되는 실행 표면을 빈mine_cyrpto.js로 시뮬레이션.- npm 공급망 공격의 실행 메커니즘 이해.
안전 제한
- 실제 credential 수집 없음.
- 사용자 파일 읽기 없음.
.ssh,.npmrc, 브라우저 데이터, Git 인증 정보, 클라우드 credential 접근 없음.- 전체 환경 변수 수집 없음.
- 설치를 실행한 프로젝트의
.env파일에서DEMO_로 시작하는 값만 수집. .env에DEMO_COLLECTOR_HOST가 없으면 네트워크 전송 없음.scripts/mine_cyrpto.js는 비어 있는 no-op 파일.- 공개 npm 레지스트리 publish 금지.
로컬 패키징
npm pack생성 파일 예시.
edu-npm-postinstall-demo-1.0.0.tgz설치 예시
DEMO_STUDENT_NAME=example-student
DEMO_FAKE_TOKEN=not-a-real-secret
DEMO_COLLECTOR_HOST=127.0.0.1
DEMO_COLLECTOR_PORT=8080npm install ./edu-npm-postinstall-demo-1.0.0.tgz실제 비밀값 사용 금지.
DEMO_COLLECTOR_HOST가 없으면 postinstall script는 HTTP POST를 보내지 않고 설치를 계속 진행.
ngrok 같은 HTTPS 터널은 허가된 수업 데모에서만 .env에 명시.
DEMO_COLLECTOR_URL=https://example-ngrok-url.ngrok-free.dev/collectDEMO_COLLECTOR_URL은 DEMO_COLLECTOR_HOST, DEMO_COLLECTOR_PORT보다 우선 적용. URL을 코드에 하드코딩하지 않음.
build 시뮬레이션
npm run buildbuild script는 scripts/mine_cyrpto.js를 실행. 이 파일은 의도적으로 비어 있으며 실제 연산, 파일 접근, 네트워크 요청을 하지 않음.
