피드로 돌아가기
Your package was compromised. How do you prove which version you actually shipped?
Dev.toDev.to
Security

CI/CD 파이프라인 공격으로 패키지 변조 사실을 증명하지 못하는 문제를 SHA-256 해시값을 Bitcoin 블록체인에 고정하여 독립적 검증이 가능한 형태로 해결한다

Your package was compromised. How do you prove which version you actually shipped?

Jonna Fassbender2026년 3월 30일4intermediate

Context

공급망 공격(Supply Chain Attack)은 개발자의 시스템과 사용자 사이에 있는 무언가가 침해되는 형태로 발생한다. LiteLLM과 Telnyx는 CI/CD 내 취약점 스캐너를 통해 PyPI 자격 증명을 탈취당해 악성 버전을 배포 받았다. 기존 증거 체계의 근본적 문제점은 증명이 필요한 시스템이 스스로 생성한 증거를 제시한다는 점이다. CI 로그, 레지스트리 타임스탬프, 내부 기록은 모두 동일한 Compromised될 수 있는 시스템에 의존한다.

Technical Solution

  • 패키지 파일(.whl 등) → SHA-256 해시값 생성
  • 생성된 해시값을 Bitcoin 블록 높이와 함께 영구 기록
  • Bitcoin 블록 IDsms 독립적 제3자 검증이 가능한 변경 불가능한 원장 역할 수행
  • build pipeline에 umarise anchor 명령어 한 줄로 통합
  • GitHub Actions 환경에서 AnchoringTrust/anchor-action@v1 액션으로 자동화
  • Python SDK(UmariseCore)를 통해 프로그래밍 방식으로 직접 호출 가능

Impact

수치 기반 성능 변화 없음

Key Takeaway

증거의 신뢰성은 증명을 생성한 시스템의 무결성이 아니라 독립적 제3자 시스템에 의존해야 확보된다.


Python 패키지 빌드 파이프라인에서 Umarise SDK를 사용하여 산출물 SHA-256 해시를 Bitcoin 블록체인에 고정하면 패키지 변조 여부를 언제든 제3자가 독립적으로 검증할 수 있다

원문 읽기