LiteLLM 1.107.0, 자격증명 탈취·백도어 악성코드 포함돼 배포
원제 Compromised LiteLLM 1.107.0 on PyPI Installs a Credential Stealer and Backdoor
197 포인트댓글 82

Key Point
PyPI의 인기 라이브러리에서 개발자 환경의 모든 민감 정보(AWS 자격증명, SSH 키, API 토큰, 비밀번호)를 탈취하는 대규모 공급망 공격이 발생했으며, 빌드 파이프라인 손상으로 의심돼 의존성 관리의 신뢰성에 심각한 영향을 미친다.
핵심 요약
- LiteLLM 1.107.0이 PyPI에서 자격증명 탈취 악성코드와 원격코드 실행 백도어를 포함해 배포됐다.
- Linux, macOS, Windows 7개 휠의 모든 설치 파일에 cook.pth, cook.py, sitecustomize.py 3개 파일이 심어졌으며, Python 프로세스 시작 시 자동 실행되는 구조다.
- cook.py는 SSH 키, 클라우드 자격증명, CI/CD 시크릿, AI 도구 토큰, 브라우저 비밀번호, LiteLLM 프록시 데이터베이스 내 LLM 제공자 API 키를 수집해 www.litellm[.]dev로 AES-256-CBC 암호화로 전송한다.
- sitecustomize.py는 백그라운드 데몬을 시작해 1시간마다 GitHub의 domain.txt 파일에서 서버 주소를 읽고 거기서 코드를 다운로드해 실행하는 방식으로 원격 제어를 가능하게 한다.
- pyproject.toml에 추가된 'data = cook' 라인이 build 시에 cook 폴더를 wheel에 포함시켰으며, 이 라인은 공개 리포지토리의 어떤 커밋에도 존재하지 않았다.
- 릴리스 태그 v1.107.0(06:59 UTC)는 version = '1.108.0'을 가진 커밋을 가리키지만, 실제 소스 배포는 08:50 UTC의 다른 커밋 기반으로 버전과 의존성을 수정한 후 cook 폴더를 추가한 형태다.
- wheel 파일들은 정상적인 maturin 1.9.4로 빌드된 흔적을 보이며(11:20~11:37 UTC 타임스탬프), Windows 휠만 CRLF 라인엔딩이 있어 Windows 환경에서 git checkout으로 생성된 빌드 환경을 시사한다.
- PyPI에 공개 GitHub Actions 실행 기록이 없고(09:30~12:30 UTC 구간 539개 확인), 공식 출처 증명(provenance attestation)도 없어 공격자가 BerriAI 비공개 릴리스 파이프라인을 손상시키거나 유지보수자 자격증명을 탈취했을 가능성이 높다.
- letters9813 GitHub 계정(도메인 로더 사용)은 PyPI 업로드 약 2시간 후인 13:40 UTC에 삭제되었고, 백도어는 이제 서버 주소를 찾지 못한다.
- 1.106.2, 1.107.0rc1, 1.107.0rc2, litellm-proxy-extras 0.4.110, litellm-enterprise 0.1.78은 깨끗한 상태이며, PyPI는 1.107.0을 제거했다.