반응형
LiteLLM 악성 패키지 유포 대응 체크리스트
개요
핵심 요약
LiteLLM의 특정 버전(1.82.7, 1.82.8)이 공식 배포 경로(PyPI)에서 악성 코드가 포함된 상태로 유포된 정황이 공유되었습니다.
해당 버전은 자격 증명(환경변수, API 키, 클라우드 키, SSH 키 등) 탈취 및 외부 전송 시도가 문제로 지적되며, 운영 환경에서는 “설치 여부 확인”과 “비밀정보 회전(rotate)”이 최우선입니다.
해당 버전은 자격 증명(환경변수, API 키, 클라우드 키, SSH 키 등) 탈취 및 외부 전송 시도가 문제로 지적되며, 운영 환경에서는 “설치 여부 확인”과 “비밀정보 회전(rotate)”이 최우선입니다.
본 문서는 “일반오류형(확장형 매뉴얼)” 흐름으로, 조직 내 서버/개발PC/CI 파이프라인에 LiteLLM이 포함되었을 가능성을 기준으로 작성했습니다. 실제 사용 시에는 “직접 설치”뿐 아니라 “간접 의존성(트랜지티브)”도 함께 보셔야 합니다. 실무 기준으로 보면, 이 유형은 패키지 교체만으로 끝나지 않고 키/토큰 교체가 동반되어야 안전합니다.
환경
- Python 패키지 설치 경로:
pip install litellm(또는 요구사항 파일/빌드 스크립트에서 설치) - 빌드/배포: CI/CD(GitHub Actions, GitLab CI, Jenkins 등)에서 패키지 설치 후 이미지 빌드
- 컨테이너: Dockerfile 내
pip install수행 또는 런타임 설치 - 간접 의존성: 에이전트/오케스트레이션 도구, 플러그인/서버(MCP 등)에서 LiteLLM이 끌려올 수 있음
- 주요 보호 대상: API 키(LLM 공급자), 클라우드 키(AWS/GCP/Azure), DB 계정, SSH 키, 쿠버네티스 토큰/시크릿
증상
이상 징후(있으면 “심화 분석”으로 즉시 이동)
1) 설치/업데이트 이력에
2) 서버/개발PC에서 평소와 다른 외부 통신(특히 빌드/실행 직후) 증가
3) 갑작스러운 API 키 오남용/과금 급증, 클라우드 리소스 비정상 생성
4) CI 로그에서 “버전 고정 없이 설치”된 흔적(예:
5) 코드 변경 없이 인증 실패/권한 오류가 늘어남(키 탈취 후 공격자가 먼저 회전했을 가능성 포함)
litellm==1.82.7 또는 litellm==1.82.8 존재2) 서버/개발PC에서 평소와 다른 외부 통신(특히 빌드/실행 직후) 증가
3) 갑작스러운 API 키 오남용/과금 급증, 클라우드 리소스 비정상 생성
4) CI 로그에서 “버전 고정 없이 설치”된 흔적(예:
pip install litellm 단독)5) 코드 변경 없이 인증 실패/권한 오류가 늘어남(키 탈취 후 공격자가 먼저 회전했을 가능성 포함)
1차 점검
1) 설치 여부/버전 확인
# 서버/개발PC
pip show litellm
# 가상환경 목록이 많다면(예시)
python -c "import pkgutil; print('litellm' in [m.name for m in pkgutil.iter_modules()])"
2) 위험 버전 즉시 차단
권고 방향(조직 정책에 따라 택1)
(A) 안전 버전으로 업그레이드: LiteLLM 측 공지 기준으로
(B) 보수적 다운그레이드: 1.82.6 이하로 낮추고(조직 검증 완료 버전) 즉시 키/토큰 회전 진행
※ 운영 정책상 “상향 업데이트 승인 절차”가 오래 걸리면, 우선 (B)로 서비스 안정화 후 (A)로 이행하는 전략도 가능합니다.
v1.83.0 이상 사용(검증된 릴리스 기준)(B) 보수적 다운그레이드: 1.82.6 이하로 낮추고(조직 검증 완료 버전) 즉시 키/토큰 회전 진행
※ 운영 정책상 “상향 업데이트 승인 절차”가 오래 걸리면, 우선 (B)로 서비스 안정화 후 (A)로 이행하는 전략도 가능합니다.
# 제거 후 재설치(예시)
pip uninstall -y litellm
# 업그레이드(예시)
pip install -U "litellm>=1.83.0"
# 또는 다운그레이드(예시)
pip install -U "litellm<=1.82.6"
3) 비밀정보 회전(가장 중요)
회전 대상 체크
LLM 공급자 API 키(OpenAI/Anthropic/Google 등)
클라우드 키(AWS Access Key, GCP SA 키, Azure SP 비밀값)
Git 토큰(GitHub PAT 등), 레지스트리 토큰, CI 비밀값(Secrets/Variables)
DB 계정/비밀번호, SSH 키(배포키 포함), K8s Secret/Token
※ “패키지 제거”만 하고 키 회전을 안 하면, 이미 유출된 키로 2차 피해가 이어질 수 있습니다.
클라우드 키(AWS Access Key, GCP SA 키, Azure SP 비밀값)
Git 토큰(GitHub PAT 등), 레지스트리 토큰, CI 비밀값(Secrets/Variables)
DB 계정/비밀번호, SSH 키(배포키 포함), K8s Secret/Token
※ “패키지 제거”만 하고 키 회전을 안 하면, 이미 유출된 키로 2차 피해가 이어질 수 있습니다.
4) 영향 범위 빠른 스코프 확장
- 요구사항 파일:
requirements.txt,poetry.lock,pipfile.lock에서litellm검색 - CI 설정: 워크플로/파이프라인 YAML에서
pip install구문과 버전 고정 여부 확인 - Dockerfile: 이미지 빌드 단계에서 버전 고정 없는 설치가 있는지 확인
심화 분석
1) 설치/업데이트 타임라인 확인
포인트
LiteLLM 측 업데이트에서는 문제가 된 PyPI 버전이 짧은 시간 동안 유포되었다는 안내가 있으며,
조직 내부 로그(빌드 로그/배포 로그/패키지 캐시)를 통해 “그 시간대에 설치가 발생했는지”를 우선 확인합니다.
조직 내부 로그(빌드 로그/배포 로그/패키지 캐시)를 통해 “그 시간대에 설치가 발생했는지”를 우선 확인합니다.
2) 의심스러운 외부 통신(egress) 점검
- 방화벽/프록시/DNS 로그에서 빌드 노드·런타임 서버의 신규 도메인 접속 여부 확인
- CI 러너/빌드 서버에서 설치 직후 HTTP POST 요청 증가, 비정상적인 암호화/압축 트래픽 징후 확인
- 컨테이너 환경이라면: 빌드 단계(Builder)와 런타임 단계(Runtime) 각각 분리해서 네트워크 로그 확인
3) 파일/프로세스 흔적 점검(환경별)
운영 환경 기준으로 점검 범위 예시
(1) 해당 버전이 설치된 Python site-packages 경로 확인
(2) 실행 시점에 자동 로드되는 경로(.pth 등) 및 비정상 스크립트 생성 여부 확인
(3) 같은 호스트에서 API 키 파일(.env), SSH 키, K8s 설정(~/.kube) 접근 흔적 점검
(2) 실행 시점에 자동 로드되는 경로(.pth 등) 및 비정상 스크립트 생성 여부 확인
(3) 같은 호스트에서 API 키 파일(.env), SSH 키, K8s 설정(~/.kube) 접근 흔적 점검
4) “간접 의존성” 확인
# 현재 환경에서 의존성 트리 확인(도구에 따라 택1)
pip freeze | grep -i litellm
# pipdeptree 사용 시(설치되어 있다면)
pipdeptree | grep -i -n "litellm"
복구
1) 격리 및 교체
- 의심 호스트/러너를 네트워크 격리(가능하면 즉시)
- 위험 버전 제거 후 안전 버전으로 재배포(버전 고정 적용)
- 빌드 캐시/패키지 캐시 초기화(조직 정책에 맞춰 수행)
2) 비밀정보 회전(전면)
운영 우선순위(권장)
1) 외부 노출 시 피해가 큰 키(클라우드/결제/관리자 권한)부터 즉시 폐기/재발급
2) CI/레지스트리 토큰 교체 후 파이프라인 재서명/재배포
3) 서비스 계정/DB 계정 교체 및 접근 제어 점검
4) 교체 후 “기존 키가 더 이상 동작하지 않는지” 테스트로 확인
2) CI/레지스트리 토큰 교체 후 파이프라인 재서명/재배포
3) 서비스 계정/DB 계정 교체 및 접근 제어 점검
4) 교체 후 “기존 키가 더 이상 동작하지 않는지” 테스트로 확인
3) 침해 의심 시 대응
- 정황이 확인되면 내부 IR 절차(티켓/에스컬레이션/증적 보존) 즉시 개시
- 로그 보존(프록시/DNS/CI/서버 감사 로그) 및 포렌식용 스냅샷 확보
- 조직의 대외 신고/공유 프로세스에 따라 진행(공공/교육/기업 기준 상이)
재발 방지
1) 버전 고정과 검증을 “기본값”으로
실행 항목
요구사항 파일에 버전 고정(또는 lock 파일 운영)을 필수화
CI에서 “버전 미고정 설치”를 정책으로 차단(예:
릴리스 승인 절차에 “공급망 사고 발생 시 긴급 예외 프로세스” 포함
CI에서 “버전 미고정 설치”를 정책으로 차단(예:
pip install litellm 단독 금지)릴리스 승인 절차에 “공급망 사고 발생 시 긴급 예외 프로세스” 포함
2) 빌드/배포 단계 보안 강화
- 빌드 러너 격리(권한 최소화, 네트워크 egress 제한, 단기 토큰 사용)
- SBOM 생성 및 배포 아티팩트 서명/검증(가능한 범위부터 단계적으로)
- 의존성 다운로드를 내부 프록시/미러로 통제하고, 승인된 패키지만 통과
3) 키/토큰 운영 원칙 재정비
- 장기 고정 키 지양: 단기 토큰/워크로드 아이덴티티 우선
- 키 사용 범위 최소화(권한/리전/리소스 제한)
- 키 유출 탐지(이상 과금, 비정상 지역 접근, 대량 호출) 알림 룰 상시 운영
운영 환경에서는
“오픈소스 문제 → 패키지 교체”로 끝내기보다,
“비밀정보 회전 + egress 통제 + 의존성 통제”까지 묶어야 동일 유형의 공급망 사고에 반복 노출되지 않습니다.
“비밀정보 회전 + egress 통제 + 의존성 통제”까지 묶어야 동일 유형의 공급망 사고에 반복 노출되지 않습니다.
빠른 체크리스트
- [ ] 우리 조직에
litellm==1.82.7/1.82.8설치 이력이 있는가 - [ ] CI/CD, Dockerfile, requirements/lock 파일에 “버전 미고정 설치”가 있는가
- [ ] 해당 환경에서 사용된 API 키/클라우드 키/CI 토큰을 회전했는가
- [ ] 빌드 노드 및 런타임 서버의 egress 로그를 확인했는가
- [ ] 재발 방지로 버전 고정/정책 차단/승인 절차를 적용했는가
반응형
'IT 소식 뉴스 > CVE CODE' 카테고리의 다른 글
| CVE-2026-27944 (0) | 2026.03.10 |
|---|---|
| CVE-2025-71210·CVE-2025-71211 대응 매뉴얼 (0) | 2026.03.01 |
| 포시에스 OZ Report 보안 업데이트 권고: 영향 버전과 패치 적용 (0) | 2026.02.25 |
| 포티게이트 SSL VPN 취약점(CVE-2020-12812) 재악용 정황: 2단계 인증 우회 리스크와 점검·대응 체크리스트 (0) | 2025.12.30 |
| Net-SNMP 치명적 취약점(CVE-2025-68615) 공개: snmptrapd 버퍼 오버플로우, 즉시 업데이트가 필요한 이유 (1) | 2025.12.30 |
