SBOM 표준 형식

SBOM(Software Bill of Materials)은 소프트웨어 애플리케이션에 사용되는 모든 구성 요소, 라이브러리 및 기타 종속성의 목록입니다. SBOM의 표준 형식에는 SPDX, CycloneDX 및 CPE(Common Platform Enumeration)가 포함됩니다. 이러한 형식은 소프트웨어 애플리케이션의 구성 요소와 종속성을 나타내는 구조화된 방법을 제공하므로 해당 구성 요소와 관련된 보안 위험을 더 쉽게 이해하고 관리할 수 있습니다.

이 기사에서는 다양한 SBOM 형식과 표준이 무엇인지, SBOM에 포함되어야 하는 항목, 모든 조직에서 이를 사용해야 하는 이유를 자세히 설명하겠습니다.

SBOM 표준이란 무엇입니까?

현대 소프트웨어 시스템 공급망의 복잡성과 동적 특성은 투명성에 심각한 문제를 제기합니다. 이러한 투명성 부족으로 인해 사이버 보안 위험이 발생하고 개발, 조달 및 유지 관리와 관련된 비용이 증가합니다. 이로 인한 결과는 광범위하며 비즈니스뿐만 아니라 상호 연결된 세계의 공공 안전 및 국가 안보와 같은 집단적 문제에도 영향을 미칩니다.

소프트웨어 공급망의 투명성이 향상되면 다음을 통해 사이버 보안 위험과 비용을 줄일 수 있습니다.

  • 취약한 시스템 식별 개선 및 사고의 근본 원인 식별
  • 계획되지 않은 비생산적인 작업 감소
  • 보다 많은 정보를 바탕으로 시장 차별화 및 구성요소 선택 가능
  • 여러 부문에 걸쳐 형식을 표준화하여 노력의 중복을 줄입니다.
  • 의심스럽거나 위조된 소프트웨어 구성 요소 감지

이러한 정보를 명확하고 일관된 형식으로 수집하고 공유하면 비용을 절감하고 신뢰성을 높이며 디지털 인프라에 대한 신뢰를 높일 수 있습니다.

그 목적을 위해, 표준 및 형식에 관한 NTIA 소프트웨어 투명성 실무 그룹 소프트웨어 BOM의 현재 형식을 평가하고 잠재적인 향후 용도를 식별하기 위해 2018년에 설립되었습니다. 그룹은 소프트웨어 제품에 사용되는 외부 구성 요소 및 공유 라이브러리를 식별하고 이 정보를 기계가 읽을 수 있는 형식으로 전달하는 것과 관련된 기존 표준 및 이니셔티브를 조사했습니다. 그룹은 독점 형식을 고려하지 않았습니다. 원래 설문조사는 2019년 말에 발표되었으며 2021년에 업데이트되었으며, SBOM 도구 생태계의 이점과 기술 SBOM 세계에서 조정 및 조화의 중요성을 강조하는 데 중점을 두었습니다. 핵심은 SBOM 데이터가 다양한 형식으로 전달될 수 있으며 생태계가 이들 간의 상호 운용성을 지원해야 한다는 것입니다.

작업 그룹은 세 가지 형식이 일반적으로 사용된다는 사실을 발견했습니다. 

  1. SPDX®(Software Package Data Exchange)는 Linux Foundation에서 개발했으며 현재는 ISO/IEC 표준인 기계 판독 가능한 오픈 소스 형식입니다.
  2. OWASP 커뮤니티에서 개발한 오픈 소스, 기계 판독 가능 형식인 CycloneDX(CDX)
  3. SWID(Software Identification)는 다양한 상용 소프트웨어 게시자가 사용하는 ISO/IEC 산업 표준입니다.

이 세 가지 형식이 몇 가지 공통 정보를 공유한다는 점은 주목할 가치가 있습니다. 그러나 전통적으로 소프트웨어 개발 프로세스의 다양한 단계에서 사용되어 왔으며 다양한 대상을 대상으로 합니다. 이 기사에서는 이러한 각 형식에 대해 자세히 설명합니다.

SBOM에는 무엇이 포함되어야 합니까?

NTIA의 최소 구성 요소 요소라고 하는 SBOM의 구성 요소는 세 가지 광범위하고 상호 연관된 영역으로 구성됩니다. 이러한 요소를 사용하면 소프트웨어 투명성에 대한 유연한 접근 방식을 통해 기술과 기능적 운영을 모두 해결할 수 있습니다. 향후 더 자세한 내용이나 기술적인 개선 사항이 추가될 수 있습니다. 앞서 언급했듯이 이는 현재 최소 구성 요소이며 조직에서는 더 많은 구성 요소가 필요할 수 있습니다. 소프트웨어 공급망의 투명성 능력은 시간이 지남에 따라 향상되고 발전할 수 있습니다.

Bowman의 SBOM의 최소 필수 요소 일반적으로 세 가지 범주로 분류됩니다.

  1. 데이터 필드: SBOM에는 구성 요소 이름, 공급업체 이름, 버전, 고유 식별자 등 소프트웨어 구성 요소에 대한 중요한 데이터가 포함되어야 합니다. 또한 공급망 전체에서 모든 소프트웨어 구성 요소를 정확하게 식별하고 추적할 수 있도록 구성 요소 간의 종속성에 대한 정보도 포함해야 합니다.
  2. 관행 및 프로세스: 또한 SBOM 문서에는 SBOM 생성 및 업데이트, 배포 및 액세스, 오류 처리에 대한 표준 관행 및 절차가 요약되어 있어야 합니다.
  3. 자동화 지원: 소프트웨어 BOM은 기계 판독이 가능해야 하며 지속적인 데이터 추적을 위해 자동으로 생성될 수 있어야 합니다. 일반적으로 SPDX, CycloneDX 및 SWID 태그와 같은 표준 형식으로 되어 있어 사람이 읽을 수도 있습니다.

SPDX SBOM 표준 형식

SPDX®(Software Package Data Exchange) 사양은 소프트웨어 구성 요소, 라이센스, 저작권 및 보안 세부 사항에 대한 정보를 여러 파일 형식으로 공유하기 위한 ISO/IEC 표준입니다. 이 프로젝트는 기업과 조직이 인간과 기계 모두가 이해할 수 있는 형식으로 소프트웨어 메타데이터를 공유하여 소프트웨어 공급망 프로세스를 단순화할 수 있도록 일련의 데이터 교환 표준을 개발하고 지속적으로 개선하고 있습니다.

SPDX 정보는 특정 소프트웨어 제품, 구성 요소 또는 구성 요소 집합, 개별 파일 또는 작은 코드 조각에 연결될 수 있습니다. SPDX 프로젝트는 SBOM의 일부로 교환할 수 있는 데이터를 설명하는 언어를 만들고 개선하는 데 중점을 두고 있으며, 이 데이터를 여러 파일 형식(RDF/XML, XLSX, 태그 값, JSON, YAML)으로 표시하는 기능을 제공합니다. , XML)을 사용하여 소프트웨어 패키지 및 관련 콘텐츠에 대한 정보를 쉽게 수집하고 공유할 수 있으므로 시간과 정확성이 향상됩니다.

SPDX 사양은 유효한 문서에 필요한 필드와 섹션을 간략하게 설명하지만 모든 섹션이 필수는 아니며 생성 정보 섹션만 필요하다는 점을 기억하는 것이 중요합니다. 문서 작성자는 공유하려는 소프트웨어 및 메타데이터 정보를 설명하는 섹션과 필드를 포함할 항목을 선택할 수 있습니다.

SPDX는 소프트웨어 개발 및 배포에서 발견되는 모든 구성 요소를 표시하여 소프트웨어 BOM 데이터를 효과적으로 캡처할 수 있습니다. distro .iso 이미지, 컨테이너, 소프트웨어 패키지, 바이너리 파일, 소스 파일, 패치, 심지어 다른 파일에 포함된 작은 코드 조각까지 문서화하는 데 사용됩니다. SPDX는 문서 내 및 SBOM 문서 전반에 걸쳐 소프트웨어 요소를 연결하는 포괄적인 관계 세트를 제공합니다. SPDX SBOM 문서는 National Vulnerability Database 및 기타 패키징 시스템 메타데이터와 같은 외부 소스를 참조할 수도 있습니다.

SPDX 문서를 구성하는 여러 구성 요소는 생성 정보, 패키지 정보, 파일 정보, 조각 정보, 기타 라이센스 정보, 관계 및 주석입니다.

각 SPDX 문서는 완전한 데이터 모델 구현 및 식별자 구문으로 표현될 수 있으므로 다양한 데이터 출력 형식(RDF/XML, 태그 값, XLSX) 간의 교환과 문서 정확성의 공식 검증이 가능합니다. SPDX 사양의 버전 2.2 릴리스에는 JSON, YAML 및 XML과 같은 추가 출력 형식이 포함되어 있으며 원본 SBOM 문서에서 식별된 "알려진 알 수 없는 항목"도 해결합니다. SPDX의 기본 데이터 모델에 대한 자세한 내용은 SPDX 사양의 부록 III과 SPDX 웹 사이트에서 확인할 수 있습니다.

CycloneDX SBOM 표준 형식

CycloneDX 프로젝트는 완전 자동화된 보안 중심 SBOM 표준 개발을 목표로 2017년에 설립되었습니다. 핵심 작업 그룹은 위험 기반 표준 프로세스를 사용하여 매년 변경 불가능하고 이전 버전과 호환되는 버전을 출시합니다. CycloneDX에는 패키지 URL, CPE, SWID, SPDX 라이선스 ID 및 표현과 같은 기존 사양이 포함되어 있습니다. SBOM은 XML, JSON 및 프로토콜 버퍼(protobuf)를 포함한 다양한 형식으로 표시될 수 있습니다.

CycloneDX는 공급망 구성요소 분석 및 소프트웨어 보안에 사용하기 위한 경량 SBOM 사양입니다. 이를 통해 소프트웨어 구성 요소 인벤토리, 외부 서비스 및 이들 간의 관계에 대한 통신이 가능해집니다. OWASP(Open Web Application Security Project)에서 개발한 오픈 소스 표준입니다.

CycloneDX는 소스 코드에 액세스하고, 수정하고, 재배포할 수 있는 오픈 소스 구성 요소의 동적 특성을 캡처할 수 있습니다. 사양은 조상, 자손 및 변형을 포함하여 구성 요소의 계보를 나타낼 수 있으며 구성 요소를 고유하게 만드는 커밋, 패치 및 차이점은 물론 모든 관점에서 구성 요소의 계보를 설명할 수 있습니다.

CycloneDX 프로젝트는 커뮤니티에서 지원하는 표준을 지원하거나 표준과 호환되는 알려진 오픈 소스 및 독점 도구 목록을 유지 관리합니다.

CycloneDX 사양은 모든 구현에서 일관성을 보장하는 상세한 개체 모델을 제시합니다. XML 스키마 및 JSON 스키마를 사용하거나 CycloneDX 명령줄 인터페이스를 사용하여 유효성을 검사할 수 있습니다. 지원되는 형식의 자동 전달 및 사용을 위해 XML 및 JSON에 대한 미디어 유형도 제공됩니다.

CycloneDX SBOM에는 BOM 메타데이터, 구성 요소, 서비스, 종속성, 구성 및 확장과 같은 정보가 포함될 수 있습니다.

CycloneDX는 애플리케이션, 구성 요소, 서비스, 펌웨어 및 장치를 포함하여 다양한 유형의 소프트웨어를 특성화할 수 있는 포괄적인 SBOM 표준입니다. 소프트웨어 패키지, 라이브러리, 프레임워크, 애플리케이션 및 컨테이너 이미지를 설명하기 위해 업계 전반에서 널리 사용됩니다. 이 프로젝트는 주요 개발 생태계와 호환되며 GitHub 작업과 같은 소프트웨어 팩토리에 대한 구현을 제공하여 조직이 SBOM 생성을 완전히 자동화할 수 있도록 합니다.

SWID 태그

SWID 태그 또는 소프트웨어 식별 태그는 조직이 관리 장치에 설치된 소프트웨어를 투명한 방식으로 추적할 수 있도록 만들어졌습니다. 이 표준은 2012년 ISO에 의해 제정되었으며 19770년에 ISO/IEC 2-2015:2015로 개정되었습니다. 이러한 태그에는 소프트웨어 제품의 특정 릴리스에 대한 자세한 정보가 포함되어 있습니다.

SWID 표준은 소프트웨어 추적의 수명 주기를 간략하게 설명합니다. SWID 태그는 소프트웨어 제품 설치 중에 엔드포인트에 추가되고 제품 제거 프로세스에 의해 제거됩니다. 특정 SWID 태그의 존재는 그것이 설명하는 소프트웨어의 존재와 직접적으로 일치합니다. TCG(Trusted Computing Group) 및 IETF(Internet Engineering Task Force)와 같은 여러 표준화 조직은 SWID 태그를 표준에 통합합니다.

소프트웨어 구성 요소의 수명 주기를 추적하기 위해 SWID 사양에는 기본, 패치, 코퍼스, 보충이라는 네 가지 유형의 태그가 있습니다. 코퍼스, 기본 및 패치 태그는 소프트웨어 설치 프로그램, 소프트웨어 설치, 소프트웨어 패치 등 다양한 유형의 소프트웨어 존재 및 소프트웨어 제품의 가능한 상태를 설명한다는 점에서 유사한 목적으로 사용됩니다. 반면에 보충 태그는 말뭉치, 기본 또는 패치 태그에 없는 추가 세부 정보를 제공합니다.

추가 태그를 다른 태그에 연결하여 유용할 수 있는 추가 메타데이터를 제공할 수 있습니다. SWID 태그는 함께 소프트웨어 검색, 구성 관리, 취약성 관리와 같은 다양한 기능을 수행할 수 있습니다.

SWID 태그는 소프트웨어 구성 요소에 대한 식별 정보, 구성 요소 아티팩트에 대한 파일 및 암호화 해시 목록, SBOM(태그) 작성자 및 소프트웨어 구성 요소 작성자에 대한 출처 정보를 제공하므로 SBOM으로 작동할 수 있습니다. 태그는 다른 태그에 연결되어 종속성 트리를 표현할 수도 있습니다.

SWID 태그는 빌드 및 패키징 프로세스 중에 생성될 수 있으므로 해당 소프트웨어 구성 요소가 패키징될 때 SWID 태그 기반 SBOM이 자동으로 생성될 수 있습니다.

소프트웨어 BOM이 중요한 이유는 무엇입니까?

소프트웨어 자재 명세서(SBOM)는 조직에서 사용하는 소프트웨어를 관리하고 보호하는 것을 목표로 하기 때문에 조직에서 점점 더 중요해지고 있습니다. '라는 질문에 짧은 대답은 없습니다. SBOM이란 무엇입니까?. SBOM은 버전 번호, 작성자 및 라이센스 정보와 같은 정보를 포함하여 소프트웨어 패키지를 구성하는 모든 구성 요소 및 종속성의 포괄적인 목록을 제공합니다. 이 정보는 보안 및 규정 준수뿐만 아니라 소프트웨어 구성 요소의 출처를 추적하는 데에도 중요합니다.

규제 대상 산업을 포함한 많은 조직에서는 GDPR(일반 데이터 보호 규정) 및 PCI DSS(지불 카드 산업 데이터 보안 표준)와 같은 규정 준수를 보장하기 위해 SBOM을 사용하고 있습니다. SBOM은 또한 소프트웨어의 취약점을 식별 및 관리하고 소프트웨어 구성 요소의 출처를 추적하는 데 도움을 줄 수 있습니다. 또한 SBOM은 소프트웨어 라이선스 관리를 지원하여 조직이 라이선스 조건을 준수하여 소프트웨어를 사용하고 있는지 확인할 수 있습니다.

SBOM은 소프트웨어 개발에서 점점 일반화되고 있는 오픈 소스 소프트웨어의 사용을 추적하는 데에도 사용할 수 있습니다. 소프트웨어 패키지에 사용되는 오픈 소스 구성 요소에 대한 자세한 정보를 제공함으로써 SBOM은 조직이 오픈 소스 라이선스를 준수하도록 지원할 수 있습니다.

또한 SBOM을 사용하여 소프트웨어 개발 및 유지 관리를 지원할 수 있습니다. 소프트웨어 패키지에 사용되는 구성 요소에 대한 자세한 정보를 제공함으로써 SBOM은 개발자가 소프트웨어 패키지의 종속성을 이해하는 데 도움을 줄 수 있으며, 이는 개발자가 잠재적인 호환성 문제를 식별하고 새 구성 요소 사용에 대해 정보에 입각한 결정을 내리는 데 도움이 될 수 있습니다.