최근 소프트웨어 공급망 공격이 증가하고 있다. 다음 내용을 설명하시오.
가. 소프트웨어 공급망 공격의 개념과 대표적 사례
나. SBOM(Software Bill of Materials)의 개념과 구성요소
다. SCA(Software Composition Analysis) 도구 활용 방안
라. CI/CD 파이프라인에서의 공급망 보안 강화 방안
출제 의도 분석
SolarWinds, Log4Shell, XZ Utils 사태 이후 소프트웨어 공급망 보안은 정보보안의 최우선 과제가 됐습니다. 미국 행정부 행정명령(EO 14028)에서도 SBOM 의무화를 명시했습니다. 개념 정의를 넘어 실제 CI/CD 파이프라인에 어떻게 적용하는지를 실무적으로 서술하는 것이 핵심입니다.
가. 소프트웨어 공급망 공격 개념과 사례
소프트웨어 공급망 공격(Software Supply Chain Attack)은 신뢰할 수 있는 소프트웨어 배포 경로(개발도구, 오픈소스 라이브러리, 업데이트 서버)를 침해하여 다수의 다운스트림 피해자에게 악성코드를 전파하는 공격입니다.
| 사례 | 공격 방식 | 피해 |
|---|---|---|
| SolarWinds (2020) | 빌드 시스템 침해, 정상 업데이트에 백도어 삽입 | 18,000개 기관 감염, 미국 정부기관 포함 |
| Log4Shell (2021) | 오픈소스 Log4j 취약점 악용, 원격 코드 실행 | 전 세계 수억 개 서버 영향 |
| XZ Utils (2024) | 2년간 신뢰 구축 후 오픈소스 압축 라이브러리에 백도어 삽입 | SSH 인증 우회 가능성 |
| npm/PyPI 타이포스쿼팅 | 인기 패키지와 유사한 이름의 악성 패키지 배포 | 개발자 무심코 설치 유도 |
나. SBOM 개념과 구성요소
SBOM(소프트웨어 자재 명세서)는 소프트웨어를 구성하는 모든 컴포넌트(오픈소스·상용·자체 개발), 라이브러리, 의존성, 라이선스 정보를 체계적으로 기록한 목록입니다. 식품의 ‘성분 표시’처럼 소프트웨어의 구성 성분을 투명하게 공개합니다.
| 구성요소 | 내용 | 예시 |
|---|---|---|
| 컴포넌트 이름 | 라이브러리·패키지 명칭 | Log4j-core |
| 버전 정보 | 정확한 버전 번호 | 2.14.1 |
| 공급자 정보 | 개발사·유지보수 주체 | Apache Software Foundation |
| 라이선스 | 오픈소스 라이선스 종류 | Apache 2.0 |
| 의존성 관계 | 컴포넌트 간 의존 구조 | A→B→C 트리 |
| 체크섬/해시 | 무결성 검증 값 | SHA-256 해시 |
| 알려진 취약점 | 연관 CVE 정보 | CVE-2021-44228 |
표준 형식: SPDX(Linux Foundation), CycloneDX(OWASP), SWID(ISO/IEC 19770-2)
다. SCA 도구 활용 방안
SCA(소프트웨어 구성 분석)는 프로젝트에 포함된 오픈소스 컴포넌트를 자동으로 탐지하고 알려진 취약점(CVE)·라이선스 위반을 검출하는 도구입니다.
- OWASP Dependency-Check: 무료, Maven·Gradle·npm 지원, NVD 기반 CVE 검색
- Snyk: 클라우드 기반, 실시간 취약점 DB, PR 자동 수정 제안
- Black Duck: 엔터프라이즈급, 바이너리 분석, 라이선스 컴플라이언스 강화
- Trivy: 오픈소스, 컨테이너 이미지·파일시스템·IaC 스캔 지원
라. CI/CD 파이프라인 공급망 보안 강화
- Shift-Left Security: 개발 초기부터 보안 검사 적용, 수정 비용 최소화
- 코드 서명(Code Signing): 아티팩트·컨테이너 이미지에 디지털 서명 (Sigstore/Cosign)
- 빌드 환경 격리: 에페머럴(Ephemeral) 빌드 환경으로 빌드 간 오염 방지
- SLSA(Supply-chain Levels for Software Artifacts): Google 제안 공급망 무결성 프레임워크, Level 1~4 단계별 적용
- Private Registry: 승인된 패키지만 내부 레지스트리에서 제공, 외부 직접 다운로드 차단