섹션별 상세
공격자는 LiteLLM 메인테이너의 PyPI 계정을 탈취하여 공식 GitHub 태그에도 없는 악성 버전 1.82.7과 1.82.8을 배포했다. 1.82.7은 특정 모듈 임포트 시 실행되지만, 1.82.8은 .pth 파일을 활용해 패키지가 설치만 되어 있어도 Python 인터프리터가 시작될 때마다 페이로드가 자동 실행되는 치명적인 방식을 취했다. 이는 사용자가 코드를 실행하지 않고 pip install이나 pytest만 수행해도 시스템 정보가 유출될 수 있음을 의미한다.
악성 페이로드는 이중 Base64 인코딩으로 탐지를 회피하며 시스템 내 거의 모든 민감 정보를 수집하도록 설계되었다. 환경 변수의 모든 API 키, ~/.aws/credentials의 클라우드 권한, SSH 개인 키, Kubernetes 설정 파일, Git 및 Docker 인증 정보 등이 수집 대상에 포함되었다. 수집된 데이터는 AES-256-CBC로 암호화된 후 공격자만이 해독할 수 있는 4096비트 RSA 공개 키로 보호되어 공격자 서버로 전송되었다.
LiteLLM은 월간 9,500만 건 이상의 다운로드를 기록하며 CrewAI, DSPy, Browser-Use 등 주요 AI 프레임워크의 필수 의존성으로 자리 잡고 있어 피해 규모가 막대하다. 공격 발생 시간인 09:00~13:30 UTC 사이에 해당 프레임워크를 설치하거나 업그레이드한 사용자는 자신도 모르게 악성 코드를 내려받았을 가능성이 크다. 특히 모든 빌드에서 의존성을 새로 설치하는 CI/CD 파이프라인은 조직 전체의 관리자 권한이 유출될 수 있는 가장 위험한 타겟이 되었다.
Comet ML 팀은 사고 인지 즉시 50개 이상의 리포지토리를 전수 조사하고 감염된 CI 워크플로우를 식별하여 자격 증명을 즉시 교체했다. 조사 결과 poetry.lock이나 uv.lock과 같은 잠금 파일을 사용한 프로젝트는 PyPI의 악성 버전 배포와 무관하게 안전한 버전을 유지하여 피해를 면한 것으로 확인됐다. 이는 공급망 공격 방어를 위해 의존성 버전을 정확히 고정(Pinning)하고 잠금 파일을 사용하는 관행이 얼마나 중요한지를 입증한다.
bash
pip show litellm 2>/dev/null | grep Version현재 Python 환경에 설치된 LiteLLM 버전을 확인하여 감염 여부를 체크하는 명령어
bash
find "$HOME" -type d -name "litellm-*.dist-info" 2>/dev/null | while read dir; do
version=$(grep -m1 "^Version:" "$dir/METADATA" 2>/dev/null | awk '{print $2}')
venv=$(echo "$dir" | sed 's|/lib/python.*/site-packages/.*||')
if [ "$(printf '%s
1.82.7' "$version" | sort -V | head -1)" = "1.82.7" ]; then
echo "!! AFFECTED $version $venv"
else
echo " ok $version $venv"
fi
done시스템 내 모든 가상 환경을 검색하여 악성 LiteLLM 버전 설치 여부를 전수 조사하는 스크립트
용어 해설
- 공급망 공격(Supply Chain Attack)
- — 소프트웨어의 개발, 배포, 업데이트 과정 중 취약한 지점을 공격하여 악성 코드를 삽입하는 방식이다. 사용자가 신뢰하는 공식 채널(PyPI 등)을 통해 배포되므로 피해 범위가 매우 넓고 탐지가 어렵다.
- PTH 파일(PTH File)
- — Python의 경로 설정 파일로, site-packages 디렉토리에 위치할 경우 Python 인터프리터가 시작될 때마다 자동으로 실행된다. 공격자는 이를 악용해 명시적인 import 없이도 악성 코드를 실행시킨다.
- 전이 의존성(Transitive Dependency)
- — 프로젝트가 직접 의존하는 패키지가 내부적으로 다시 의존하고 있는 하위 패키지 관계를 의미한다. LiteLLM을 직접 설치하지 않더라도 이를 사용하는 CrewAI 등을 설치하면 자동으로 악성 버전에 노출될 수 있다.
- 자격 증명 수집(Credential Harvesting)
- — 시스템에 저장된 API 키, 클라우드 인증 토큰, SSH 키 등 민감한 인증 정보를 무단으로 긁어모으는 공격 행위이다. 탈취된 정보는 향후 인프라 침투나 데이터 유출에 악용된다.
- 잠금 파일(Lockfile)
- — 프로젝트에 설치된 모든 패키지의 정확한 버전과 해시값을 기록한 파일(poetry.lock, uv.lock 등)이다. 외부 저장소에 악성 버전이 올라오더라도 고정된 버전만 설치하도록 강제하여 공급망 공격을 방어한다.
기술
- LiteLLM
- Python
- CrewAI
- DSPy
- PyPI
- GitHub Actions
활용 사례
- LLM 추론 게이트웨이 구축
- AI 에이전트 워크플로우 자동화
- CI/CD 파이프라인 보안 강화
언급된 리소스
AI 분석 전체 내용 보기
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
원문 발행 2026. 03. 25.수집 2026. 03. 26.출처 타입 RSS
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.