소프트웨어 자재 명세서 (Software Bill of Materials)

정보보안학
한 줄 정의: 하나의 소프트웨어를 구성하는 모든 라이브러리·컴포넌트와 그 버전·출처를 빠짐없이 정리한 목록으로, 소프트웨어의 성분표에 해당합니다.

쉽게 풀면

식품 포장지에 적힌 성분표처럼, 소프트웨어에 어떤 부품(외부 라이브러리)들이 어떤 버전으로 들어 있는지를 낱낱이 적어 둔 목록입니다. 이게 있어야 나중에 특정 부품에서 취약점이 터졌을 때 '우리 제품에 그게 들어 있나?'를 곧바로 확인할 수 있습니다.

왜 중요한가

현대 소프트웨어는 수많은 오픈소스 부품으로 조립되어, 그중 하나에서 취약점이 발견되면 영향을 받는지 신속히 파악해야 합니다. 소프트웨어 자재 명세서는 이 가시성을 제공해 공급망 공격 대응과 취약점 관리의 필수 기반이 됩니다.

논문에서는 이렇게 쓰입니다

"널리 쓰이는 로깅 라이브러리에서 치명적 취약점이 공개되자, 각 조직은 소프트웨어 자재 명세서를 조회해 영향받는 제품을 몇 분 만에 식별할 수 있었다."

조금 더 깊게 보면

소프트웨어 자재 명세서는 각 구성 요소의 이름, 버전, 공급자, 고유 식별자 등을 담으며, SPDX나 CycloneDX 같은 표준 형식으로 작성해 자동 처리할 수 있게 합니다. 직접 포함한 부품뿐 아니라 그 부품이 다시 의존하는 전이 의존성까지 담아야 실효성이 있습니다. 최근에는 정부·규제 기관이 조달하는 소프트웨어에 이 명세서 제출을 요구하는 흐름이 강해지고 있습니다.

주의할 점

소프트웨어 자재 명세서는 목록을 만드는 것 자체가 목적이 아니라, 새 취약점이 나올 때마다 이를 자동으로 대조·활용하는 절차와 연결되어야 가치가 있습니다. 명세서가 오래되거나 전이 의존성을 빠뜨리면 신뢰할 수 없습니다.

관련 용어