추가하는 의존성 하나하나는 터지기를 기다리는 공급망 공격이다
원문은 Ben Hoyt님이 에 게재했습니다. 이 블로그 구독하기
에세이 “The small web is beautiful”에서 의존성을 줄이는 것이 프로그램을 더 작게 만든다고 이야기한 바 있다. 하지만 프로그램을 더 작게 만들 뿐만 아니라 더 안전하게도 만든다.
최근에서 보았듯이 서드파티 라이브러리는 실제로 침해될 수 있고, 또 침해된다. 우리는 XZ 백도어 사태에서 이를 대규모로 목격했고, 더 최근에는 Trivy 사건과 LiteLLM 침해(실제로는 Trivy가 원인이었다)에서도 보았다.
Trivy 사례에서 흥미로운 점은 Trivy가 런타임 의존성조차 아니라는 사실이다. 개발 의존성(dev dependency)이다. 하지만 개발 의존성이 침해되어도 크리덴셜을 탈취하고 프로젝트를 장악할 수 있다.
눈썰미 있는 독자라면 제목이 그리 정확하지 않다는 것을 눈치챘을 것이다. 문제가 되는 것은 추가하는 모든 의존성이 아니라 업데이트하는 모든 의존성이다. 의존성을 처음 평가했을 때(그리고 해시를 lockfile에 추가했을 때) 나름의 검증을 거쳤을 것이다. 하지만 프로젝트에서 Dependabot을 사용하고 있다면 의존성은 별다른 검토 없이 자동으로 업데이트된다.
아마 Dependabot을 꺼야 할 것이다. 내 경험상 자동 업데이트로 생기는 문제가 필요할 때까지 예전 버전을 그대로 유지했을 때 생길 문제보다 더 많다.
그러니 프로젝트에 새 의존성을 추가하기 전에 두 번, 아니 세 번 생각해 보라. Go 격언에서 말하듯, “약간의 복사가 약간의 의존성보다 낫다”.
글을 무작위로 읽기
댓글
로그인하고 댓글 남기기