가이드라인

알려진 취약점이 있는 구성 요소 사용

대부분의 애플리케이션은 대량의 타사 컴포넌트를 사용합니다. 이러한 구성 요소는 로깅, 템플릿, 데이터베이스 액세스 등 모든 것을 제공합니다. 

이렇게 하면 소프트웨어 개발이 훨씬 쉬워져 많은 시간을 절약할 수 있지만, 이러한 구성 요소도 사람이 만든 것이므로 일부에는 필연적으로 취약점이 포함될 수 있습니다. 즉, 자신도 모르게 악용될 수 있는 취약점에 노출될 수 있습니다.

컴포넌트를 최신 상태로 유지

일반적으로 프레임워크, 라이브러리 및 기타 컴포넌트를 정기적으로 최신 상태로 유지하는 것이 좋습니다. 여러 가지 방법으로 이를 수행할 수 있습니다:

  • 많은 소스 제어 소프트웨어가 리포지토리를 분석하여 종속성에서 취약점이 발견되면 사용자에게 알려줍니다.
  • 많은 패키지 관리자가 애플리케이션을 분석하고 취약한 종속성을 식별할 수 있습니다.
  • 취약한 종속성을 식별할 수 있는 수많은 소프트웨어 구성 분석(SCA) 솔루션이 시중에 나와 있습니다. 

기술 부채의 위험 완화

라이브러리 업그레이드의 다소 교활한 문제 중 하나는 코드가 변경될 수 있다는 것입니다. 이러한 변경 사항은 대부분 문서화되어 있지만, 프로덕션 환경에서 코드를 실행할 때까지 나타나지 않을 수 있는 문서화되지 않은 변경 사항도 있을 수 있습니다. 

애플리케이션이 최신 버전보다 여러 버전 뒤에서 실행되고 있는 경우 최신 버전으로 업그레이드하는 데 상당한 작업이 필요할 수 있습니다. 시간에 민감한 취약점이 공개되는 경우 업그레이드에 며칠이 걸리는 상황을 피하려면 타사 구성 요소를 비교적 최신 상태로 유지하는 것이 중요합니다. 

또한 릴리스 노트에는 명확하지는 않지만 애플리케이션의 작동 방식을 바꿀 수 있는 변경 사항에 대한 중요한 정보가 포함되어 있을 수 있으므로 최소한 릴리스 노트를 읽지 않고 무작정 패키지를 업그레이드하는 것은 권장하지 않습니다. 

업데이트하면 더 불안해지나요?

흔하지는 않지만 취약점이 발생할 수 있는 경우가 있었습니다:

  • 이전 버전에는 존재하지 않음
  • 취약점 수정 시 도입

이러한 사례로 인해 패키지를 정기적으로 업데이트하는 것이 바람직하지 않다고 생각할 수 있습니다. 물론 이러한 생각은 기술 부채의 축적으로 이어지므로 가능한 한 피해야 합니다. 

이 시나리오가 상대적으로 드물다는 점을 감안할 때, 패키지를 자주 업데이트함으로써 얻을 수 있는 이점이 새로 도입되는 취약점의 가능성보다 훨씬 크며, 정기적으로 최신 버전을 유지한다면 쉽게 완화할 수 있습니다. 

또한 공급업체가 취약점을 공개하지 않고 조용히 수정하지 않는다고 가정하는데, 안타깝게도 이는 여전히 매우 흔한 일입니다. 

주목할 만한 예

최근에 들어보셨을 만한 몇 가지 주목할 만한 사례가 아래에 나열되어 있습니다. 라이브러리를 확인하고 최신 상태를 유지하는 것이 중요한 이유와 방법을 확인할 수 있습니다.