SBOM
SBOM 품질 체크리스트: 공급업체가 보낸 SBOM을 검증하는 방법
세 가지를 확인하세요. 파일이 유효한지, 필드를 쓸 수 있는지, 빠진 것이 있는지입니다. 첫 번째는 스키마 검증기가, 두 번째는 필드 검사와 품질 점수가 잡아내지만, 파일만 읽는 도구로는 세 번째를 증명할 수 없습니다. 아래 체크리스트는 모든 검사 항목을 NTIA 2021 최소 요소, CISA의 2026 Minimum Elements, BSI TR-03183-2에 대응시키고, 테스트 방법과 공급업체에 보낼 피드백 문구를 함께 제시합니다.
업데이트
SBOM 품질의 세 계층
| 계층 | 질문 | 확인 수단 | 알 수 없는 것 |
|---|---|---|---|
| 유효성 | 파일을 파싱할 수 있고, 선언한 형식과 버전의 스키마를 따르는가? | 스키마 검증기 | 각 필드에 쓸모 있는 값이 들어 있는지 |
| 사용 가능성 | 필요한 필드가 있고 도구가 그 필드를 활용할 수 있는가? 보안 권고와 매칭되는 식별자, 라이선스, 해시, 관계 정보 등 | 필드 검사, 컴플라이언스 프로필, 품질 점수 | 파일에서 무엇이 빠졌는지 |
| 완전성 | 받은 소프트웨어에 들어 있는 모든 것이 나열되어 있는가? | 빌드와의 비교, 또는 납품된 바이너리 분석과의 비교 | SBOM만 읽는 도구로는 답할 수 없음 |
대부분의 수신 팀은 첫 번째 계층에서 멈춥니다. "파일이 검증을 통과했다"는 점검의 시작이지 결과가 아닙니다. 세 번째 계층이 바로 SBOM 완전성입니다.
1분 만에 보는 프레임워크
모든 요청과 피드백에 프레임워크 이름을 명시하세요. 그래야 기준이 개인 의견이 아니라 공개된 문서가 됩니다.
- NTIA, The Minimum Elements for a Software Bill of Materials (2021년 7월 12일). 일곱 가지 데이터 필드(공급업체 이름, 구성 요소 이름, 버전, 기타 고유 식별자, 종속성 관계, SBOM 데이터 작성자, 타임스탬프), SPDX, CycloneDX 또는 SWID 태그를 통한 자동화 지원, 그리고 관행(빈도, 깊이, 알려진 미지 항목, 배포와 전달, 접근 제어, 오류 수용)을 다룹니다. 해시, 라이선스, 수명 주기 단계, 서명은 최소 요건을 넘는 권장 사항으로 제시됩니다.
- CISA, 2026 Minimum Elements for a Software Bill of Materials (2026년 7월 29일, 2025년 8월 22일 초안 이후). NTIA 요소를 대체합니다. CISA, NSA, FBI, 독일 BSI, 일본 METI와 NCO 등 14개국 18개 기관이 작성했습니다. 데이터 필드는 17개이며, 그중 10개가 새로 추가되었습니다. SBOM author signature, data format name, data format version, generation context, tool name, tool version, SBOM version, component hash value, component hash algorithm, component license입니다. "Supplier name"은 "Component Producer"로 바뀝니다. 관행은 커버리지, 알 수 없는 정보의 명시적 표시, 기계 처리 가능한 데이터, 업데이트 수용, 빈도, 배포와 전달입니다. 문서는 각 요소를 "should"로 표현하며 새로운 요구 사항을 만들지 않는다고 밝힙니다. 구매자가 계약서에 넣어야 구속력이 생깁니다.
- BSI, TR-03183-2 버전 2.1.0(2025년 8월 20일), 독일. 세 문서 중 가장 엄격하며 MUST로 작성되었습니다. JSON 또는 XML, CycloneDX 1.6 이상 또는 SPDX 3.0.1 이상, 소프트웨어 버전당 하나의 SBOM, 각 종속성 목록의 완전성을 명시한 재귀적 종속성 해석, 배포 가능한 각 구성 요소의 SHA-512 해시, 구성 요소의 파일 이름, SPDX 식별자로 표기한 배포 라이선스, 그리고 "if it exists" 조건의 package URL 또는 CPE를 요구합니다. 또한 SBOM에 취약점 정보를 넣어서는 안 되며, 그런 정보는 VEX 문서나 보안 권고에 담아야 한다고 규정합니다.
- 국제적 정렬. A Shared Vision of SBOM for Cybersecurity (2025년 9월 3일)에는 15개국 18개 기관이 서명했습니다. G7의 SBOM 작업은 AI 시스템을 다루며("A shared G7 vision on SBOM for AI", 2025년, "SBOM for AI – Minimum Elements", 2026년 5월), 임베디드 공급업체 SBOM에 대한 요구 사항은 정하지 않습니다.
- 자동차. Auto-ISAC은 2025년 2월 11일 SBOM Informational Report를 발표했습니다.
체크리스트
셀 읽는 법: 필수는 문서가 must라고 명시한다는 뜻입니다. 최소 요소는 해당 문서의 최소 목록(NTIA의 기준선 또는 CISA의 "should" 요소)에 포함된다는 뜻입니다. 권장은 문서가 최소 요건 외에 추가로 제시한다는 뜻입니다. 언급 없음은 문서가 요구하지 않는다는 뜻입니다. 각 항목의 테스트 방법과 보낼 피드백 문구는 다음 섹션에 있습니다.
SBOM 수준 검사
| 검사 | 중요한 이유 | NTIA 2021 | CISA 2026 | BSI TR-03183-2 |
|---|---|---|---|---|
| 1. 파싱되고 선언된 스키마로 검증됨 | 도구가 읽을 수 없는 파일은 SBOM이 아님 | 필수: SPDX, CycloneDX 또는 SWID 태그 | 관행: 기계 처리 가능한 SPDX 또는 CycloneDX | 필수: JSON 또는 XML |
| 2. 사양 버전이 하한선을 충족함 | 구버전은 필요한 필드를 담지 못함 | 언급 없음 | 최소 요소: 데이터 형식 이름과 버전, 폐기된 버전은 피할 것 | 필수: CycloneDX 1.6+ 또는 SPDX 3.0.1+ |
| 3. SBOM 작성자 | 내용에 책임지는 주체가 있음 | 최소 요소: "Author of SBOM Data" | 최소 요소: "SBOM Author", 도구가 아니라 조직 | 필수: "Creator of the SBOM", 이메일 또는 URL |
| 4. 타임스탬프 | 어느 SBOM이 최신인지 알려 줌 | 최소 요소 | 최소 요소 | 필수, UTC 권장 |
| 5. 도구 이름과 버전 | SBOM이 어디까지 다룬다고 믿을 수 있는지 알려 줌 | 언급 없음 | 최소 요소 | 언급 없음 |
| 6. 생성 컨텍스트 | 같은 릴리스라도 소스 스캔과 빌드 기록은 다름 | 권장: 수명 주기 단계("source", "build", "post-build") | 최소 요소: "before build", "build" 또는 "after build" | 필드 없음, 내용은 빌드 중 사용 가능했던 것과 일치해야 함 |
| 7. SBOM 버전 또는 일련번호 | 수정본과 원본을 구별함 | 언급 없음 | 최소 요소: "SBOM Version" | 형식에 있으면 필수: "SBOM-URI" |
| 8. 작성자 서명 | 파일이 공급업체에서 변경 없이 왔음을 보여 줌 | 권장: 서명을 장려함 | 최소 요소: "SBOM Author Signature" | 참고용: "ideally" 서명 |
| 9. 최상위 구성 요소가 받은 것과 일치함 | 잘못된 릴리스의 SBOM은 없는 것보다 나쁨 | 최소 요소: 주 구성 요소 | 최소 요소: 대상 구성 요소 | 필수: 트리의 루트인 주 구성 요소 |
구성 요소 수준 검사
| 검사 | 중요한 이유 | NTIA 2021 | CISA 2026 | BSI TR-03183-2 |
|---|---|---|---|---|
| 10. 구성 요소 이름 | 모든 매칭이 가장 먼저 사용하는 값 | 최소 요소 | 최소 요소 | 필수, 이름이 없으면 파일 이름 |
11. 버전: latest, unknown, 빈 값 금지 |
보안 권고는 버전 범위에 적용됨 | 최소 요소 | 최소 요소, 모르면 그렇다고 명시 | 필수, 버전이 없으면 파일 날짜 |
| 12. 제작자 또는 공급업체 | 같은 이름의 두 구성 요소를 구별하고, 누가 수정하는지 알려 줌 | 최소 요소: "Supplier Name" | 최소 요소: "Component Producer" | 필수: "Component creator", 이메일 또는 URL |
| 13. 생태계에 있으면 package URL, 없으면 CPE, 둘 다 올바른 형식 | 식별자(package URL, CPE)가 없으면 아무것도 취약점 데이터베이스와 매칭할 수 없음 | 최소 요소: "Other Unique Identifiers", 존재하는 경우 CPE, SWID 또는 PURL 등 | 최소 요소: CPE 또는 PURL 등 식별자 하나 이상, 모두 포함 | 존재하면 필수: CPE 또는 purl |
| 14. 받은 파일과 일치하는 해시 값과 알고리즘 | 이 SBOM이 이 바이너리를 설명한다는 증거 | 권장 | 최소 요소: NIST 같은 기관이 승인한 알고리즘으로 계산한 실행 아티팩트의 해시 | 필수: 배포 가능한 구성 요소의 SHA-512 |
15. SPDX 식별자 또는 표현식으로 된 라이선스, 일괄 NOASSERTION 금지 |
라이선스 전문가가 이를 근거로 카피레프트와 기타 의무를 판단함 | 권장 | 최소 요소, 가능하면 SPDX 식별자 | 필수: 배포 라이선스, SPDX 식별자 우선 |
| 16. 종속성 관계와 목록의 완전성 여부 | 취약한 패키지를 끌어온 것이 무엇인지, 빈틈을 믿을 수 있는지 보여 줌 | 최소 요소, 직접 종속성이 모두 나열된 경우 그렇다고 명시 | 최소 요소 | 필수, 각 목록의 완전성 명시 |
| 17. 파일 이름 | 항목을 기기의 파일과 연결함 | 언급 없음 | 언급 없음 | 필수 |
| 18. executable, archive, structured 속성 | 각 구성 요소가 어떤 종류의 파일인지 알려 줌 | 언급 없음 | 언급 없음 | 필수 |
커버리지 검사
| 검사 | 중요한 이유 | NTIA 2021 | CISA 2026 | BSI TR-03183-2 |
|---|---|---|---|---|
| 19. 최상위만이 아닌 전이적 깊이 | 취약한 코드는 대부분 간접적으로 들어옴 | 최상위 필수, 전이적 종속성 권장 | 커버리지 관행: 전이적 종속성 포함, 최소 깊이 없음 | 필수: 재귀적 해석 |
| 20. 알려진 미지 항목 명시 | 빈틈을 밝힌 SBOM은 나열한 내용을 믿을 수 있음 | 필수 관행 | 관행: 알 수 없거나 비공개인 정보 표시 | 완전성 명시를 통해 필수 |
| 21. 납품한 소프트웨어 버전당 하나의 SBOM | 중요한 것은 실제로 운영하는 버전 | 필수: 빌드 또는 릴리스마다 새 SBOM | 관행: 빈도 | 필수 |
| 22. 수정은 새 SBOM으로 전달 | 조용히 고친 오류는 추적할 수 없음 | 관행: 오류 수용 | 관행: 업데이트 수용 | 필수: 오류 수정 시 업데이트된 SBOM |
| 23. 타당성: 중복 없음, 제품에 맞는 구성 요소 수, Linux 기반 기기라면 운영체제 패키지 포함 | 가장 저렴한 완전성 확인 방법 | 언급 없음 | 커버리지 관행: 여러 인스턴스를 각각 나열 | 여러 인스턴스를 각각 나열해야 함 |
각 항목의 테스트 방법과 공급업체에 전할 내용
| 검사 | 자동 테스트 방법 | 공급업체용 피드백 문구 |
|---|---|---|
| 1, 2. 스키마와 사양 버전 | 선언된 형식과 버전에 맞는 스키마 검증기를 실행한 뒤 specVersion(CycloneDX) 또는 SPDX 버전을 하한선과 비교 |
"이 파일은 표시된 경로에서 CycloneDX 1.6 스키마 검증에 실패합니다. 생성기로 다시 만들고, 보내기 전에 검증해 주세요." |
| 3~7. 작성자, 타임스탬프, 도구, 컨텍스트, 버전 | 필수 메타데이터 존재 여부: CycloneDX에서는 metadata.authors, metadata.timestamp, metadata.tools, metadata.lifecycles, serialNumber, version, SPDX에서는 생성 정보 |
"SBOM에 생성 도구와 생성 컨텍스트가 없습니다. 둘 다 CISA 2026 Minimum Elements입니다." |
| 8. 서명 | 서명이 있고, 공급업체가 공개한 키로 검증됨 | "CISA 2026 요소 SBOM Author Signature에 따라 SBOM에 서명하거나 분리 서명을 함께 보내 주세요." |
| 9. 최상위 구성 요소 | metadata.component(CycloneDX) 또는 기술된 루트 요소(SPDX)의 이름과 버전이 받은 부품 번호 및 소프트웨어 버전과 일치 |
"이 SBOM은 버전 5.2.0을 설명하지만, 저희가 받은 것은 5.3.0입니다. 5.3.0의 SBOM을 보내 주세요." |
| 10, 11. 이름과 버전 | 빈 이름 없음, 알 수 없음으로 선언하지 않은 한 빈 버전이나 latest, unknown 버전 없음 |
"14개 구성 요소에 버전이 없습니다. 정확한 버전을 기재하거나 알 수 없음으로 표시해 주세요." |
| 12. 제작자 | 모든 구성 요소에 공급업체, 제조사 또는 작성자가 있음 | "구성 요소에 제작자가 없습니다. CISA 2026 요소 Component Producer가 요구하는 정보입니다." |
| 13. 식별자 | 모든 purl이 ECMA-427 기준 package URL 라이브러리로 파싱되고, 모든 CPE가 유효한 CPE 2.3 구문이며 NVD CPE 사전에 존재 |
"어떤 구성 요소에도 package URL이나 CPE가 없어 취약점 데이터베이스와 매칭할 수 없습니다. 패키지 관리자에서 온 모든 패키지에 purl을 추가해 주세요." |
| 14. 해시 | 배포 가능한 각 구성 요소에 SHA-512 항목이 있음. 받은 파일의 sha512sum을 계산해 비교 |
"SBOM에 해시가 없습니다. BSI TR-03183-2는 배포 가능한 각 구성 요소의 SHA-512를 요구합니다." |
| 15. 라이선스 | SPDX 라이선스 목록으로 해석되는 라이선스 ID 또는 표현식. NOASSERTION과 빈 값의 개수 집계 |
"구성 요소의 92%가 라이선스로 NOASSERTION을 갖고 있습니다. SPDX 라이선스 식별자를 기재해 주세요." |
| 16. 종속성 | dependencies 그래프(CycloneDX) 또는 종속성 관계(SPDX), 그리고 CycloneDX compositions의 aggregate 값 같은 완전성 명시 |
"SBOM이 평면 목록입니다. 종속성 관계를 포함하고 각 목록이 완전한지 명시해 주세요." |
| 17, 18. 파일 이름과 파일 속성 | BSI TR-03183-2가 형식별로 정의한 속성이 있음 | "BSI TR-03183-2 v2.1.0이 요구하는 대로 파일 이름과 executable, archive, structured 속성을 추가해 주세요." |
| 19~23. 커버리지 | 종속성 그래프의 깊이, 중복 탐지, 유사 제품과 비교한 구성 요소 수, 제품 유형별 예상 구성 요소 | "Linux 기반 디스플레이인데 SBOM에 커널, 부트로더, 기본 시스템 패키지가 없습니다. 전체 이미지의 SBOM을 보내 주세요." |
피드백 문구의 비율과 개수는 예시입니다. 실제 숫자를 넣고, 매번 프레임워크와 버전을 명시하세요.
점수를 통과해도 놓치는 것
파일은 검증을 통과하고 10점 만점에 9점을 받고도 제품의 절반을 빠뜨릴 수 있습니다. 품질 점수는 있는 필드를 읽을 뿐, 없는 구성 요소는 보지 못합니다.
예시. 공급업체가 Linux 기반 디스플레이의 SBOM을 보냅니다. 유효한 CycloneDX 1.6이고, 모든 구성 요소에 버전, package URL, 라이선스, SHA-512 해시가 있으며, 종속성 그래프도 올바른 형식입니다. 디스플레이 애플리케이션과 40개 라이브러리가 나열되어 있습니다. 그러나 Linux 커널, 부트로더, 기본 시스템 패키지는 하나도 없습니다. 모든 필드 검사를 통과합니다. 그래도 Linux 기기가 반드시 모니터링해야 하는 커널 CVE에는 이 SBOM이 쓸모없습니다. 커널이 들어 있지 않기 때문입니다.
수신 팀이 완전성을 확인하는 방법:
- 납품된 펌웨어의 바이너리 분석과 비교하세요. 일부 OEM은 공급업체의 SBOM이 충분해질 때까지 이를 임시 SBOM으로 쓰고, 그 뒤에는 교차 확인용으로 씁니다.
- 제품 유형별로 있어야 할 구성 요소를 확인하세요. Linux 이미지에는 커널, C 라이브러리, init 시스템이 있고, 산업용 컨트롤러에는 프로토콜 스택이 있습니다.
- 생성 컨텍스트와 도구를 물어보세요. 소스 스캔은 빌드가 가져온 것을 볼 수 없습니다.
- 받은 소프트웨어를 만든 빌드에서 SBOM이 나왔는지 물어보세요. 이 질문이 세 번째 계층을 결정합니다.
작은 SBOM도 정당할 수 있습니다. 독점 펌웨어와 공급사 캘리브레이션만 있는 베어메탈 ECU라면 정직하게 구성 요소가 두 개뿐일 수 있습니다. SBOM이 그렇게 밝히고 알려진 미지 항목을 명시한다면, 크기를 이유로 불이익을 주지 말고 받아들이세요.
검사를 자동화하는 도구
2026년 11월 11일 GitHub에서 확인했습니다. 보관(archived) 처리된 저장소는 없습니다.
| 도구 | 확인하는 것 | 확인하지 않는 것 | 상태 |
|---|---|---|---|
| CycloneDX CLI | CycloneDX 1.0~1.7, JSON 또는 XML의 스키마 검증, CI용 --fail-on-errors |
SPDX, 필드 품질, 프레임워크 프로필 | v0.33.1, 2026년 7월 |
| sbom-utility | CycloneDX 1.2~1.7 및 SPDX 2.1~2.3 JSON의 스키마 검증, 사용자 지정 스키마 변형 지원 | SPDX 3, XML, 프레임워크 프로필 | v0.19.2, 2026년 6월 |
| SPDX tools-java | SPDX 2.0~2.3 및 3.0.1용 Verify |
CycloneDX, 프레임워크 프로필 | v2.0.7, 2026년 6월 |
| SPDX tools-python | pyspdxtools -i: SPDX 2.2 및 2.3 전체 검증 |
SPDX 3 읽기(지원이 실험 단계) | v0.8.5, 2026년 3월 |
| SPDX NTIA Conformance Checker | SPDX 2.2, 2.3, 3.0을 NTIA 2021, CISA FSCT3, BSI TR-03183-2 v2.1.0 기준으로 검사, 웹 버전도 있음 | CycloneDX, CISA 2026은 아직 열린 요청 | v6.0.0, 2026년 10월 |
| sbomqs | 식별, 출처, 무결성, 완전성, 라이선스, 취약점, 구조 전반에 걸친 0~10점 score, CISA 2026, NTIA 2021, BSI TR-03183-2 v1.1~v2.1.0, FSCT v3, OpenChain Telco용 compliance 프로필 |
누락된 구성 요소 파악 | v2.1.3, 2026년 10월, CISA 2026 프로필은 v2.1.0부터, v2.1.2에서 수정 |
| sbom-scorecard | 사양 준수, 생성 정보, 패키지 식별자·버전·라이선스에 대한 가중 점수 | 프레임워크 프로필 | 0.0.7, 2023년 4월, 마지막 릴리스 |
지금까지 CISA 2026 Minimum Elements를 검사하는 도구는 sbomqs뿐입니다. 프로필에 의존하기 전에 각 도구의 릴리스
노트를 확인하세요. sbomqs 2.1.1에서는 CISA 2026 플래그가 실수로 2021 검사를 실행했습니다. sbomqs에서 BSI
TR-03183-2 v2.1.0을 검사하려면 --bsi-v21 또는 --bsi를 사용하세요.
--bsi-v2는 v2.0.0을 검사합니다.
공급업체 CycloneDX SBOM을 위한 최소한의 수신 단계:
# 1. Valid: fail the intake on schema errors
cyclonedx-cli validate --input-file supplier-sbom.json --input-format json --fail-on-errors
# 2. Usable: run the profile your requirement names
sbomqs compliance --bsi-v21 supplier-sbom.json
sbomqs compliance --ntia supplier-sbom.json # CISA 2026 Minimum Elements
# 3. Track field quality over time
sbomqs score supplier-sbom.json
# 4. The hash in the SBOM matches the file you received
sha512sum firmware-5.3.0.bin
SPDX에는 NTIA Conformance Checker의 sbomcheck -s spdx3 -c bsi supplier-sbom.json을 사용하세요.
컴플라이언스 보고서를 읽고, 요구 사항이 필수로 정한 검사에서 실패하면 파일을 반려하세요. 위의 피드백 문구와 함께
공급업체에 돌려보내면 됩니다.
공급업체 요구 사항에 명문화하기
공급업체가 본 적 없는 체크리스트는 요구 사항이 아닙니다. 계약 부속서에 넣으세요.
- 프레임워크와 버전: 예를 들어 "BSI TR-03183-2 v2.1.0" 또는 "CISA 2026 Minimum Elements". 하나를 지정하고, "업계 표준"이라고 쓰지 마세요.
- 형식과 최소 사양 버전: 예를 들어 CycloneDX 1.6 이상 또는 SPDX 3.0.1 이상, JSON.
- 추가로 요구하는 필드: 모든 패키지의 SHA-512 해시나 package URL 등.
- 전달: 납품하는 소프트웨어 버전당 SBOM 하나, 소프트웨어보다 먼저 또는 함께.
- 공급업체가 보내기 전에 실행하는 검증: 도구와 프로필을 명시.
- 피드백 루프: 누가 피드백을 받는지, 수정된 SBOM을 언제까지 보내야 하는지.
같은 합의의 공급업체 측 내용은 공급업체를 위한 SBOM 가이드에 있습니다. 일회성 요청에 답하는 소프트웨어 벤더라면 고객 SBOM 요청을 참조하세요.
피드백 템플릿
제목: [부품 번호], 소프트웨어 버전 [버전]의 SBOM: 수정 필요
[날짜]에 보내 주신 SBOM을 당사 공급업체 요구 사항 [참조]의 [프레임워크 및 버전] 기준으로 확인했습니다. 스키마 검증은 통과했지만 다음 검사에서 실패했습니다: [검사 번호와 피드백 문구]. 새 SBOM 버전과 타임스탬프를 적용한 수정 SBOM을 [날짜]까지 보내 주세요. 그때까지 당사는 자체 바이너리 분석을 바탕으로 이 소프트웨어를 모니터링합니다. 문의: [연락처].
실패한 SBOM 수정하기(공급업체용)
- 손으로 작성한 파일. 텍스트 편집기가 아니라 생성기나 SBOM 라이브러리를 사용하세요.
- 누락된 package URL. 손이 아니라 패키지 관리자나 빌드에서 생성하세요. 직접 입력한 purl은 추측한 purl입니다.
- 누락된 라이선스. 패키지 메타데이터의 선언 라이선스를 SPDX 식별자로 가져오세요.
- 해시 없음. 빌드 마지막 단계에서 실제로 납품하는 파일을 대상으로 계산하세요.
- 잘못된 릴리스. 릴리스 빌드에서 SBOM을 생성하고, 버전 이름을 붙이세요.
- 최상위만 있음. 전이적 종속성을 해석하는 방법을 사용하세요.
완전성과 식별자를 한 번에 바로잡는 가장 확실한 방법은 납품 소프트웨어를 만든 빌드에서 SBOM을 생성하는 것입니다. 빌드 시점 SBOM과 SBOM 모범 사례를 참조하세요.
좋은 SBOM은 어디서 나오는가, 그리고 CRACI의 역할
GitHub Actions로 빌드하는 공급업체의 경우, CRACI는 GitHub 호스팅 러너를 대체하고 빌드 중에 SBOM을 기록하므로, SBOM에는 빌드가 실제로 가져온 것이 담깁니다.
- 모든 패키지에 package URL, 모든 구성 요소에 선언 라이선스.
- 빌드가 도달한 모든 깊이의 전이적 종속성.
- 모든 작업의 완전성 상태. 빌드마다 알려진 미지 항목에 대한 답을 줍니다: Complete, Complete with connections, Incomplete, Unavailable 또는 Not recorded.
- CycloneDX 또는 SPDX로 내보내며, SBOM API는 CycloneDX 1.7 JSON을 반환합니다.
엔지니어링 조직 전체라면 SBOM 생성 표준화를, 임베디드 Linux라면 스캐너가 Yocto 빌드의 내용을 놓치는 이유를 참조하세요.
OEM은 서드파티 SBOM을 CRACI에 추가할 수 있으므로, 구매한 구성 요소도 자체 빌드와 함께 새로운 취약점을 모니터링합니다. 비교는 SBOM 관리 도구를 참조하세요.
CRACI가 답이 아닌 경우
- 받은 SBOM의 검증과 점수 산정. CRACI는 SBOM 검증기나 품질 점수를 제공하지 않습니다. 위의 도구를 사용하세요.
- CI가 없는 공급업체, 또는 패키지를 가져오지 않는 모델 기반 도구로 코드를 생성하는 공급업체. 빌드 기록기의 효용이 적으며, 생성기 라이브러리로 만든 검증된 SBOM이 현실적인 답입니다.
- 바이너리로만 받는 펌웨어. 이 경우는 바이너리 분석이 답입니다.
- 서명된 SBOM, 즉 CISA 2026의 작성자 서명. CRACI는 SBOM에 서명하지 않습니다.
SBOM 품질과 검증: 자주 묻는 질문
공급업체가 보낸 SBOM의 품질은 어떻게 확인하나요?
세 계층을 테스트하세요. 파일을 스키마로 검증하고, BSI TR-03183-2나 CISA 2026 Minimum Elements 같은 특정 프레임워크로 필드를 확인한 다음, 완전성을 점검합니다. 받은 것의 바이너리 분석과 비교하고, 제품 유형에 반드시 있어야 할 구성 요소가 있는지 확인하세요.
SBOM에는 어떤 필드가 있어야 하나요?
지정하는 프레임워크에 따라 다릅니다. CISA의 2026 Minimum Elements는 작성자, 타임스탬프, 도구, 생성 컨텍스트, 그리고 구성 요소별 이름, 버전, 제작자, 식별자, 해시, 라이선스 등 17개 필드를 나열합니다. BSI TR-03183-2는 SHA-512 해시, 파일 이름, 파일 속성을 추가하고 이를 필수로 정합니다.
NTIA 최소 요소와 CISA 2026 Minimum Elements 사이에 무엇이 바뀌었나요?
CISA의 2026년 목록은 NTIA의 7개 필드를 17개로 대체합니다. 작성자 서명, 데이터 형식 이름과 버전, 생성 컨텍스트, 도구 이름과 버전, SBOM 버전, 구성 요소 해시 값과 알고리즘, 구성 요소 라이선스가 새로 추가되었습니다. Supplier name은 Component Producer가 되었고, 깊이는 커버리지가 되었습니다.
BSI TR-03183-2는 SBOM에 무엇을 요구하나요?
버전 2.1.0은 JSON 또는 XML 형식의 CycloneDX 1.6+ 또는 SPDX 3.0.1+, 소프트웨어 버전당 하나의 SBOM, 완전성을 명시한 재귀적 종속성, 그리고 구성 요소별 작성자, 이름, 버전, 파일 이름, 라이선스, SHA-512 해시, 파일 속성을 요구하며, package URL이나 CPE가 있으면 함께 요구합니다.
SBOM에 해시가 필요한가요? 어떤 알고리즘인가요?
NTIA는 권장했고, CISA 2026은 NIST 같은 기관이 승인한 알고리즘의 해시를 최소 요소로 정했으며, BSI TR-03183-2는 배포 가능한 각 구성 요소의 SHA-512를 요구합니다. SHA-512를 요청하고 받은 파일과 비교하세요.
CPE와 PURL이 둘 다 필요한가요?
항상 그렇지는 않습니다. 생태계에 package URL이 있으면 그것을, 많은 상용 또는 임베디드 구성 요소처럼 없으면 CPE를 요청하세요. CISA 2026은 식별자를 하나 이상, 알려진 것은 모두 요구하고, BSI는 존재하는 각 식별자를 요구합니다.
CycloneDX나 SPDX 파일은 어떻게 검증하나요?
CycloneDX는 --fail-on-errors를 붙인 cyclonedx-cli validate 또는 sbom-utility를 사용합니다. SPDX는 SPDX tools-java의 Verify 명령이나, SPDX 2.2와 2.3이라면 pyspdxtools를 사용합니다. 그다음 sbomqs나 SPDX NTIA Conformance Checker로 프레임워크 프로필을 실행하세요.
좋은 SBOM 품질 점수는 몇 점인가요?
표준 기준점은 없으며, 저희가 인용할 만한 벤치마크도 없습니다. 점수는 완전성이 아니라 존재하는 필드를 측정합니다. 파일이 10점 만점에 9점을 받고도 제품의 절반을 빠뜨릴 수 있습니다. 대신 공급업체 요구 사항에 검사별 합격 기준을 정하고, 점수는 추세로 관리하세요.
OEM에 SBOM을 납품하시나요? 빌드에서 생성하세요
데모를 예약하고 GitHub Actions 빌드 하나를 CRACI에서 실행해 보세요. 빌드가 가져온 것의 SBOM을 패키지별 package URL과 완전성 상태와 함께 받아 보세요.
데모 예약