LiteLLM 공급망 공격: 2026 악성 코드 삽입 전면 분석 및 비상 대응 가이드

주요 내용
- 영향받는 버전: PyPI에 게시된 LiteLLM 1.82.7 및 1.82.8 버전에 악성 코드가 삽입되어 제거되었습니다. 안전한 최신 버전은 1.82.6입니다.
- 공격 메커니즘: 버전 1.82.7은
proxy_server.py에 페이로드를 숨겼습니다. 버전 1.82.8은 추가로 Python.pth파일(litellm_init.pth)을 사용했으며, 이 파일은 LiteLLM을 임포트하지 않아도 모든 Python 프로세스 시작 시 자동으로 실행됩니다. - 유출된 데이터: SSH 개인 키, AWS/GCP/Azure 자격 증명, Kubernetes 설정 및 시크릿,
.env파일, 암호화폐 지갑, 데이터베이스 비밀번호, Git 자격 증명, 셸 기록 등. - 3단계 공격: 자격 증명 수집 → Kubernetes 측면 이동(특권 Pod 생성) → 위장된 systemd 서비스(
sysmon.service)를 통한 지속성 확보. - 근본 원인: 공격자가 이전에 Trivy 보안 스캐너를 손상시켰고, LiteLLM 관리자의 PyPI 게시 권한을 획득한 후 일반 CI/CD를 우회하여 악성 패키지를 직접 업로드했습니다.
- 노출 기간: 악성 버전은 포크 폭탄 결함으로 인해 개발자 머신이 충돌하여 발견되기 전까지 단 1-2시간 동안만 활성화되었습니다.
- 영향 범위: LiteLLM은 월간 9,500만 건 이상의 다운로드를 보유하며, 많은 AI 에이전트 시스템, MCP 서버 및 LLM 오케스트레이션 프로젝트에서 간접적으로 의존하고 있습니다.
타임라인 및 공격 상세
2026년 3월 24일, 100개 이상의 LLM 제공업체를 위한 통합 API 래퍼인 인기 LiteLLM 라이브러리에 PyPI에 이상 버전이 갑자기 나타났습니다. 공격자 TeamPCP(이전에 Trivy 및 KICS 공격을 담당한 조직)는 손상된 관리자 자격 증명 또는 PyPI 토큰을 사용하여 두 가지 악성 버전을 배포했습니다.
버전 1.82.7:
litellm/proxy/proxy_server.py내부에 악성 페이로드가 숨겨져 있었습니다.- 모듈을 임포트하거나
litellm --proxy를 실행할 때만 트리거되었습니다. - 페이로드는 이중 base64 인코딩된 Python 스크립트였습니다.
버전 1.82.8 (더 파괴적):
- 추가로
litellm_init.pth파일을 배치했습니다. - Python의
site모듈은 인터프리터 시작 시.pth파일을 자동으로 실행하여 상호작용 없이 트리거할 수 있게 합니다. - 이는 패키지가 환경에 존재하는 경우, LiteLLM을 명시적으로 사용하지 않는 프로젝트조차 감염될 수 있음을 의미합니다.
악성 코드는 하이브리드 암호화(AES-256-CBC + RSA-4096)를 사용하여 가짜 도메인 models.litellm.cloud로 데이터를 유출했습니다.
악성 페이로드의 기술적 분석
분석 결과, 페이로드는 세 가지 단계로 작동했습니다:
-
자격 증명 수집 단계:
- 일반적인 경로를 재귀적으로 스캔:
~/.ssh/,~/.aws/,~/.kube/,~/.azure/,.env파일, Kubernetes 구성, Git 자격 증명 등. - 환경 변수, 메모리 내 비밀 정보, 클라우드 메타데이터 엔드포인트(IMDS), 다중 암호화폐 지갑 파일을 추출했습니다.
- 일반적인 경로를 재귀적으로 스캔:
-
측면 이동 단계 (Kubernetes 환경):
- ServiceAccount 토큰을 사용하여 클러스터 전체 비밀 정보를 읽었습니다.
- 모든 노드의
kube-system네임스페이스에 호스트 파일 시스템을 마운트하는 권한 있는alpine:latestPod를 생성했습니다.
-
지속성 단계:
- "시스템 원격 측정 서비스"(
sysmon.py+ systemd 사용자 서비스)로 위장한 백도어를 배포했습니다. checkmarx.zone과 같은 도메인에서 주기적으로 추가 페이로드를 가져왔습니다.
- "시스템 원격 측정 서비스"(
발견 계기: 악성 코드의 subprocess.Popen 호출이 .pth 메커니즘 하에서 지수 함수적 포크 폭탄을 생성해 메모리를 급속히 소진시키고 시스템을 충돌시켰습니다. 이 결함이 의도치 않게 공격을 노출시킨 것입니다.
LiteLLM이 높은 가치의 타겟이었던 이유
LiteLLM은 100개 이상의 LLM 제공자를 지원하는 유니버설 프록시로, 프로덕션 AI 에이전트 시스템, MCP 서버 및 다중 모델 라우팅에서 널리 사용됩니다. 개발자들은 종종 기본 호출을 단 한 줄의 코드로 대체하므로, 중요한 API 키가 동일한 환경에 공존하는 경우가 많습니다.
이 공급망 공격 체인은 분명했습니다: Trivy 손상 → Trivy에 의존하는 LiteLLM CI/CD → 게시 권한 유출 → PyPI에 직접적인 악성 업로드. 이는 현재의 오픈소스 생태계에서 "신뢰하되 검증하라"의 중요성을 부각시킵니다.
즉각 조치: 탐지 및 정리 단계
단계 1: 설치된 버전 확인
pip show litellm
pip list | grep litellm
버전 1.82.7 또는 1.82.8이 발견되면 즉시 제거하세요:
pip uninstall litellm -y
pip install litellm==1.82.6 --force-reinstall
단계 2: Python 캐시 및 site-packages 정리
site-packages/litellm*디렉터리와 모든.pth파일을 삭제하세요.- pip 캐시 비우기:
pip cache purge
단계 3: 모든 자격 증명 회전
- 즉시 SSH 키, 모든 클라우드 액세스 키(AWS IAM, GCP 서비스 계정, Azure AD), Kubernetes 토큰, 데이터베이스 비밀번호 및 CI/CD 비밀을 회전하세요.
- 의심스러운 액세스를 확인하기 위해 클라우드 감사 로그(CloudTrail, 감사 로그, 활동 로그)를 검토하세요.
단계 4: Kubernetes 환경에 대한 추가 점검
kube-system네임스페이스에서 의심스러운 Pod를 스캔하세요.- 노드에서
~/.config/sysmon/디렉터리 및 악성 systemd 서비스를 찾으세요. - 영향을 받은 노드를 재구성하세요(강력히 권장됨).
단계 5: 의존 프로젝트 스캔
- 모든
requirements.txt,pyproject.toml및 Docker 이미지를 감사하고, LiteLLM을==1.82.6으로 고정하세요. pip-audit또는safety와 같은 도구를 사용하여 환경을 스캔하세요.
고급 완화 및 모범 사례
- 버전 고정: 프로덕션 환경에서는 Poetry, Pipenv 또는 유사한 도구를 사용하여 LiteLLM 버전을
==1.82.6(또는 더 새로운 안전한 버전)으로 항상 고정하세요. - 공급망 스캐닝: Dependabot, Snyk, JFrog Xray 또는 Endor Labs를 통합하여 PyPI 패키지 변경 사항을 모니터링하세요.
- 최소 권한 원칙: 개발 및 프로덕션 자격 증명을 혼합하지 말고 전용 비밀 관리자(AWS Secrets Manager, HashiCorp Vault)를 사용하세요.
- 에어갭 설치: 고보안 환경의 경우, 검증된 GitHub 소스에서 빌드하고 해시를 확인하세요.
- 모니터링:
.pth파일 생성, 비정상적인 포크 동작, 의심스러운 도메인으로의 아웃바운드 연결을 감시하는 EDR 솔루션을 배포하세요.
예외 상황:
- CLI 스크립트(
install.sh)를 통한 간접 설치 역시 시스템을 노출시킵니다. - 손상된 베이스 이미지를 기반으로 한 Docker 이미지는 재빌드해야 합니다.
- 가상 환경(venv)은 격리되어 있지만 전역 Python 설치가 시스템 프로세스에 여전히 영향을 미칩니다.
결론
LiteLLM 공급망 공격은 오픈소스 생태계의 편리함이 심각한 보안 위험과 함께 온다는 것을 뚜렷이 상기시켜 줍니다. 보안 스캐너를 먼저 손상시킴으로써 공격자들은 정확한 하위 영향까지 달성했습니다.
지금 조치하세요: 모든 Python 환경에서 LiteLLM 버전을 확인하고 1.82.6으로 다운그레이드하며, 노출 가능성이 있는 모든 자격 증명을 즉시 변경하세요. 향후 사고를 방지하기 위해 엄격한 의존성 검토 절차를 수립하세요.
공식 LiteLLM GitHub 및 PyPI 공지를 통해 최신 정보를 확인하세요. 2026년 및 그 이후에도 정기적인 의존성 감사는 모든 AI 개발자에게 필수적인 역량입니다.
각성하며 공급망을 보호하세요 — 오늘부터 버전 고정으로 시작하세요.