소프트웨어 공급망 보안을 위한 SBOM은 무엇이고, 어떻게 생성하고 관리해야 할까요?

스패로우가 여러 궁금증을 해결해드립니다. 🪄

소프트웨어 공급망 보안이란 무엇이고, 왜 중요한가요?


모든 소프트웨어는 외부 라이브러리와 오픈소스 컴포넌트를 사용하고 있습니다. 이는 개발 효율성을 높이고 비용을 절감할 수 있지만, 동시에 보안 위험도 높아집니다. 타사 컴포넌트에 알려지지 않은 취약점이 존재할 수 있고, 라이선스 위반 등의 법적 이슈도 발생할 수 있기 때문입니다.

최근 SolarWinds, Kaseya, Log4Shell 등 대규모 소프트웨어 공급망 공격 사례가 발생했습니다. 올해 3월 말에는 유닉스 계열 운영체제에서 널리 사용되는 압축 유틸리티인 XZ utils에서 백도어로 사용될 수 있는 취약점이 발견되기도 했습니다. 해당 취약점은 다행히 주요 리눅스 배포판에 합쳐지기 이전에 발견되었으나, 여전히 소프트웨어 공급망 공격 결과가 광범위하게 영향을 끼칠 수 있음을 확인했습니다.

SBOM과 SCA는 무엇인가요?


소프트웨어 개발 생명 주기인 SDLC(Software Development Life Cycle)에서 공급망 보안을 지키기 위해서는 먼저 사용 중인 오픈소스와 라이브러리를 지속적으로 분석하고 관리해야 합니다. SCA(Software Composition Analysis)와 SBOM(Software Bill of Materials)은 이를 위한 핵심 도구입니다.

먼저, SBOM소프트웨어 자재 명세서입니다. 소프트웨어에 포함된 모든 컴포넌트 및 관련 정보 목록을 의미합니다. 여기에는 오픈소스 라이브러리, 프레임워크 등의 상세 버전 정보와 해시값, 라이선스, 보고된 취약점 등의 메타데이터가 포함됩니다. 조직 내 구성원뿐 아니라 수요업체, 공급업체와도 이 정보를 공유하여 체계적으로 관리할 수 있습니다.

2021년 미국의 행정명령(EO 14028)은 미국 NTIA는 SBOM의 생성과 활용에 아래 세 가지 항목을 필수 요소로 설계하였습니다.

필수 요소 주요 항목
데이터 필드 공급자 이름, 컴포넌트 이름 및 버전, 고유 식별자, 의존 관계, 기타 SBOM 데이터, 생성 타임스탬프
자동화 지원 소프트웨어 생태계 전반에서 활용 가능한 자동 생성 및 기계 가독성 형식(SPDX, CycloneDX, SWID tag)
운영 사례 및 절차 SBOM을 요청하고 생성하거나 사용하는 운영 방식으로, 버전 업데이트마다 SBOM을 새로 생성하는 것 등의 관례