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

2026년 3월, LiteLLM 버전 1.82.7과 1.82.8이 PyPI를 통해 악성 코드로 침해되었습니다. 이 심층 가이드는 공격 내용, 유출된 데이터, 즉시 점검, 정화 및 자격 증명 갱신의 정확한 단계를 설명합니다.

Canonical URL: https://a2a-mcp.org/blog/litellm-supply-chain-attack-2026-ko

Language: ko

Published: 2026-03-25

Updated: 2026-03-25

## 주요 내용

- **영향받는 버전**: 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`로 데이터를 유출했습니다.

## 악성 페이로드의 기술적 분석

분석 결과, 페이로드는 세 가지 단계로 작동했습니다:

1. **자격 증명 수집 단계**:
   - 일반적인 경로를 재귀적으로 스캔: `~/.ssh/`, `~/.aws/`, `~/.kube/`, `~/.azure/`, `.env` 파일, Kubernetes 구성, Git 자격 증명 등.
   - 환경 변수, 메모리 내 비밀 정보, 클라우드 메타데이터 엔드포인트(IMDS), 다중 암호화폐 지갑 파일을 추출했습니다.

2. **측면 이동 단계** (Kubernetes 환경):
   - ServiceAccount 토큰을 사용하여 클러스터 전체 비밀 정보를 읽었습니다.
   - 모든 노드의 `kube-system` 네임스페이스에 호스트 파일 시스템을 마운트하는 권한 있는 `alpine:latest` Pod를 생성했습니다.

3. **지속성 단계**:
   - "시스템 원격 측정 서비스"(`sysmon.py` + systemd 사용자 서비스)로 위장한 백도어를 배포했습니다.
   - `checkmarx.zone`과 같은 도메인에서 주기적으로 추가 페이로드를 가져왔습니다.

**발견 계기**: 악성 코드의 `subprocess.Popen` 호출이 `.pth` 메커니즘 하에서 지수 함수적 포크 폭탄을 생성해 메모리를 급속히 소진시키고 시스템을 충돌시켰습니다. 이 결함이 의도치 않게 공격을 노출시킨 것입니다.

## LiteLLM이 높은 가치의 타겟이었던 이유

LiteLLM은 100개 이상의 LLM 제공자를 지원하는 유니버설 프록시로, 프로덕션 AI 에이전트 시스템, MCP 서버 및 다중 모델 라우팅에서 널리 사용됩니다. 개발자들은 종종 기본 호출을 단 한 줄의 코드로 대체하므로, 중요한 API 키가 동일한 환경에 공존하는 경우가 많습니다.

이 공급망 공격 체인은 분명했습니다: **Trivy 손상 → Trivy에 의존하는 LiteLLM CI/CD → 게시 권한 유출 → PyPI에 직접적인 악성 업로드**. 이는 현재의 오픈소스 생태계에서 "신뢰하되 검증하라"의 중요성을 부각시킵니다.

## 즉각 조치: 탐지 및 정리 단계

**단계 1: 설치된 버전 확인**
```bash
pip show litellm
pip list | grep litellm
```

버전 1.82.7 또는 1.82.8이 발견되면 즉시 제거하세요:
```bash
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: 모든 자격 증명 회전**
1. **즉시** SSH 키, 모든 클라우드 액세스 키(AWS IAM, GCP 서비스 계정, Azure AD), Kubernetes 토큰, 데이터베이스 비밀번호 및 CI/CD 비밀을 회전하세요.
2. 의심스러운 액세스를 확인하기 위해 클라우드 감사 로그(CloudTrail, 감사 로그, 활동 로그)를 검토하세요.

**단계 4: Kubernetes 환경에 대한 추가 점검**
1. `kube-system` 네임스페이스에서 의심스러운 Pod를 스캔하세요.
2. 노드에서 `~/.config/sysmon/` 디렉터리 및 악성 systemd 서비스를 찾으세요.
3. 영향을 받은 노드를 재구성하세요(강력히 권장됨).

**단계 5: 의존 프로젝트 스캔**
1. 모든 `requirements.txt`, `pyproject.toml` 및 Docker 이미지를 감사하고, LiteLLM을 `==1.82.6`으로 고정하세요.
2. `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 개발자에게 필수적인 역량입니다.

각성하며 공급망을 보호하세요 — 오늘부터 버전 고정으로 시작하세요.
