패키지 관리자, 겉모습에 속지 마세요! 공급망 공격의 위험성 경고
다양한 도구(GitHub Actions, Ansible Galaxy, Terraform, Helm)가 패키지 관리자처럼 동작하며, 의존성 관리(Dependency Management) 문제를 안고 있음
잠재적 공급망 공격(Supply Chain Attacks)의 위험성을 경고하며, 무결성 검증(Integrity Verification) 및 잠금 파일(Lockfile) 부재를 문제점으로 지적
GitHub Actions의 경우, 무결성 검증 부재(Lack of Integrity)로 인해 공급망 공격에 취약하며, Ansible Galaxy는 잠금 파일 부재로 인해 재현성 문제 발생
Terraform은 프로바이더(Provider)는 안전하지만, 모듈(Module) 측면에서 가변 참조(Mutable References) 문제 발생. Helm은 OCI 레지스트리(Registry)를 제외하고, 가변 태그(Mutable Tags)로 인해 보안 취약점 존재
GitHub Actions의 공급망 공격 취약성
GitHub Actions는 의존성 해결(Dependency Resolution) 과정에서 제약 조건 해결(Constraint Solving)을 지원하지 않아, 잠재적인 공급망 공격에 취약하다. 특히, `uses: actions/checkout@v4`와 같이 최상위 액션(Action)을 SHA로 고정하지 않으면, 가변 버전(Mutable Versions) 문제로 인해 악성 코드에 노출될 수 있다. tj-actions/changed-files 사건과 같이, 종속성 내의 악성 코드 삽입은 광범위한 피해를 야기할 수 있다.
Ansible Galaxy의 재현성 문제
Ansible Galaxy는 잠금 파일(Lockfile)을 지원하지 않아, 롤(Role) 설치 시 재현성 문제를 야기한다. resolvelib를 사용하여 의존성을 해결하지만, 잠금 파일 부재로 인해 동일한 환경을 보장하기 어렵다. 또한, 무결성 검증(Integrity Verification)이 선택 사항이며, 기본적으로 비활성화되어 있어, 공급망 공격에 대한 방어 능력이 떨어진다. 가변 버전(Mutable Versions) 문제 역시 보안 취약점을 증가시킨다.
Terraform의 모듈 의존성 관리 문제
Terraform은 프로바이더(Provider)에 대해 무결성 검증(Integrity Verification) 및 잠금 파일(Lockfile)을 지원하지만, 모듈(Module)은 가변 참조(Mutable References) 문제를 안고 있다. 모듈은 git 태그를 사용하여 버전을 고정하는데, 이 태그가 변경될 수 있어, 잠재적으로 악성 코드가 삽입될 수 있다. registry typosquatting과 같은 공격은 이러한 취약점을 악용한다.
Helm 차트의 보안 취약점
Helm은 OCI 레지스트리(Registry)를 제외한 전통적인 차트 저장소에서 가변 태그(Mutable Tags)를 사용하므로, 공급망 공격에 취약하다. Chart.lock 파일은 버전 번호만 기록하므로, 내용 변경을 감지할 수 없다. 또한, helm dependency build 명령어가 첫 번째 레벨의 의존성만 해결하여, 하위 차트의 의존성을 수동으로 관리해야 하는 불편함이 있다. symlink attack과 같은 공격은 이러한 취약점을 악용한다.
패키지 관리자의 공통 문제점
다양한 도구들이 패키지 관리자처럼 동작하면서, 재현성(Reproducibility), 공급망 증폭(Supply Chain Amplification), 재정의 및 제외(Override and Exclusion), 가변 참조(Mutable References), 전체 트리 고정(Full-tree pinning), 무결성 검증(Integrity Verification)과 같은 문제점을 공유한다. 이러한 문제점들은 도구의 종류와 관계없이, 공급망 공격(Supply Chain Attacks)의 위험을 증가시킨다.