릴리스된 지 얼마 안 된 패키지, 이제 안전하게 관리하세요!

by DD
1개월 전
조회수 4

악성 패키지 배포 후 탐지까지의 시간 간극을 줄이기 위해, 릴리스된 지 얼마 안 된 패키지를 버전 해결 과정에서 제외하는 '의존성 쿨다운(Dependency Cooldown)' 기술이 제안됨

PMG(Package Manager Guard)는 npm, pnpm 등 패키지 매니저를 감싸서 안전한 패키지 설치를 지원하며, 의존성 쿨다운 기능을 제공함

의존성 쿨다운은 최신 버전 획득 지연이라는 트레이드오프(Trade-off)를 가지지만, 프로덕션 환경에서는 허용 가능한 수준으로 평가됨

보안 패치(Security Patch) 적용 지연으로 인한 제로데이(Zero-day) 공격 위험에 대한 우려가 제기됨

의존성 쿨다운(Dependency Cooldown) 작동 방식

의존성 쿨다운(Dependency Cooldown)은 패키지 매니저(Package Manager)가 패키지 버전을 해결할 때, 릴리스된 지 얼마 안 된 패키지를 제외하는 기술이다. PMG(Package Manager Guard)는 npm 패키지 메타데이터를 필터링하여, 설정된 기간(예: 5일) 내에 릴리스된 버전을 제거한다. 만약 해당 범위 내에서 적합한 버전이 없다면, 설치는 실패하며, 범위를 넓히거나 쿨다운을 우회해야 한다. 기술적으로는, 패키지 매니저가 버전 후보를 처리하기 전에 레지스트리 메타데이터 레이어에서 새로운 버전을 제거하는 방식으로 구현된다.

PMG(Package Manager Guard)를 이용한 구현

PMG(Package Manager Guard)는 npm, pnpm, pip 등 다양한 패키지 매니저를 감싸서, 안전한 패키지 설치를 지원한다. PMG는 SafeDep의 위협 인텔리전스(Threat Intelligence)를 기반으로 설치를 검사하고, OS 샌드박스(OS Sandbox)에서 실행하여 악성 코드 실행을 방지한다. 의존성 쿨다운은 PMG의 별도 기능으로, config.yml 파일에서 활성화 및 설정할 수 있다. 설치 및 쉘 설정은 brew 또는 npm을 통해 이루어지며, 쉘 설정을 위해 pmg setup install 명령어를 실행해야 한다.

의존성 쿨다운(Dependency Cooldown)의 트레이드오프(Trade-offs)

의존성 쿨다운(Dependency Cooldown)은 최신 버전 획득 지연이라는 트레이드오프(Trade-off)를 가진다. 즉, 보안 패치가 릴리스된 경우, 쿨다운 기간 동안 해당 패치를 적용할 수 없게 된다. 이는 제로데이(Zero-day) 공격에 취약해질 수 있는 위험을 내포한다. 하지만, 대부분의 프로덕션 환경에서는 최신 버전의 즉각적인 적용보다 안정성을 우선시하므로, 이 트레이드오프는 허용 가능한 수준으로 평가된다. 특히, 개발 환경에서는 --skip-dependency-cooldown 옵션을 통해 쿨다운을 우회할 수 있다.

커뮤니티의 반응

커뮤니티에서는 의존성 쿨다운(Dependency Cooldown)이 보안 패치 적용을 지연시켜 제로데이(Zero-day) 공격에 취약하게 만들 수 있다는 우려가 제기되었다. 반면, 일부에서는 프로덕션 환경의 안정성을 위해 쿨다운이 필요하다는 의견도 제시되었다. 또한, Maven과 같이 의존성 쿨다운 기능을 기본적으로 제공하지 않는 패키지 매니저에 대한 개선 필요성이 언급되었다. 전반적으로, 의존성 쿨다운은 보안과 안정성 사이의 균형을 맞추는 기술로 평가된다.

Dependency cooldown using the publish age as a signal for package resolution