스물두줄

정보관리기술사 · 소프트웨어 공학

SBOM(소프트웨어 구성명세서)

SBOM은 소프트웨어 구성명세서다. 컴포넌트의 목록, 버전, 출처, 라이선스 정보를 기계가 읽을 수 있는 형식으로 기술한다. 이름은 제조업의 자재명세서 BOM에서 빌려 온 말이다. SBOM 자체는 취약점을 없애지 않고, 취약점이 어디 있는지 찾아 조치하는 근거를 준다…

주요 장면

  1. 0:02 SBOM의 정의
  2. 0:26 구성 요소와 의존성
  3. 0:50 SPDX와 CycloneDX
  4. 1:13 SBOM 생성과 관리 순환
  5. 1:40 취약점 영향 범위 추적
  6. 2:03 계산 예제
  7. 2:33 정리

대본

SBOM의 정의

SBOM은 소프트웨어 구성명세서다.

컴포넌트의 목록, 버전, 출처, 라이선스 정보를 기계가 읽을 수 있는 형식으로 기술한다.

이름은 제조업의 자재명세서 BOM에서 빌려 온 말이다.

SBOM 자체는 취약점을 없애지 않고, 취약점이 어디 있는지 찾아 조치하는 근거를 준다.

구성 요소와 의존성

SBOM의 구성 요소는 라이브러리, 패키지, 프레임워크 같은 단위다.

제품이 직접 호출하는 패키지는 직접 의존성이다.

그 패키지가 다시 끌어오는 패키지는 간접 의존성, 즉 전이 의존성이다.

간접 의존성은 눈으로 확인하기 어려워 SBOM에 반드시 포함해야 한다.

SPDX와 CycloneDX

SBOM을 기록하는 형식은 여러 가지다.

SPDX는 라이선스 준수에, CycloneDX는 취약점 식별에 초점이 있다.

두 형식 모두 기계가 읽을 수 있어 도구 간 자동 처리가 가능하다.

SWID는 설치 식별 중심의 태그 형식으로, 자산 관리에 쓰인다.

SBOM 생성과 관리 순환

SBOM은 빌드 단계에서 소스와 패키지 의존성 정보를 모아 만든다.

만든 SBOM은 SPDX 또는 CycloneDX 형식으로 공유하고, 취약점 DB와 대조한다.

매칭 결과에 따라 긴급 패치나 롤백 같은 조치를 한다.

구성이 바뀌면 SBOM을 다시 생성해 이력을 갱신한다.

취약점 영향 범위 추적

SBOM이 있으면 취약점 영향 범위를 빠르게 산정할 수 있다.

B에서 취약점이 공개되면 SBOM에서 B의 버전과 사용 제품을 먼저 조회한다.

CVE 정보로 취약 버전 범위를 확인하고, 패치 버전을 적용해 재빌드한다.

재배포 후에는 SBOM을 갱신하고 기록을 남긴다.

계산 예제

전체 120개 중 직접 의존성이 30개, 전이 의존성이 90개라고 하자.

전이 의존성 비율은 90을 120으로 나눈 값이므로 75%다.

직접 의존성만 점검하면 전체의 25%만 확인하는 셈이다.

그래서 SBOM에는 전이 의존성까지 포함해야 한다.

정리

SBOM은 구성요소, 버전, 의존성, 라이선스를 담은 목록이다.

대표 형식은 SPDX와 CycloneDX이며, 초점이 서로 다르다.

답안에는 생성, 공유, 취약점 매칭, 조치, 갱신이 이어지는 관리 절차로 쓴다.

같은 장의 영상