보안

소프트웨어 세계의 자재 명세서, SBOM이 필요한 이유

Josh Fruhlinger  | CSO 2022.07.21
SBOM은 소프트웨어 제품의 구성요소를 세부적으로 알려줄 뿐만 아니라 각 구성요소의 공급망 관계도 보여주는 공식적이고 체계적인 기록이다. SBOM에는 애플리케이션에 포함된 패키지와 라이브러리, 해당 패키지와 라이브러리 간의 관계, 기타 업스트림 프로젝트가 기술된다. 재사용되는 코드 및 오픈소스와 관련해서는 특히 더 중요하다.
 
자동차의 자재 명세서 개념에는 많이들 익숙할 것이다. 자재 명세서에는 자동차가 움직이기 위해 필요한 모든 구성요소가 매우 세부적으로 기술된다. 자동차 공급망은 복잡하기로 악명이 높고, 도요타나 제너럴 모터스가 조립하는 자동차라 해도 그 구성 부품의 상당수는 전 세계에 분포한 하도급 업체에서 제조된다. 자재 명세서는 이와 같은 각 부품이 어디에서 왔는지를 알려준다. 이 정보는 단순한 흥미거리가 아니다. 예를 들어 특정 생산 주기의 에어백이 리콜되는 경우 자동차 제조업체는 그 에어백의 제조 출처를 빠르게 알아낼 방법이 필요하다.
 
ⓒ Getty Images Bank

소프트웨어 만들기와 자동차 제조는 분명 다르지만 컨테이너화된 분산 애플리케이션 구축하기 위해 외부 오픈소스 라이브러리를 사용하는 사례가 증가하고 있는 만큼 두 프로세스에는 생각보다 공통점이 많다. 그래서 SBOM이 갈수록 더 보편화되고 있는 것이다.
 
개발자와 사용자 모두 SBOM을 사용해서 자신이 배포하거나 사용하는 소프트웨어에 정확히 어떤 구성요소가 포함되는지 알 수 있다. 여기엔 특히 보안과 관련해서 여러 중요한 의미가 있다.
 

왜 SBOM이 필요한가?

모놀리식 사유 소프트웨어 코드베이스의 시대는 오래 전에 끝났다. 현대 애플리케이션은 광범위한 코드 재사용을 기반으로 오픈소스 라이브러리를 사용해서 구축되는 경우가 많다. 또한 이러한 애플리케이션은 필요한 요소를 모두 갖춘 작은 기능적 구성요소인 컨테이너로 분할되는 추세다. 컨테이너는 쿠버네티스와 같은 컨테이너 오케스트레이션 플랫폼으로 관리되며 로컬 또는 클라우드에서 실행된다.
 
이러한 변화는 전체적으로 소프트웨어 개발에 유익했고 개발자 생산성을 늘리고 비용을 줄였다. 그러나 보안에 있어서는 많은 측면에서 악몽이다. 개발자들이 작동 구조를 완전히 파악하기 어려운 외부 코드에 크게 의존하면서 물리적 제조업체의 공급망에 근접할 만큼 복잡한 소프트웨어 구성요소 공급망이 구축됐다. 또한 애플리케이션 보안의 강도는 가장 취약한 구성요소에 의해 전적으로 결정되므로 이 방식으로 구축된 소프트웨어에는 업계를 괴롭히는 특유의 취약점이 존재한다.
 
2020년대에 들어 지금까지 대대적인 소프트웨어 공급망 공격이 연달아 발생했다. 2020년 후반 러시아 정보 기관과 연계된 해커 집단이 솔라윈즈의 네트워킹 모니터링 플랫폼에 백도어를 설치했고 이는 솔라윈즈 플랫폼을 사용하는 다른 보안 제품이 모두 침해되는 결과로 이어졌다. 2021년 하반기에는 아파치 Log4j에서 심각한 취약점이 발견됐다. 시스템 이벤트 로깅에 사용되는 자바 라이브러리라고 하면 대수롭지 않게 들릴 수 있지만, 사실 거의 모든 자바 애플리케이션이 어떤 형태로든 Log4j를 사용한다. 모두 공격 목표가 된 것이다.
 
이 보안 위기는 SBOM이 보안 환경에서 할 수 있는 역할을 보여준다. 많은 사용자가 이러한 취약점에 대한 이야기를 이미 들었을 수 있지만 자신이 Log4j 또는 다른 솔라윈즈 구성요소를 실행 중이었다는 사실은 모르고 있었다. 적절한 SBOM이 있다면 내가 정확히 어떤 패키지를 배포했는지, 그 패키지의 버전이 무엇인지를 알 수 있고 따라서 필요한 업데이트를 통해 안전을 지킬 수 있을 것이다.
 
SBOM의 효용성은 보안에 그치지 않는다. 예를 들어 개발자가 다양한 소프트웨어 구성요소의 오픈소스 라이선스를 추적하는 데도 도움이 될 수 있다. 애플리케이션을 배포할 때 중요한 부분이다.
 

소프트웨어 자재 명세서에 대한 행정 명령

특히 솔라윈즈 해킹은 미국 정부의 경각심을 일깨웠다. 다수의 연방 기관이 침해된 구성요소를 배포한 상황이었기 때문이다. 그 결과 백악관이 5월에 내린 사이버 보안 행정 명령에는 SBOM에 대한 지시가 포함됐다. 구체적으로 미 상무부에는 SBOM의 최소 요소 기준, 즉 연방 정부를 대상으로 제품을 판매하는 모든 업체가 충족해야 하는 요구사항을 공표하라는 명령이 떨어졌다.
 
이 명령은 연방 정부와 직접적인 관계를 맺고 있는 업체에만 적용되지만 미국 정부, 그리고 그리고 미국 정부와 협력하기를 원하는 많은 기업의 특성상 연쇄 반응이 일어나게 된다. 또한 정부에 판매되는 제품은 이제 내부 구성요소를 상세히 기술하는 SBOM을 제공해야 하는데, 사실 대부분의 제품이 정부 외의 기업과 조직에도 판매된다. 많은 소프트웨어 제조업체는 비록 정부가 정한 방향이긴 하지만 민간 부문 고객도 SBOM의 가치를 인지하게 되기를 원한다.
 
또한 연방 정부 계약은 그 자체가 공급망이다. 뱅크오브아메리카의 전 최고 보안 과학자이며 현재 주피터원(JupiterOne)의 CISO겸 연구 책임자인 서닐 유는 이 행정 명령과 관련하여 “연방 정부와 직접 비즈니스를 하는 매우 많은 기업이 직접적인 영향을 받게 된다”면서 “연방 정부에 제품을 판매하는 기업에 제품을 판매하는 기업들이 받게 될 2차 영향은 훨씬 더 크다”고 말했다.
 

SBOM에는 무엇이 포함되어야 하는가?

미국 전기통신 및 정보청(NTIA)은 이 행정 명령에 따라 2021년 7월 연방 정부 요구사항을 충족하기 위해 SBOM에 필요한 조건을 기술한 “소프트웨어 자재 명세서를 위한 최소 요소”를 발표했다. 소프트웨어 경제에서 연방 정부가 가진 지배적 지위를 감안하면 이 문서가 업계 전체에서 사실상의 SBOM 표준이 될 가능성이 높다. NTIA는 모든 SBOM이 갖춰야 하는 다음과 같은 7가지 데이터 필드를 명시했다.
 
  • 공급자 이름 : 구성요소를 만들고 정의하고 식별하는 주체의 이름
  • 구성요소 이름 : 최초 공급자에 의해 정의된 소프트웨어 단위의 명칭
  • 구성요소 버전 : 공급자가 이전에 식별된 소프트웨어 버전으로부터의 변경을 명시하기 위해 사용하는 식별자
  • 기타 고유 식별자 : 구성요소를 식별하는 데 사용되거나 관련 데이터베이스를 위한 조회 키 역할을 하는 기타 식별자. 예를 들어 NIST의 CPE 사전의 식별자일 수 있다.
  • 종속성 관계 : 업스트림 구성요소 X가 소프트웨어 Y에 포함된다는 관계의 명시. 오픈소스 프로젝트에서 특히 중요하다.
  • SBOM 데이터 작성자 : 이 구성요소에 대한 SBOM 데이터를 만든 주체의 이름
  • 타임스탬프 : SBOM 데이터 어셈블리의 날짜 및 시간 기록
 
SBOM은 다음 요구사항도 충족해야 한다.
  • SBOM은 머신 판독이 가능하도록 SPDX, 사이클론DX(CycloneDX), SWID 태그의 세 가지 표준화된 형식 중 하나로 작성되어야 한다.
  • 새로운 각 소프트웨어 버전마다 새 SBOM을 생성해 최신 상태를 보장해야 한다.
  • 종속성 관계를 포함하는 것 외에도, SBOM을 조합한 조직이 알지 못하지만 그러한 관계가 존재할 수 있는 점도 설명해야 한다.
 

SBOM을 만드는 방법

이쯤 읽으면 SBOM을 만드는 작업이 부담스럽게 느껴질 수 있다. 사실 모든 항목을 수동으로 추적한다고 생각하면 엄두가 나지 않는다. 다행히 그럴 필요는 없다. 대부분의 경우 SBOM은 소프트웨어 구성 분석(SCA) 툴에서 자동으로 생성되기 때문이다. SCA 툴은 데브섹옵스 파이프라인에서 자주 사용되며 SBOM 생성 이외의 다른 역할도 한다.
 
SCA 툴은 코드 디렉터리에서 패키지를 스캔하고 이를 온라인 데이터베이스와 대조하여 확인된 라이브러리와 매칭한다. 대안도 있다. 예를 들어 소프트웨어 빌드 프로세스의 일부로 SBOM을 생성하는 툴도 있다.
 
사이클론DX 표준을 개발한 권위 있는 보안 단체인 OWASP 재단은 종합적인 SCA 툴 목록을 제공한다. 단순한 오픈소스 명령줄 툴부터 화려한 상용 제품에 이르기까지 모두 포함되어 있는 유익한 목록이다. 
 
분산 소프트웨어를 구축하는 경우 개발 습관에 SBOM을 통합하는 것이 점점 더 중요해지고 있다. 연방 정부와 (아직) 계약 관계가 아닐 수 있지만, 공급망 공격에는 분명히 신경을 써야 한다. SBOM은 재사용된 외부 코드라는 블랙 박스를 들여다볼 수 있는 방법을 제공한다.
editor@itworld.co.kr 
 Tags SBOM SCA

회사명 : 한국IDG | 제호: ITWorld | 주소 : 서울시 중구 세종대로 23, 4층 우)04512
| 등록번호 : 서울 아00743 등록발행일자 : 2009년 01월 19일

발행인 : 박형미 | 편집인 : 박재곤 | 청소년보호책임자 : 한정규
| 사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.