소프트웨어 자재 명세서(Software Bill of Material, SBOM)
소프트웨어 자재 명세서(Software Bill of Material, SBOM)는 소프트웨어 패키지/라이브러리/모듈 등의 정보를 관리하기 위해 작성한다. 요즘은 보안 취약점 관리에서도 중요한 역할을 한다. 그런데 SBOM 국제 표준 통합이 안되어 있다보니 SBOM 형식은 여러 가지가 존재하고 있다. SBOM 포맷은 SBOM을 생성하기 위한 전체 구조를 정의한다. 소프트웨어 구성 정보를 다른 툴이 이해할 수 있게 해주는 형식이자 정보 매개체이기도 하다.
주요 SBOM 포맷은 다음과 같다.
- SPDX(Software Package Data Exchange)
- 사이클론DX(CycloneDX)
- SWID 태그(Software Identification Tags)
SPDX와 사이클론DX는 소프트웨어 보안에 주로 채택되며, SWID는 라이선스에 중점을 두므로 보조 역할을 제공하는 용도로 쓸 수 있다.
SPDX
1) 리눅스 재단에서 운영하는 프로젝트이다(SPDX).
2) 소프트웨어 패키지 관련 정보를 다루는 공통 데이터 교환 포맷을 만드는 것이 목적이다.
3) SPDX는 SBOM 포맷 중에서 가장 많은 파일 형식을 지원한다(RDFa, .xlsx, .spdx, .xml, .json, .yaml. 등).
4) 일련의 소프트웨어 패키지, 파일 또는 스니펫(Snippet)을 설명하므로 동적 사양 관리를 지향한다.
5) SPDX는 국제 표준화 기구(ISO)의 인증 자격을 취득한 SBOM 포맷이다. (ISO에서 정의한 표준화 및 품질 보증 요건을 모두 충족함을 의미한다. SPDX 커뮤니티에 속하는 인텔, 마이크로소프트, 지멘스, 소니 같은 기업들이 SPDX를 채택했다.)
6) SPDX에서 정의된 특정 필드와 섹션이 존재해야 유효한 SPDX 문서이다. (문서 생성, 패키지, 파일, 스니펫, 라이선스, 관계성(의존성) 등의 정보 필드와 데이터로 구성될 수 있다.)
7) 패키지 정보는 제품, 컨테이너 및 구성요소와 같은 다양한 개체 설명이다. 컨텍스트 공유 항목들의 그룹화애도 사용한다. 8) 파일 정보는 이름, 체크섬 라이선스, 저작권 정보 같은 파일 메타데이터를 포함한다.
9) 스니펫(선택 사항)은 데이터가 다른 원본 소스와 관련되었거나 다른 라이선스와 관련 있을 때 사용된다.
10) 문서, 패키지 및 파일에 대한 관계를 나타내는 관계성(의존성) 항목도 지원한다.
11) 주석을 사용하여 검토 활동 정보를 SPDX 문서에 추가할 수도 있다.
참고로, SPDX는 SPDX 사양의 하위 집합인 SPDX 라이트(Lite) 프로파일을 제공하므로 특정 워크플로우와 연계하면서 SPDX 표준과 사양을 준수할 수도 있다(라이트 프로파일은 문서 생성 및 패키지 정보 영역에 중점을 두고 있다).
사이클론DX
1) 보안 커뮤니티 리더인 국제 웹 보안 표준기구(Open Web Application Security Project, OWASP)가 주도한다(사이클론DX). OWASP 이외에도 록히드 마틴, 컨트래스트 시큐리티(Contrast Security) 및 소나타입(Sonatype)이 사이클론DX를 지원한다.
2) 애플리케이션 보안 컨텍스트, 공급망 구성 분석을 위한 경량의 SBOM 표준이라고 정의되어 있다.
3) 사이클론DX은 처음부터 BOM 형식으로 설계되었다. SaaS BOM(software-as-a-service BOM)을 포함한 다양한 사례를 충족한다.
4) 하드웨어, 클라우드, SaaS와 관련하여 소프트웨어 생태계 복잡성에 대응하는 중첩/계층형 접근에 대한 시스템 및 BOM 구성요소, 서비스, 취약점 참조를 지원한다. (JSON과 XML 포맷에서 모두 지원된다.) 사용자는 외부 BOM의 URL 또는 외부 BOM의 시리얼 번호,버전을 사용하는 BOM링크 URI도 참조 가능하다.
5) 위험 식별을 위해 모든 퍼스트/서드파티 구성요소에 대한 정확한 인벤토리를 만든다. 기기 및 서비스까지 확장되는 구성요소 유형 및 클래스 리스트를 통해 생성한다. CPE(Common Platform Enumeration), SWID, 패키지URL(Pacakge-URL, PURL)이라는 세 영역에 대한 취약점을 식별한다.
6) 해시값과 암호화를 통해 BOM 구성 요소의 무결성 검증을 지원한다.
7) 프로비넌스(provenance)를 지원하는데, 사용 구성요소들의 작성자 및 공급자를 나타낸다.
8) 소프트웨어 제품과 구성요소 취약점 악용에 대한 정보를 제공한다.
SBOM 포맷 지원 도구 Syft
SBOM 생성 도구인 시프트(Syft)는 앞에서 언급한 2가지 포맷을 모두 지원한다.
참조: https://www.ciokorea.com/news/250432#csidx2afc841a1d537058ca99962dbcfe214
'정보 보호, 보안, 해킹' 카테고리의 다른 글
오픈소스 사용 비율 (0) | 2023.03.04 |
---|---|
FACT core (Firmware Analysis and Comparison Tool) (0) | 2023.02.26 |
계정 해킹, 크리덴셜 스터핑(Credential Stuffing)이란? (0) | 2023.01.17 |
파이썬, tarfile 모듈 보안 취약점 (0) | 2022.09.23 |
CISO 세 명의 이야기 (보안뉴스) (0) | 2022.06.09 |