GitLab 취약점 연구팀이 PyPI를 통한 Python 공급망 공격을 탐지했다. 오픈소스 웜 "Shai-Hulud"를 모방한 악성 패키지 5개가 Flask·Requests·NumPy 등 인기 패키지를 타이포스쿼팅해 CI/CD 자격증명을 탈취하려 했다.
핵심 포인트- 감염 벡터: Python .pth 파일 메커니즘 활용 — import 없이도 패키지 설치 시 인터프리터 시작할 때 자동 실행됨.
- 난독화 3중 계층: ROT-N(ROT-13~25) + AES-128-GCM + 변수명 난독화, 5.2MB JavaScript 페이로드(Bun 런타임).
- 탈취 대상: GitHub Actions 토큰·AWS IAM 키·Azure 시크릿·GCP 서비스 계정·PyPI/npm 발행 토큰·Kubernetes·DB 연결 문자열 전체.
- 자가 전파: 탈취 자격증명으로 GitHub 저장소에 악성 워크플로우 주입 + 추가 패키지 배포, self-hosted 러너 권한 상향 시도.
- 타임라인: 프로브 버전 배포 후 28초 이내 탐지, 다음 날 PyPI 전체 삭제.
왜 읽나CI/CD 파이프라인 보안이나 공급망 공격 벡터를 이해하려는 DevSecOps 엔지니어에게 실제 공격 기법 분석 레퍼런스.