LiteLLM 1.107.0 침해: 자격 증명 탈취 및 백도어 분석

사고 개요

2026년 10월 21일, PyPI의 LiteLLM 패키지 버전 1.107.0에서 민감한 개발자 자격 증명을 탈취하고 지속적인 원격 코드 실행(RCE) 백도어를 구축하도록 설계된 악성 코드가 발견되었습니다. 악성 파일은 빌드 과정에 주입되었으며, 이는 GitHub의 소스 코드는 깨끗하게 유지된 반면 배포된 휠(wheel) 파일에는 페이로드가 포함되어 있었음을 의미합니다. PyPI는 이후 침해된 버전을 삭제했습니다.

공격 메커니즘

이번 공격은 정교한 공급망 주입 방식을 사용했습니다. 공격자는 비공개 빌드 파이프라인에서 pyproject.toml 파일을 수정하여 최종 Python 휠 파일에 세 개의 악성 파일이 포함되도록 했습니다:

  • cook.pth 및 cook.py: 이 파일들은 자격 증명 탈취기 역할을 합니다. Python은 시작 시 .pth 파일을 자동으로 실행하기 때문에, 이 코드는 IDE, CI/CD 파이프라인, 백그라운드 작업을 포함하여 호스트의 모든 Python 프로세스에서 실행됩니다. 이 코드는 SSH 키, 클라우드 제공업체 자격 증명(AWS, Azure, GCP), 브라우저 비밀번호, LLM API 키를 수집하여 www.litellm[.]dev로 데이터를 유출합니다.
  • sitecustomize.py: 이 파일은 호스트에서 지속되는 백그라운드 데몬을 구현합니다. 이 데몬은 주기적으로 원격 GitHub 저장소에서 명령 및 제어(C2) 서버 주소를 확인하여, 공격자가 피해자의 컴퓨터에서 임의의 2단계 코드를 다운로드하고 실행할 수 있도록 합니다.

빌드 파이프라인 침해

SafeDep의 보안 분석에 따르면, 악성 휠은 공개 GitHub Action이 아닌 BerriAI의 내부 릴리스 파이프라인을 사용하여 빌드되었습니다. 공격자는 유지 관리자의 자격 증명이나 파이프라인 인프라 자체를 침해하여 cook/ 디렉토리를 주입하고 빌드 구성을 수정한 것으로 보입니다. 악성 파일이 휠 빌드 과정에서 추가되었기 때문에 배포판의 RECORD 파일에는 해당 파일들이 정상적으로 기록되어 있어, 자동화된 무결성 검사에서는 패키지가 합법적인 것처럼 보였습니다.

커뮤니티 대응 및 완화 조치

이번 사건은 LiteLLM이 올해 들어 두 번째로 겪는 공급망 침해 사례로, 프로젝트의 보안 상태와 유지 관리 관행에 대한 심각한 우려를 낳고 있습니다.

  • 즉각적인 조치: 사용자는 LiteLLM 의존성을 1.106.2 이하 버전으로 고정할 것을 권장합니다.
  • 공식 지침: LiteLLM 팀은 docs.litellm.ai/blog/security-incident-oct-21-2026에 사고 수습을 확인하는 공식 사고 보고서를 게시했습니다.
  • 개발자 여론: 커뮤니티 구성원들은 이러한 취약점이 반복되는 것에 대해 좌절감을 표하고 있습니다. 많은 이들이 새로운 패키지 버전에 대한 기본 "냉각기(cooldown)" 기간 도입 및 타사 의존성의 영향 범위를 제한하기 위한 샌드박스 도구 사용과 같은 패키지 관리 보안 강화를 요구하고 있습니다.

"공격자가 3개의 고유한 개발자 github 자격 증명을 탈취했다는 것은 다소 무섭습니다. 이는 시스템적인 문제로 보입니다. 만약 3명의 개발자가 키를 도난당했다면, 진짜 문제는 다른 곳에 있다는 것을 의미합니다. 그들은 한 명을 제외한 모든 개발자의 권한을 취소했는데, 이는 아마도 올바른 접근 방식일 것입니다. 하지만 저는 LiteLLM을 '이 버전 이전의 것'으로 고정하고 추후 공지가 있을 때까지 그대로 둘 것입니다!" — HN Commenter @threecheese

"모든 sandbox-exec이나 Lulu 규칙도 이런 종류의 공격을 막지는 못할 것입니다. 어느 순간 권한 팝업 피로가 쌓이면 우리는 마치 그것이 정상인 것처럼 아무 권한이나 허용하기 시작합니다." — HN Commenter @crossroadsguy

Sources

관련