LiteLLM 공급망 공격에 대한 분 단위 대응 기록
LiteLLM 공급망 공격에서 Claude의 지원으로 취약점을 발견·분석·보고하여 PyPI가 30분 내 패키지 격리 및 47,000명 감염 확산 방지
AI 요약
Context
PyPI 패키지 레지스트리의 악성 공급망 공격(supply chain attack)으로 인해 base64 디코딩 및 exec() 패턴의 숨겨진 악성 코드가 .pth 파일을 통해 배포되었고, 포크 폭탄(fork bomb)으로 인한 시스템 마비 없이는 탐지되지 않을 수 있었던 상황이 발생했다. 일반 개발자들도 심각한 취약점을 신속히 발견·보고할 수 있어야 하지만, 격리 및 보안팀 연락 같은 기본 절차 부재의 위험성이 드러났다.
Technical Solution
- exec(base64.b64decode(...)) 패턴으로 난독화된 악성 코드를 LLM 기반 자동 분석을 통해 즉시 탐지: Claude가 코드 흐름 분석 및 연락 경로 제시
- 의심 패키지 격리 프로세스 자동화: PyPI가 보고 후 30분 내 악성 패키지 제거
- 오픈소스 프로젝트의 취약점 공개 프로그램(vulnerability disclosure program) 정립: 비보안 전문가의 고품질 보고서도 즉시 최우선 패치 대상으로 분류 및 처리
- 실시간 보안 분석용 이벤트 스트림(firehose) 제공: GitHub, npm, PyPI 같은 패키지 레지스트리의 변경 피드를 공개해 자동 스캐너가 즉시 탐지할 수 있는 인프라 구축
- 의존성 설치 대기 시간 도입(dependency cooldown): 자동 스캐너가 .pth 파일 같은 이상 징후를 탐지할 시간 제공
Impact
- LiteLLM 패키지 감염자 47,000명 이상 대상 확산 방지
- 블로그 포스트 작성에서 PR 머지까지 3분 이내 완료
- PyPI 보고 후 30분 내 패키지 격리
Key Takeaway
PyPI에서 설치한 파일은 반드시 샌드박스 환경에서 실행해야 하며, /tmp, /var/tmp, /dev/shm에서 실행되는 코드나 exec() 패턴은 매우 의심스럽게 봐야 한다. 또한 대기업은 모든 의존성을 소스에서 직접 빌드(Google 방식) 또는 내부 미러에서만 설치하는 것이 가장 안전하고, 중소기업과 개인은 의존성 고정(pinning)과 충분한 대기 시간이 최선의 방어책이다.
실천 포인트
Python 도구 관리자는 exec(base64.b64decode(...)) 패턴이 합법적인 코드 전달 방식이지만 /tmp나 /var/tmp, /dev/shm에서 실행되는 코드는 매우 의심스럽다는 점을 인식하고, Lulu나 LittleSnitch 같은 네트워크 모니터링 도구로 이상 트래픽을 사전 차단해야 한다. 또한 PyPI의 Trusted Publishers 문서를 통해 디지털 서명 검증을 지원하는지 확인하고, 조직 수준에서는 GitHub, npm, PyPI의 실시간 이벤트 스트림(firehose)을 구독해 자동 스캐너가 악성 패키지를 즉시 탐지하도록 구축하는 것이 권장된다.