오픈소스

SCA 도구 도입을 위한 15가지 BMT 체크리스트

 | KMS Technology 2023.10.26
ⓒ Getty Images Bank

주력 제품과 서비스를 개발할 때 오픈소스를 사용하지 않는 기업은 이제 찾아보기 어렵다. 오픈소스의 활용은 일상화됐고 사용 범위 또한 매우 광범위하다. 개발된 소스코드 중 오픈소스가 차지하는 비중은 90% 이상으로, 의존도가 매우 높다.

오픈소스는 개발 기간 단축, 업무 효율화, 비용 절감이라는 이점도 있지만, 오픈소스 고유의 특성으로 인해 기업은 다양한 위험에 직면할 수 있다. 대부분 오픈소스는 1개 이상의 보안 취약점을 가지고 있고 라이선스 종류는 2,800여 가지인 데다가, 이들 라이선스에는 필수 준수 사항이 포함되어 있기 때문이다.

건강한 사람의 몸에도 염증은 항시 존재하며, 잘못된 습관이 쌓이면 큰 병으로 이어지기도 하듯 기업은 오픈소스를 보다 안전하게 사용하기 위해 지속적으로 관리 및 점검해야 한다. 오픈소스 보안 취약점 및 라이선스 현황 점검을 위한 소프트웨어 구성 분석(Software Composition Analysis, SCA) 도구를 적극 활용하는 것도 소프트웨어(SW) 공급망 보안을 강화하는 대표적인 방법이다.

그렇다면 시중에 공급되는 SCA 도구를 선택할 때는 어떤 점을 고려해야 할까? PC를 구매하기 전 벤치마킹 테스트(Benchmarking Test, BMT)를 통해 성능을 비교하는 것처럼 SCA 도구를 선택할 때도 벤치마킹 테스트를 진행하는 것이 좋다. 이때 점검하면 좋을 15가지 항목을 소개한다. 


Part 1. 오픈소스 점검

가장 먼저 SW 구성을 분석하는 SCA 도구의 스캔 및 분석 기능을 테스트한다. SCA 도구는 다양한 개발 언어와 여러 형태의 파일을 분석해야 한다. 복잡하게 구성된 오픈소스의 의존성 관계를 자동 식별해 내는 기능까지 제공한다면 훨씬 이상적이다. 우수한 자동 식별 성능은 개발자와 오픈소스 검토자의 업무 효율을 극대화할 수 있으며, CI/CD 환경에 통합해 자동화할 수 있다.

1. 오픈소스 스캔
 
구분 요건
지원
언어
Java, C/C++, C#, JavaScript, Kotlin, Objective-C, Python, PHP, Ruby, Swift, Node.js 등을 지원하는가?
   지원 파일     형식 소스파일/폴더, 펌웨어 파일을 포함한 바이너리, Docker 이미지, 압축파일, 아카이브 파일 등을 지원하는가?
지원
방식
GUI, CLI, 웹 UI를 지원하는가?

2. 오픈소스 분석
 
구분 요건
자동 식별 스캔 완료 후 오픈소스 컴포넌트 자동 식별 및 보안 취약점/라이선스 현황의 자동 스캔이 가능한가?
Signature 분석 스캔 완료 후 매치된 폴더 및 파일 등에 대한 Signature 분석이 가능한가? 
바이너리
분석
윈도우 실행파일, 리눅스 실행파일, ARM 펌웨어 등의 바이너리 분석이 가능한가?
Snippet 분석 소스 일부 또는 전체를 복사해 사용한 경우 이를 검출할 수 있는가?
의존성
분석
Maven, Gradle, NuGet, Npm, Pip GoLang, Yocto 등 지원하는 패키지 매니저(Package Manager)는 무엇인가?
직접 의존성(Direct Dependency)뿐 아니라 전이 의존성(Transitive Dependency 혹은 간접 의존성(Indirect Dependency) 분석이 가능한가?


Part 2. 오픈소스 대응 정보 

스캔 작업 이후 점검된 오픈소스의 보안 취약점 및 라이선스 위험을 확인하고 나면 제시된 가이드에 맞춰 적절한 조치를 취해야 한다. 이것이 SCA 도구를 사용하는 궁극적인 목적이다. 정확한 위험 식별을 위해서는 실시간 업데이트되는 광범위한 정보 DB가 필요하며, 정책 기준 설정을 통해 정책 위반 여부를 자동으로 식별할 수 있어야 한다. 이를 통해 담당자는 위험 여부를 적시에 확인하고 상황별로 대처할 수 있다.

3. 오픈소스 보안 취약점
 
구분 요건
정보
제공
CVE, CWE, CVSS, NVD 정보를 제공하는가?
CVSS 등의 표준 스코어링 기반의 취약점 평가 정보를 제공하는가?
탐지된 보안 취약점에 대한 분류 기능(유형, 중요도 등 필터)을 제공하는가?
조치 가이드
제공
탐지한 보안 취약점별 상세 조치 방법, 우회 방안(workaround) 등을 제공하는가?
보안 취약점이 제거된 안전한 컴포넌트 버전을 추천할 수 있는가?
조기
알림
새로운 보안 취약점에 대해 실시간 조기 경보 알림을 제공하는가?
알림 내용을 담당자 메일이나 JIRA 등 다양한 채널을 통해 전달하는가?

4. 오픈소스 라이선스
 
구분 요건

 정보
    제공          
사용된 오픈소스의 라이선스 정보(듀얼 라이선스 포함) 및 라이선스에서 요구되는 필수사항, 금지조항, 허용조건 등 상세 정보를 제공하는가?
라이선스 위험도를 쉽게 판단할 수 있는 지표를 제공하는가?

5. 오픈소스 정책
 
구분 요건
설정 및
관리
전체/개별 프로젝트를 대상으로 보안 취약점/라이선스 정책을 설정 및 관리할 수 있는가?
조직/팀별로 보안 취약점/라이선스 정책을 설정 및 관리할 수 있는가?
위반
식별
설정된 오픈소스 정책을 위반한 컴포넌트를 쉽게 파악할 수 있는가?

위반
  조기 알림      
스캔 등록된 프로젝트를 대상으로 새로운 정책 위반 사항에 대해 식별할 경우 실시간 조기 경보를 제공하는가?
경보를 담당자 메일이나 JIRA 등 다양한 채널을 통해 전달하는가?


Part 3. 오픈소스 관리 

대다수 오픈소스는 1개 이상의 보안 취약점을 내포하고 있으며, 어느 시점에 위험 수위가 높아질지 알 수 없고 예상할 수도 없으므로 개발 환경에 통합된 후 지속적으로 점검해야 한다. 특히 국제 표준 규격의 소프트웨어 자재 명세서(Software Bill of Materials, SBOM)를 자동 생성하고 관리해 문제가 되는 오픈소스가 사용된 프로젝트를 즉시 식별해 내는 것이 매우 중요하다.

6. SBOM 및 리포트, 고지문
 
구분 요건
SBOM
리포트
제공
SPDX, CycloneDX 등의 표준을 지원하는가?
정책 위반 내역을 SBOM을 통해서도 확인할 수 있는가?
기타
리포트
제공
현황 보고서, 상세 보고서, 기간별 보고서, 사용자 정의 보고서 생성 등 다양한 리포팅 기능을 제공하는가?
 
고지문
    생성       
오픈소스 사용 내역 및 라이선스 전문을 포함하는 고지문을 생성하는가?
저작권(Copyright)을 포함해 SBOM 내용 고지문을 자동으로 생성하는가?

7. 지식 베이스 DB
 
구분 요건
제공DB
종류 

오픈소스 라이선스 DB와 보안 취약점 DB를 동시에 제공하는가?
 
DB
최신화
오픈소스 SW별 보안 취약점 정보를 실시간으로 수집하고 업데이트하는가?
추가DB
제공
기본으로 제공하는 알려진 취약점 DB(NDV) 정보 외 추가적인 보안 취약점 관련 DB를 제공하는가?

8. 정보 검색
 
구분 요건
사용 중인
컴포넌트
스캔 및 등록된 프로젝트에서 사용 중인 컴포넌트 검색 기능을 제공하는가?
오픈소스
컴포넌트
공개된 오픈소스 컴포넌트 검색 기능을 제공하는가?
검색된 컴포넌트가 사용된 프로젝트를 식별할 수 있는가? 
검색된 컴포넌트의 보안 취약점 및 라이선스 위험 등급을 파악할 수 있는 지표를 제공하는가?
오픈소스
보안 취약점
보안 취약점 정보 확인을 위한 검색 기능을 제공하는가?
해당 보안 취약점을 내포하고 있는 프로젝트를 식별할 수 있는가?


Part 4. SCA 도구의 기타 기능

점검한 데이터는 사용자가 쉽게 식별할 수 있어야 하며, 다양한 개발 환경에 통합할 수 있는 연동 기능과 가이드도 필수적이다. 이런 부가적인 기능은 IT 운영 환경의 관리 체계를 최적화하는 데 도움이 된다. 또한 기업은 이를 통해 정책 변화에도 빠르게 대처할 수 있다.

9. 대시보드
 
구분 요건

대시보드
 
전체 프로젝트의 상황을 확인할 수 있는 대시보드 기능을 제공하는가?
정책 위반 집계, 컴포넌트 사용 통계 등을 제공하는가?

10. 사용자 통제
 
구분 요건
 
  사용자 관리   
 
사용자/관리자별 권한 부여, 권한 분리 및 변경과 같은 사용자 통제 관리 기능을 제공하는가?

11. 인터페이스
 
구분 요건

REST API
 
외부 툴과 연동해 보안 취약점 및 라이선스 점검 정보 등을 조회하는 다양한 API를 제공하는가?
CI/CD
연동
GitHub, GitLab, Jenkins, Bamboo 등 CI/CD 환경과 연동되는가?
SSO
연동
SAML, LDAP 등과 연동되는가?
IDE
연동
GitHub, GitLab, Jenkins, Bamboo 등 다양한 개발 환경과 연동되는가?

12. 보안성
 
구분 요건
네트워크 구간
암호화
SSL 통신 등에 적용되는가?
사용자 정보/인증 보안 비밀번호 보안 규칙, SHA256 암호화, TLS 1.2 이상 사용 등 사용자 정보/인증을 보호하는 수단이 있는가?
소스코드 유출
방지
암호화/Hash 등을 통해 소스코드 스캔 시 외부 유출 위험을 방지가 가능한가?

13. 인프라 지원 환경
 
구분 요건
클라우드
플랫폼
AWS 등 도구를 설치 운영할 수 있는 클라우드 플랫폼을 지원하는가?
망 분리
법규 준수 여부
망 분리 법규를 준수해 오픈소스 점검 환경을 구성했는가?
다양한 운영체제
지원
리눅스, 윈도우, 맥 등 다양한 운영체제와 사용 환경을 지원하는가?

14. 백업 및 복구
 
구분 요건
사용자
DB
사용자 DB 백업 및 복구 기능을 제공하는가?

시스템
 
백업 솔루션 혹은 자체적인 기능을 통해 시스템을 백업 및 복구할 수 있는가?

15. 도움말/매뉴얼
 
구분 요건
전체 기능에 대한
매뉴얼 지원
전체 기능에 대해 매뉴얼을 제공하는가?
REST API 매뉴얼을 제공하는가? 
영상 혹은 문서 형태의 사용자 Tutorial을 제공하는가?

여기서 제시한 점검 사항은 SCA 도구 도입을 위해 국내 기업이 지금까지 직접 진행했던 벤치마킹 테스트 내용을 종합한 것이다. 고객사마다 가중치가 상이하며, 각 항목은 필수/선택 항목으로 나뉠 수 있다. 이런 체크리스트를 잘 활용한다면 기업의 요구사항에 적합한 올바른 SCA 도구를 선택할 수 있을 것이다. 해당 BMT 체크리스트는 KMS 테크놀로지 홈페이지에서도 확인할 수 있다. 

*오픈소스 SCA도구 도입을 위한 필수 체크리스트

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

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

Copyright © 2023 International Data Group. All rights reserved.