소프트웨어 구성 분석(SCA)이란 무엇인가요?
소프트웨어 구성 분석(SCA)은 애플리케이션에서 사용 중인 오픈 소스 패키지에 대한 심층 분석을 제공합니다. SCA는 위험 및 규정 준수 평가를 위해 종속성의 취약성과 라이선스를 강조 표시하며, 모든 리소스에 대한 소프트웨어 자재 명세서(SBOM)를 생성하여 내부 이해관계자 및 외부 고객과 공유할 수 있습니다.
소프트웨어 구성 분석이란 무엇인가요?
소프트웨어 구성 분석을 통해 개발자는 조직을 불필요한 취약성이나 법률 및 규정 준수 문제에 노출시키지 않고도 오픈 소스 패키지를 안전하게 활용할 수 있습니다.
오픈 소스 구성 요소는 최신 소프트웨어 개발에서 널리 사용되고 있으며, 대부분의 최신 애플리케이션 코드베이스는 이러한 패키지로 구성되어 있습니다. 이 방법을 사용하면 커뮤니티에서 자유롭게 사용할 수 있고 검증을 거친 코드를 다시 만들 필요가 없으므로 개발자가 더 빠르게 작업할 수 있습니다. 하지만 이 과정에는 그에 따른 위험도 따릅니다.
오픈 소스 컴포넌트 사용의 위험은 무엇인가요?
이러한 구성 요소로 컨테이너 이미지를 빌드하기 전에 개발자는 이전에 발견된 패키지의 취약점으로 인한 보안 문제를 알고 있어야 합니다. 또한 소프트웨어 사용 라이선스와 관련된 규정 준수 요구 사항을 충족하고 있는지 확인해야 합니다.
커뮤니티 회원들이 취약점을 자주 발견하고 패치하지만 개발자가 코드를 업데이트해야 하는 부담은 개발자에게 있습니다. 취약점이 발견되면 공개 익스플로잇이 제공되는 것은 시간 문제이며, 낮은 수준의 공격자들도 이 문제를 악용할 수 있는 기회가 열립니다.
소프트웨어의 취약점 대부분이 즉각적인 패키지나 루트 패키지가 아니라 여러 계층에 걸쳐 있는 종속성에 있다는 사실 때문에 문제는 더욱 심각해집니다. 사용 중인 루트 패키지만 수정한다고 해서 사용 중인 라이브러리가 항상 보호되는 것은 아닙니다.
또한 다양한 규칙을 가진 수십 가지의 오픈 소스 라이선스가 있습니다. 예를 들어 어트리뷰션이 필요한 컴포넌트가 있는 반면, 컴포넌트를 사용하는 애플리케이션의 소스 코드도 함께 게시해야 하는 컴포넌트도 있습니다. 모든 라이선스와 해당 규칙을 추적하는 것은 어려울 수 있습니다.
소프트웨어 구성 분석으로 오픈 소스 패키지의 위험 식별
SCA 도구는 애플리케이션의 모든 오픈 소스 패키지와 해당 패키지의 알려진 모든 취약점을 식별합니다. 이 지식은 개발자에게 코드의 문제를 알려 악용되기 전에 수정할 수 있도록 하는 데 사용할 수 있습니다. 좋은 소프트웨어 구성 분석 프로세스는 패키지 관리자를 넘어 인프라로서의 코드(IaC) 및 Kubernetes 매니페스트까지 살펴보고 이미지를 가져와 해당 이미지의 취약점을 식별합니다.

IaC 템플릿에 연결되고 무제한 종속성 스캔이 가능한 SCA 도구는 취약점이 탐지되지 않거나 해결되지 않는 것을 방지합니다.
소프트웨어 구성 분석 도구를 사용하여 애플리케이션에서 사용하는 모든 오픈 소스 구성 요소를 포함하는 소프트웨어 자재 명세서(SBOM 또는 소프트웨어 BOM)를 생성할 수도 있습니다. SBOM에는 패키지 버전에 대한 세부 정보와 사용 중인 각 구성 요소의 알려진 취약점 및 라이선스가 나열되어 있습니다. 예를 들어 Python의 경우 BOM에는 httplib2와 같이 가져오기 문에 포함된 모든 패키지가 각 패키지의 버전 번호, 발견된 취약점 및 라이선스와 함께 포함됩니다.
SCA 프로그램은 엔지니어링, DevOps, 보안 및 규정 준수 팀과 같은 이해관계자 간의 협업을 지원해야 합니다. 많은 조직에서 이러한 프로그램을 사용하여 경고를 생성하거나 해당 코드에 조직의 노출 제어 규정 준수 의무를 위반하는 오픈 소스 구성 요소가 포함된 경우 코드가 리포지토리에 병합되는 것을 차단합니다. 취약성 및 라이선스 유형에 대한 허용 가능한 심각성 수준을 결정할 때는 관련 이해관계자가 참여해야 합니다.
개발 프로세스에서 SCA를 사용하는 방법
좋은 SCA 프로세스는 개발 프로세스 전반에 걸쳐 내장되어 있습니다. 로컬 환경에서는 개발자가 코드를 작성할 때 취약성 및 라이선스 준수 여부를 확인할 수 있어야 합니다.
통합 개발 환경(IDE) 플러그인을 활용하는 SCA 도구는 개발자가 패키지를 추가할 때 취약성에 대해 알려줄 수 있습니다. 코드가 코드 리포지토리에 커밋되기 전에 검사 및 자동화된 풀 리퀘스트 코멘트를 통해 개발자에게 도입되는 모든 문제를 알리고 요구 사항을 충족하지 않는 코드를 차단해야 합니다.
이는 미리 정해진 수준의 취약성 또는 라이선스 유형이 있는 소프트웨어가 구축되는 것을 차단할 수 있는 구축에도 적용되어야 합니다. 또한 보안 팀은 환경 내 구성 요소의 상태에 대한 폭넓은 가시성을 확보해야 합니다.

소프트웨어 구성 분석은 코드 투 클라우드, 인프라에서 애플리케이션 계층으로 범위를 확장하여 개발 수명 주기 전반에 걸쳐 취약성을 추적합니다.
모든 영역에서 개발자는 패키지로 인해 노출될 수 있는 위험에 대한 정보를 제공받아야 합니다. 취약점은 중요도 및 인프라에 미치는 영향(예: 취약한 패키지가 비공개 VPC에 있는 경우)을 기준으로 취약점의 순위와 우선순위를 정해야 합니다(예: CVE 점수 및 취약점이 보고된 이후 시간 사용). 라이선스는 허용되지만 저작자 표시와 같은 추가 세부 사항이 필요한 라이선스와 '카피레프트' 라이선스처럼 조직 정책에 따라 허용되지 않는 라이선스로 그룹화해야 합니다.
소프트웨어 구성 분석의 이점
팀에서 애플리케이션 환경의 상태를 파악하는 것이 중요합니다. 소프트웨어 구성 분석은 라이선스 준수 및 취약성 피드백을 조기에 자주 제공함으로써 애플리케이션에서 오픈 소스 구성 요소를 사용할 때의 위험을 일부 완화하는 데 도움이 됩니다. 100% 패치율을 달성할 가능성은 낮지만, 위험을 파악하고 취약점을 수정하는 데 드는 비용을 따져보는 것은 보안 태세 개선의 일환입니다.
최신 개발 프로세스의 보안에 대해 자세히 알아보려면 DevSecOps란 무엇인가요?