보안 위협 대응부터 AI 검증 하네스 구축까지, 대규모 패키지 매니저 마이그레이션 실전기
npm 생태계 공급망 공격에 대응해 채널팀의 170개가 넘는 레포지토리를 보안이 강화된 pnpm 11로 일괄 전환한 기술 사례입니다. 의존성 스크립트 차단 기능 설정 기법과 함께, AI에게 단순 반복 작업을 맡기고 이를 철저히 검증하는 '하네스(Harness)' 시스템을 구축하여 엔지니어 1명의 생산성을 극대화한 실무 인사이트를 제공합니다.
수많은 레포지토리를 보유한 기술 조직에서 모듈 보안을 강화하고 싶거나, 단순 마이그레이션 업무에 AI 및 교차 검증 파이프라인을 도입해 공수를 극적으로 줄이고 싶은 DevOps/프론트엔드 리드에게 일독을 권합니다.
npm 생태계에서 의존성의 install script(preinstall 등)를 통해 자격 증명을 탈취하는 웜 바이러스 공격이 발생했으며, 기존 npm/yarn 및 구버전 pnpm 환경에서는 설치 시 해당 스크립트가 기본 실행되는 보안 취약점이 존재했습니다.
install script 기본 실행을 차단하고 허용 목록 기반 제어를 지원하는 pnpm 11로 사내 170여 개 TS/JS 레포지토리를 전환하였으며, AI가 이관 프로세스를 수행하고 기계적 검증 도구(하네스)가 결과를 수층으로 비교·검증하는 파이프라인을 구축했습니다.
단 1명의 엔지니어가 7주간 다른 업무와 병행하여 총 171개 레포지토리에 대한 pnpm 11 전환 PR 234건을 작성(130건 머지 완료)했으며, 인계 프로세스가 쌓임에 따라 10개 레포지토리 기준 이관 작업 시간이 5시간 45분에서 1시간 53분으로 단축되었습니다.
Trade-off
의존성의 install script 차단 설정은 레포지토리 자체 package.json의 postinstall이나 허용 목록에 이미 등록된 패키지의 오염까지는 막지 못하며, 방어 설정을 비활성화하는 코드 변경에 대비해 주기적인 스캔 스크립트 모니터링이 추가로 요구됩니다.
pnpm 10/11에 도입된 보안 설정으로, 외부 패키지가 설치될 때 자동으로 실행되는 빌드/설치 스크립트를 기본적으로 차단하고 명시적으로 승인된 패키지 및 버전만 실행을 허용하는 기능입니다.
AI가 생성하거나 수행한 작업 결과를 신뢰하기 위해 코드 검증, 결과 대조, 조건 판정 등을 자동화된 기계적 장치로 감싸 AI의 오류가 다음 단계로 전파되지 않도록 막는 시스템 프레임워크입니다.
기존 package-lock.json이나 yarn.lock 파일 구조를 읽어 pnpm 고유의 pnpm-lock.yaml 파일로 변환해 주는 pnpm 내장 마이그레이션 명령어입니다.