피드로 돌아가기
Two Supply Chain Attacks in Two Weeks - Why Defense-in-Depth Saved Me
Dev.toDev.to
Security

공급망 공격 2회 생존, Defense-in-Depth로 방어한 실전 기록

Two Supply Chain Attacks in Two Weeks - Why Defense-in-Depth Saved Me

Felix Ortiz2026년 4월 4일6intermediate

Context

GitHub Action의 태그 오염과 axios npm 패키지의 백도어 삽입 공격이 CI/CD 파이프라인을 타격함. 전역 npm 설치 시 락파일을 우회하여 악성 패키지가 유입되는 취약점 발견. 보안 스캔 도구가 오히려 공격 경로가 되는 역설적 상황 발생.

Technical Solution

  • 전역 npm 설치 시 버전 핀닝을 적용하여 런타임의 임의 버전 업데이트 차단
  • GitHub Action의 가변 태그(@v4 등)를 불변의 40자리 commit SHA로 교체하여 무단 코드 변경 방지
  • 컨테이너 이미지 참조 방식을 가변 태그에서 불변의 SHA256 digest 기반으로 전환
  • 셸 스크립트 내 ${{ }} 표현식 직접 삽입 방식을 env: 블록을 통한 환경 변수 참조 구조로 개선하여 스크립트 인젝션 방지
  • OIDC 기반 Workload Identity Federation을 도입하여 정적 시크릿 없이 클라우드 리소스에 접근하는 단기 인증 체계 구축
  • Dependabot을 연동하여 SHA 핀닝으로 인한 버전 정체 문제를 자동 PR 기반 업데이트 체계로 해결

Impact

  • 악성 패키지 실행 후 C&C 서버 통신 시간 약 6초 발생
  • GITHUB_TOKEN의 유효 기간 최대 24시간 제한 및 Read 전용 권한 설정을 통해 공격 영향도(Blast Radius) 제로화

Key Takeaway

개별 컴포넌트의 완벽한 보안보다 어떤 요소든 언제든 침해될 수 있다는 제로 트러스트 전제하에 계층적 방어 체계를 구축하는 것이 핵심임.


CI/CD 워크플로우 내 모든 외부 의존성(Action, Image, Package)을 가변 태그가 아닌 SHA/Digest로 핀닝하고 OIDC 인증을 도입할 것

원문 읽기