현대 소프트웨어는 오픈소스 라이브러리, 외부 빌드 도구, 서드파티 서비스 등 다양한 구성 요소를 통해 개발된다. 이처럼 수많은 외부 의존성이 연결된 개발 방식에서 발생하는 보안 위협을 소프트웨어 공급망 보안(Software Supply Chain Security) 이라고 한다. 최근 몇 년간 SolarWinds, Log4j 등의 사건을 통해 공급망 공격의 파급력이 입증되면서, 소프트웨어의 생산 과정 전반에 걸친 신뢰성 확보가 중요한 과제로 떠올랐다. 이에 따라 구글이 주도하는 SLSA 프레임워크가 글로벌 표준으로 주목받고 있다.
소프트웨어 공급망이란?
소프트웨어 공급망은 코드가 최종 사용자에게 전달되기까지의 모든 과정, 즉 소스코드 작성, 의존성 설치, 빌드, 테스트, 배포 등의 전체 경로를 의미한다. 이 과정에서 하나라도 변조되면 전체 시스템이 위험에 노출된다.
공급망 공격의 예시
- 오픈소스 패키지에 악성코드 삽입 (예: event-stream 사건)
- CI 서버 침해 후 빌드 결과물 변조
- 배포 파이프라인에 백도어 삽입
- 의존성 자동 설치 과정에서 가짜 패키지 유입 (Typosquatting 공격)
공급망 보안 프레임워크: SLSA란?
SLSA(Supply-chain Levels for Software Artifacts) 는 구글이 시작한 오픈소스 보안 프레임워크로, 소프트웨어 아티팩트의 무결성과 추적 가능성을 보장하기 위한 일련의 보안 요구사항을 계층적으로 정의한다. 이름 그대로 소프트웨어 아티팩트의 “공급망 신뢰 수준”을 나타내는 체계다.
SLSA의 목적
- 빌드 결과물이 신뢰 가능한 경로를 통해 생성되었음을 보증
- 코드 변경 이력과 빌드 환경을 추적 가능하게 만듦
- 보안 수준을 단계별로 정의해 조직이 점진적으로 적용 가능하게 함
SLSA 레벨 구조
SLSA는 총 4단계(Level 1~4)로 구성되며, 단계가 높을수록 보안 수준이 강화된다.
Level 1: 문서화된 빌드
- 빌드 과정이 정의되어 있고, 최소한의 빌드 메타데이터가 존재
- 보안성은 낮지만 시작점으로 활용 가능
Level 2: 서명된 증명서 (Provenance)
- 빌드 결과물에 대해 증명 데이터가 서명된 상태로 생성됨
- 누가 언제 어떤 환경에서 빌드를 했는지 기록
- 비정상적인 빌드 변경 탐지 가능
Level 3: 재현 가능한 빌드
- 동일한 소스, 설정으로 동일한 결과물이 항상 생성됨
- 증명서 자동 생성 및 검증 구조 필요
- CI/CD 파이프라인에 보안 자동화 적용 필수
Level 4: 완전한 감시와 통제
- 빌드 플랫폼 자체가 보안적으로 격리된 상태에서 작동
- 코드 커밋부터 배포까지 모든 과정이 감사 가능
- 높은 보안이 요구되는 금융, 국방 등에서 요구됨
실무에서의 적용 전략
SLSA는 일괄적으로 모든 레벨을 적용하기보다는 조직의 환경과 보안 수준에 따라 점진적으로 도입하는 것이 이상적이다.
1. 현재 빌드 프로세스 분석
CI/CD 파이프라인에서 어떤 도구가 사용되고 있으며, 어떤 외부 의존성이 있는지 확인한다. 빌드 환경이 오염될 가능성이 있는 지점을 파악해야 한다.
2. Provenance 데이터 수집 체계화
빌드 시점에 누구에 의해 어떤 코드로, 어떤 환경에서 실행되었는지를 자동으로 기록하고 서명하는 시스템을 구축한다. GitHub Actions, GitLab CI, Tekton 등과 SLSA 연동이 가능하다.
3. 재현 가능한 빌드 환경 조성
빌드 결과물이 매번 동일하게 생성되도록, 의존성과 빌드 설정을 고정하고 외부 요소의 변동을 최소화해야 한다. Docker 컨테이너 기반의 빌드 환경 고정이 대표적인 전략이다.
4. SLSA 레벨 기반 정책 수립
개발팀, 보안팀, 운영팀이 협력하여 SLSA 레벨에 따른 사내 보안 기준을 수립하고, 중요도에 따라 서로 다른 레벨의 정책을 적용할 수 있도록 한다.
도입 시 고려사항
- 툴체인 호환성: 사용하는 CI/CD 도구가 SLSA 요구사항을 얼마나 지원하는지 확인 필요
- 오버헤드 관리: 높은 레벨로 갈수록 시스템 복잡도와 리소스 요구가 증가
- 자동화 수준 확보: 수동 감사는 현실적으로 어렵기 때문에, 자동화 도구 활용이 필수
- 조직 내부 정책과의 정합성: 기존 보안 정책과 충돌하지 않도록 설계
결론: 공급망 보안은 소프트웨어 신뢰성의 출발점
오픈소스와 클라우드가 주도하는 개발 환경에서는 단일 시스템이 아닌 연결된 체인 전체의 보안성이 중요해졌다. SLSA는 이러한 복잡한 공급망 속에서 소프트웨어의 신뢰 수준을 명확히 정의하고, 그 수준을 높이기 위한 실질적 기준을 제공한다.
보안을 사후 대응이 아닌 사전 예방의 관점에서 접근해야 하는 시대다. 소프트웨어 공급망 보안은 더 이상 선택이 아닌 필수이며, 그 시작은 SLSA와 같은 체계적인 접근에서부터 출발한다.