LiteLLM 릴리스 파이프라인 탈취, 악성 1.107.0 배포
LiteLLM 프로젝트가 10월 21일 릴리스 파이프라인이 탈취돼 악성 코드가 심긴 1.107.0 버전이 PyPI와 공식 컨테이너 이미지로 배포됐다고 공식 보안 공지로 밝혔습니다. 프로젝트 측은 해당 버전에 자격증명을 훔치고 원격 코드 실행 도구를 내려받는 악성 바이너리가 포함돼 있었다고 설명했습니다. 공격자는 탈취한 GitHub CLI OAuth 토큰 3개로 UTC 10시 8분경 브랜치 보호를 해제한 뒤, 워크플로가 참조하는 저장소를 정상 BerriAI/litellm이 아닌 유사 이름 Berri-AI/litellm으로 바꿔 서명 인프라로 오염된 산출물을 게시했습니다.
영향 범위는 PyPI의 litellm==1.107.0 전 플랫폼 7개 wheel, 그리고 Docker Hub와 GHCR 이미지 태그 v1.107.0, latest, main-latest, main-stable입니다. 악성 wheel은 UTC 11시 39분 업로드됐고 PyPI는 13시 23분경, Docker 태그는 14시 20분경 제거됐습니다. PyPI 기준 약 2시간, Docker 기준 약 2시간 30분 동안 노출된 셈입니다. 별도 사설 레지스트리를 쓰는 엔터프라이즈 고객은 영향받지 않았습니다.
악성 코드는 .pth 파일 방식으로 동작합니다. site-packages에 심긴 cook.pth, sitecustomize.py가 인터프리터 시작 시점에 실행되므로, litellm을 직접 import하지 않아도 해당 환경에서 파이썬 프로세스가 뜰 때마다 코드가 돈다는 점이 문제입니다. 61KB 크기의 자격증명 탈취 모듈은 SSH 키, 클라우드 자격증명, 브라우저 비밀번호, CI/CD 시크릿을 수집하고, LiteLLM 프록시 DB의 LiteLLM_CredentialsTable과 LiteLLM_ProxyModelTable을 덤프해 여러 AI 공급자 키가 한꺼번에 유출될 수 있었습니다. 추가로 한 시간 주기로 GitHub 저장소에서 명령을 받아 임의 파이썬 코드를 실행하는 데몬도 포함됐습니다.
해당 버전을 설치했거나 오염된 이미지로 컨테이너를 띄운 적이 있다면 정리가 필요합니다. 복구 절차는 파이썬을 거치지 않고 셸에서 악성 시작 파일을 지우고, 악성 데몬 프로세스를 종료한 뒤, 1.106.2로 고정해 재설치하는 순서입니다.
# site-packages에서 악성 시작 파일 삭제 (파이썬 실행 없이)
find /path/to/site-packages -name 'cook.pth' -o -name 'sitecustomize.py'
rm -f /path/to/site-packages/cook.pth /path/to/site-packages/sitecustomize.py
# 안전 버전으로 고정 재설치
pip install 'litellm==1.106.2'노출됐을 가능성이 있는 자격증명은 모두 교체해야 합니다. IAM 역할, 각 공급자 API 키, DB 비밀번호, 환경 변수 시크릿이 대상입니다. 사설 레지스트리로 이미지를 재빌드하는 운영이라면 베이스 이미지 태그가 위 목록에 걸리는지 먼저 확인하는 편이 좋겠습니다.
🔗 https://docs.litellm.ai/blog/security-incident-oct-21-2026
로그인 후 답글을 남길 수 있습니다.