피드로 돌아가기
Malware in PyTorch Lightning: I Simulated the Same Supply Chain Attack Vector on My ML Dependencies in Production
Dev.toDev.to
Security

PyPI 의존성 해시 검증 부재로 인한 ML Supply Chain Attack 위험 분석 및 대응

Malware in PyTorch Lightning: I Simulated the Same Supply Chain Attack Vector on My ML Dependencies in Production

Juan Torchia2026년 5월 1일11intermediate

Context

PyPI 생태계의 역사적 설계 한계로 인해 npm과 달리 기본적으로 Cryptographic Verification이 제공되지 않는 구조적 취약점 존재. 특히 ML 프로젝트의 94%가 검증된 Hash 없는 Transitive Dependency를 사용하며, 이는 Typosquatting 기반의 Zero-day 공격에 무방비한 환경을 조성함.

Technical Solution

  • --require-hashes 옵션을 통한 의존성 락파일 생성으로 설치 단계에서의 무결성 검증 강제
  • pip-audit을 통한 알려진 CVE 탐지와 더불어, 알려진 Typosquatting 패턴을 대조하는 커스텀 스크립트를 CI 파이프라인에 통합
  • HuggingFace 모델의 Runtime 다운로드를 금지하고 Private Bucket 내 저장 및 trust_remote_code=False 설정과 Commit Hash 고정을 통한 임의 코드 실행 방지
  • CI 단계에서 Lockfile 미갱신 시 빌드를 실패시키는 가드레일 설계를 통해 의존성 관리 프로세스 강제
  • 데이터로 위장한 실행 코드(Pre-trained models)의 위험성을 인지하고 정적 분석 및 샌드박싱 관점의 접근 적용

- `requirements.txt` 대신 Hash가 포함된 Lockfile을 사용하고 `--require-hashes` 옵션을 적용했는가? - CI/CD 파이프라인에 `pip-audit` 및 Typosquatting 탐지 자동화 단계가 포함되어 있는가? - 외부 ML 모델 로드 시 `trust_remote_code=False` 설정 및 특정 Commit Hash를 Pinning 했는가? - 런타임에 외부 저장소에서 모델을 직접 다운로드하지 않고 내부 Private Storage를 경유하는가?

원문 읽기