350
3
부
방어
면
npm
-
shrinkwrap
.
json
이라는 새 파일이 생성된다. 이 지점 이후로 각 의존성과 하위 의존
성(의존성 트리 )의 현재 버전은 정확한 버전 수준에서 사용된다.
이는 의존성을 취약점 코드를 포함하는 최신 패치로 업데이트하는 위험을 제거한다. 하지만 패
키지 메인테이너가 의존성의 버전 번호를 재사용하는 극히 드문 위험까지 제거하지는 않는다.
이 위험을 제거하려면 수축 포장 파일을 수정해
Git
SHA
를 참조하게 하거나 각 의존성의 올바
른 버전을 포함하는 자체
npm
미러를 배포해야 한다.
27.3
마치며
오늘날 웹 애플리케이션은 올바로 작동하는 데 수천 개가 넘는 의존성을 필요로 하는 일이 흔
하다. 각 의존성의 모든 스크립트의 보안을 보증하는 데는 엄청난 노력이 든다. 그러므로 서드
파티 통합은 개발 시간을 줄이는 대가로 어느 정도 위험이 따른다고 가정해야 한다.
하지만 이 위험을 없앨 수는 없다 하더라도 여러 방식으로 완화할 수 있다.
최소 권한 원칙을 적용함으로써 특정 의존성이 자체 서버에서 실행되게 한다든지 최소한 서버
리소스와 격리된 자체 환경에서 수행되게 할 수 있다. 이 기법으로 중대한 보안 버그가 발견되
거나 악의적 스크립트가 숨어 있을 경우 애플리케이션의 나머지 부분에 발생하는 위험을 줄일
수 있다. 하지만 격리가 어렵거나 불가능한 의존성도 있다.
핵심 웹 애플리케이션에 밀접하게 결합된 의존성에 대해서는 특정 버전 번호에 대해 개별적으
로 평가해야 한다. 이러한 의존성들이
npm
같은 패키지 관리자를 ...