영웅 배경, 구분선 없음
지침

알려진 취약점을 가진 구성 요소 사용

대부분의 애플리케이션은 다량의 타사 구성 요소를 사용합니다. 이러한 구성 요소들은 로깅부터 모델 생성, 데이터베이스 접근 등에 이르기까지 모든 기능을 제공합니다.

이는 소프트웨어 개발을 크게 용이하게 하고 많은 시간을 절약해 줍니다. 그러나 이러한 구성 요소 역시 사람이 제작한 것이며, 일부는 필연적으로 취약점을 포함하게 됩니다. 이는 여러분이 모르는 사이에 악용될 수 있는 취약점에 노출될 수 있음을 의미합니다.

구성 요소 유지 관리

일반적으로 프레임워크, 라이브러리 및 기타 구성 요소를 정기적으로 업데이트하는 것이 강력히 권장됩니다. 이는 다음과 같은 다양한 방법으로 수행할 수 있습니다:

  • 많은 소스 코드 관리 소프트웨어는 저장소를 분석하여 종속성에서 취약점이 발견될 경우 경고할 수 있습니다.
  • 여러 패키지 관리자를 통해 애플리케이션을 분석하고 존재할 수 있는 취약한 종속성을 식별할 수 있습니다.
  • 소프트웨어 구성 분석(SCA) 솔루션은 취약한 종속성을 식별할 수 있는 다양한 방법이 존재합니다.

기술적 부채 위험 완화

라이브러리 업그레이드와 관련된 다소 교묘한 문제는 코드 변경이 발생할 수 있다는 점입니다. 이러한 변경 사항은 종종 문서화되지만, 문서화되지 않은 일부 변경 사항은 실제 운영 환경에서 코드가 실행되기 전까지는 드러나지 않을 수도 있습니다.

애플리케이션이 최신 버전 대비 여러 버전을 실행 중인 경우, 최신 버전으로의 업그레이드에는 상당한 작업이 필요할 수 있습니다. 시간에 민감한 취약점이 발견된 경우, 업그레이드에 며칠이 소요되는 상황을 방지하기 위해 타사 구성 요소에 대해 비교적 최신 상태를 유지하는 것이 필수적입니다.

패키지를 무턱대고 업데이트하는 것도 권장하지 않습니다. 최소한 릴리스 노트를 읽어보지 않고서는 안 됩니다. 릴리스 노트에는 눈에 띄지 않지만 애플리케이션의 동작을 변경할 수 있는 중요한 수정 사항에 대한 정보가 포함되어 있을 수 있기 때문입니다.

업데이트가 귀하의 상황을 더 불안정하게 만들 수 있습니까?

비록 흔한 일은 아니지만, 취약점이 다음과 같은 결과를 초래할 수 있는 경우가 있었습니다:

  • 이전 버전에는 존재하지 않습니다
  • 취약점 수정 과정에서 노출됨

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

이러한 시나리오가 상대적으로 드물다는 점을 고려할 때, 패키지의 빈번한 업데이트로 인한 이점은 최근 도입된 취약점 가능성보다 훨씬 크며, 정기적으로 업데이트를 유지한다면 어차피 쉽게 완화될 수 있을 것입니다.

또한 공급업체들이 취약점을 아무런 공개 없이 조용히 수정하지 않는다는 전제에서 출발하는데, 안타깝게도 이는 여전히 매우 흔한 일이다.

주목할 만한 예시들

최근에 들어보셨을 만한 주목할 만한 사례 몇 가지를 소개합니다. 이 사례들을 통해 라이브러리를 확인하고 최신 상태를 유지하는 것이 왜 중요한지, 그리고 그 방법을 알 수 있습니다.