
알려진 취약점을 가진 구성 요소 사용
대부분의 애플리케이션에서는 대량의 타사 컴포넌트를 사용합니다. 이러한 컴포넌트는 로깅, 템플릿, 데이터베이스 액세스 등 모든 기능을 제공합니다.
이로 인해 소프트웨어 개발이 훨씬 쉬워지고 시간을 크게 절약할 수 있지만, 이러한 구성 요소들도 사람이 만든 것이며 그중에는 필연적으로 취약점이 포함된 것들도 있습니다. 즉, 모르는 사이에 악용될 수 있는 취약점에 노출될 가능성이 있다는 뜻입니다.
컴포넌트를 최신 상태로 유지
일반적인 경험칙으로, 프레임워크, 라이브러리 및 기타 구성 요소를 정기적으로 최신 상태로 유지할 것을 강력히 권장합니다. 이를 위한 다양한 방법이 있습니다.
- 많은 소스 관리 소프트웨어는 저장소를 분석하여 의존성에서 취약점이 발견될 때 경고합니다.
- 많은 패키지 관리자가 애플리케이션을 분석하여 취약한 종속성을 식별할 수 있습니다.
- 취약한 종속 관계를 식별할 수 있는 소프트웨어 구성 분석(SCA) 솔루션은 다수 존재합니다.
기술적 부채의 위험 완화
라이브러리 업그레이드와 관련된 까다로운 문제 중 하나는 코드를 깨뜨릴 수 있는 변경 사항이 적용될 가능성이 있다는 점입니다. 이러한 변경 사항은 대부분 문서화되어 있지만, 문서화되지 않은 변경 사항도 존재하며, 코드가 실제 운영 환경에서 실행되기 전까지는 반영되지 않을 수도 있습니다.
애플리케이션이 최신 버전보다 더 오래된 버전을 실행 중인 경우, 최신 버전으로의 업그레이드에는 상당한 작업이 필요할 수 있습니다. 긴급한 취약점이 공개된 경우, 업그레이드에 며칠이 소요되는 상황을 피하기 위해 서드파티 컴포넌트를 비교적 최신 상태로 유지하는 것이 중요합니다.
또한, 릴리스 노트를 읽지 않고 무턱대고 패키지를 업그레이드하는 것은 권장하지 않습니다. 릴리스 노트에는 명백하지 않지만 애플리케이션의 기능을 변경할 수 있는 변경 사항에 관한 중요한 정보가 포함되어 있을 수 있기 때문입니다.
업데이트하면 보안성이 더욱 높아질 수 있습니까?
흔한 일은 아니지만, 취약점으로 인해 다음과 같은 사례가 보고되고 있습니다.
- 이전 버전에는 존재하지 않습니다
- 취약점을 수정할 때 소개받게 된다
이러한 경우에는 패키지를 정기적으로 업데이트하는 것이 바람직하지 않다고 생각할 수 있습니다. 물론, 이러한 사고방식은 기술적 부채의 축적으로 이어지므로 가능한 한 피해야 합니다.
이 시나리오는 비교적 드물다는 점을 고려할 때, 패키지를 자주 업데이트하는 이점은 새로 도입된 취약점의 가능성을 훨씬 능가합니다. 정기적으로 최신 정보를 받아본다면, 어차피 쉽게 완화할 수 있을 것입니다.
또한 벤더가 아무런 공개도 없이 조용히 취약점을 수정하지 않을 것이라고 가정하고 있지만, 안타깝게도 이는 지금도 여전히 매우 흔한 일입니다.
주목할 만한 사례
최근 들어 주목할 만한 몇 가지 사례를 아래에 제시합니다. 라이브러리를 확인하고 항상 최신 상태로 유지하는 것이 중요한 이유와 방법을 알 수 있습니다.