개발을 하다 보면 아무 생각없이 import org.apache.logging.log4j;
이것처럼 오픈소스를 많이 썼다. 하지만 오픈소스는 공개된 코드이기 때문에 CVE가 발견될 경우 공격자가 악용할 위험이 있다.
특히 요즘 supply chain attack 사례가 늘어나면서 체계적인 관리 필요성을 느꼈다.
그래서 회사에선, Software Composition Analysis 기반 취약점 점검을 통헤 위험 요소를 사전에 제거하는 것에 중점을 두고 있었다.
그렇다면 SCA 진단 서비스 단계를 알아보자.
1. 현황 파악: 소스코드나 바이너리 안에 포함된 오픈소스 라이브러리를 식별
2. 취약점 분석: 식별된 오픈소스 라이브러리에 대해 CVE 취약점을 매핑하여 위험성 평가
3. 조치 및 이행 관리: 위험한 라이브러리를 교체하거나 보안 패치를 적용하고 그 이행 과정을 추적 관리
내가 해야할 것은 Sample Open Source Code를 만들기다.
SCA 솔루션를 선정하기 위해서는 테스트용 오픈소스 환경이 필요하기 떄문이다.
SCA 솔루션은 보통 두가지 방식으로 진단한다.
1. 파일 해시값 검사: 오픈 소스 라이브러리 파일의 해시를 계산해서 DB에 등록된 해시와 비교
2. 라이브러리 메타정보 기반 검사: 별도 파일(pom.xml, requirements.txt)이나 바이너리 내부 메타데이터를 분석하여 라이브러리 이름/버전 추출
오픈소스 코드 만들기
1. 취약점 데이터 수집
NIST NVD
미국 국립 표준기술연구소가 운영하는 공식 취약점 데이터베이스
세상 모든 소프트웨어 취약점을 공식적으로 모아놓은 국가 데이터베이스이다.
KEV
CISA가 제공하는 현재 실제로 공격에 이용되고 있는 취약점 리스트
EPSS
취약점이 악용될 확률을 예측하는 점수 시스템
이 세 기준을 통해 나온 600개 정도의 CVE 리스트를 확보했다.
2. 언어별로 오픈소스 구정
CVE를 기반으로
- java용
- python용
으로 각각 코드를 만들어야 한다. 지금 진행 ing