SW보안 위해 ‘SBOM’이 갖춰야 할 필수요소…
SW보안 위한 자재명세서 SBOM, “‘데이터 범위’, ‘자동화 지원’ 필수” “SPDX, SWID, CycloneDX 등 ‘표준 데이터 포맷’도 중요”
[애플경제 전윤미 기자] 오픈소스가 대중화되고 소프트웨어가 폭주하면서, 특히 SBOM(Software Bill of Materials; 소프트웨어 자재 명세서)을 통한 SW보안과 관리가 강조되고 있다. SBOM은 일종의 자재로 간주할 수 있는 소프트웨어를 관리하고 보안을 지키기 위한 명세서 내지 ‘장부’로 볼 수 있다. 그럴수록 효율적인 관리와 보안을 위한 SBOM의 필수 요소와, 표준 SBOM 데이터 포맷이 중요해지고 있다.
특히 소프트웨어가 날로 복잡해지고, 클라우드 네이티브 확산 등으로 그 공급망의 투명성도 크게 떨어지고 있다는게 전문가들의 시각이다. 최근 보안업체 이글루코퍼레이션의 김미희 팀장은 “투명성 저하로 인해 오픈소스 라이선스 추적이나 컴포넌트의 관리가 가능한 SBOM의 필요성이 날로 강조되고 있다”고 밝혔다.
NIST, SBOM 3가지 구성요소 제시
국제표준기술기구(NIST. National Institute of Standards and Technology)는 이에 대한 권위있는 규준을 제시하고 있다. SW분야를 비롯한 국내 업계나 전문가들도 NIST가 제시한 ‘소프트웨어 공급망 보안 지침’ 등을 염두에 두고 나름의 SBOM 관리를 이행하는 추세다.
앞서 김 팀장은 관련 연구보고서를 통해 NIST의 각종 분석자료를 인용, SBOM 필수 구성요소와 표준 데이터 포맷을 소개하기도 했다.
정보통신기획평가원을 통해 소개된 보고서에 따르면 우선 필수 구성요소는 크게 세 가지다. 즉 ‘데이터 범위’와 ‘자동화 지원’, ‘작업 및 절차’ 등이다.
그 중 ‘데이터 범위’에서 SBOM은 추적해야 하는 각 구성요소에 대한 기준 정보를 문서화해야 한다. 또 공급 업체명, 컴포넌트 명칭, 컴포넌트 버전, 컴포넌트 해시(component hash), 기타 고유 식별자, 공급자와의 종속성 관계, 그리고 SBOM 데이터 작성자와 타임스탬프(timestamp) 등을 반드시 문서로 기록해야 한다.
또 ‘자동화 지원’ 부문은 소프트웨어 에코시스템 전반에 걸쳐 필요한 자동 생성이나 기계적 가독성 등의 개념을 포괄한다. 특히 SBOM 생성을 위한 표준 데이터 포맷은 ‘SPDX(Software Package Data Exchange)’, ‘SWID(Software Identification)’, ‘CycloneDX(Data Exchange)’를 사용하도록 한다.
‘작업 및 절차’에선 SBOM을 요청하고, 생성하며 실행된 작업 등을 정의한다. 작업 빈도(frequency)나, 깊이, 알려지거나 알려지지 않은 정보, 분포 등을 상세히 명시해야 한다.
‘SW 생명주기별 요소’도 공개
이를 위해 NIST는 ‘소프트웨어 공급망 보안 지침’에서 소프트웨어 생명주기별로 적용해야 할 SBOM의 요소를 공개한 바 있다.
즉, SW계획과 절차, 개발, 빌드, 테스트, 릴리즈, 설치, 구성, 유지 관리 등 SW 생태계 전반에 걸쳐 필요한 사항들이다. 소프트웨어 요구사항, 소프트웨어 명세, 소프트웨어 배포 시 필요한 정보 목록 등이 그런 경우다.
또 “소프트웨어 공급업체들의 경우 소프트웨어 생명주기를 통해 배포되는 소프트웨어 패키지의 메타정보를 기계적 형태로 자동화된 SBOM 운영체계를 갖춰야 한다”는 주문이다.
이에 비해 “사용자들은 소프트웨어 설치나 구성, 유지관리를 위해 소프트웨어 공급업체에서 제공한 SBOM 정보를 토대로 지속적인 소프트웨어 변경사항을 SBOM에 반영하고 관리해야 한다”는 것이다.
필수요소 자동화 위한 ‘표준 데이터 포맷’ 3가지
특히 이같은 SBOM의 필수 요소를 기계적인 형태로 자동화하고, 관리하기 위해서는 앞서 언급한 ‘표준 SBOM 데이터 포맷인 SPDX, SWID, CycloneDX를 사용할 수 있다.
김미희 팀장은 이에 대해 “‘ISO/IEC 5962:2021’을 기반으로 하는 SPDX가 그중 확장성과 성숙도 측면에서 우수한 성능을 보인다”면서도 “보안 관점의 통합화와 자동화 측면에서는 오픈소스 기반의 CycloneDX가 취약점 관리나 활용도 측면에서 우수하다”고 비교했다.
간단히 요약하면, SPDX는 소프트웨어 구성요소와 관련된 라이센스, 저작권 및 보안정보 등을 파일 형식으로 제공한다.
이는 또 특정 소프트웨어 제품과, 그 구성 요소, 구성 요소의 집합, 개별 파일 및 코드 스니펫과 파일, 패키지 등을 제공하는 등 확장성과 유연성이 그 특징이다. 또 다양한 파일 형식이 있고, NVD(美 국립취약점DB)나 기타 패키징 시스템의 메타데이터와 연결할 수도 있다.
시스템 구성 요소와 구성 요소들 간의 관계를 설명하는데 유용하다. 소프트웨어 지적 재산(라이선스, 저작권)을 잘 파악할 수 있고, 소프트웨어 공급망에 대한 위험평가 능력도 뛰어나고, 구성 요소를 잘 검증할 수도 있다.
CycloneDX가 보안 기능 뛰어나
이에 비해 SWID는 소프트웨어 제품의 특정 내역과 특성을 관리, 설명하는 것이다. 예컨대, SW빌드시점에 생성된 안정적 소프트웨어 식별자를 제공하고, 소프트웨어를 설치할 경우 필요한 공급자와 소비자 간의 소프트웨어 표준정보를 제공하기도 한다. 또한 패치나 업데이트, 구성 설정, 보안정책, 취약점 등을 지원한다.
SWID는 이런 특성으로 인해 기존에 설치된 소프트웨어 인벤토리와 엔드포인트 등에 대한 지속적인 모니터링을 손쉽게 할 수 있다. 또한 손상된 소프트웨어의 실행을 방지하기도 한다.
CycloneDX는 소프트웨어 보안 컨텍스트와 공급망 구성요소를 분석하기 해 경량화된 SBOM이다. 당연히 보안에 있어선 가장 뛰어나다. 지난 2017년 보안에 역점을 두고 출시된 것으로, 완전 자동화된 SBOM 표준을 지원하고 있다.
이는 오픈소스 기반의 다양한 개발 생태계에 걸친 통합과 자동화 호환성을 제공하고 있다. 이를 위해 SBOM, SaaSBOM, HBOM, OBOM, VDR, VEX 등을 지원한다. 또한 “확장 가능성을 통한 조직 및 산업별 요구사항을 충족하는 새로운 기능의 프로토 타이핑도 제공한다”는 설명이다.
이런 특징을 지닌 CycloneDX는 역시 보안 기능이 탁월하다. 취약점 분석이나 보안 분석을 통해 소프트웨어 공급망의 위험을 평가하고 검증해낸다. 또 서명된 구성 요소와, 구성 요소 어셈블리, SBOM의 무결성을 검증하기도 한다. 특히 “빌드타임 생성·배포에 유용한 파일 형식과 ‘머신 간 바이너리 형식’을 제공한다.”는 얘기다.