5월 27일에 유출된 API 키, 아무도 취소하지 않았다. 147일 후, 이 키로 주간 다운로드 23M이 발생하는 라이브러리에 자격 증명
요약
마스터 API 키가 유출된 후 취소되지 않아 공격자가 이를 이용해 자격 증명 탈취기(credential stealer)를 배포했습니다. 이 악성 코드는 라이브러리 스택에 포함되어 에이전트가 사용하는 모든 민감한 키와 클라우드 자격 증명을 목표로 합니다. 본문은 감염 여부 확인 및 즉각적인 버전 고정, 키 순환 등의 긴급 대응책을 제시합니다.
핵심 포인트
- 유출된 API 키는 반드시 취소해야 하며 방치해서는 안 됩니다.
- 라이브러리 스택의 보안에 주의하고 공급망 공격(Supply Chain Attack)에 대비하세요.
- 버전 관리는 :latest 대신 digest를 사용하여 정확히 고정(Pin)하는 것이 안전합니다.
- 감염 가능성이 있는 모든 키는 깨끗한 환경에서 순환(Rotate)시켜야 합니다.
5월 27일에 하나의 API 키가 유출되었고, 아무도 이를 취소하지 않았습니다. 그리고 147일 후, 이 키를 이용해 주간 다운로드 23M이 발생하는 라이브러리에 자격 증명 탈취기(credential stealer)를 배포했습니다.
정말…
⚠️ LiteLLM은 사용자의 에이전트와 모든 모델 제공자 사이에 위치합니다. 만약 이 스택에 포함되어 있다면, 에이전트가 사용하는 모든 키는 이곳을 통과하게 됩니다.
진행 과정:
- 5월 27일 · LiteLLM Agent Platform의 마스터 키가 공개 리포지토리에 커밋되었습니다. 취소된 적이 없습니다.
- 10월 10일 · 공격자가 이를 사용하여 조직 소유자(org owner)의 GitHub 토큰을 가져갔습니다.
- 10월 10일 + 12일 · 임시 브랜치에서 "ci: bump cache config"라는 이름의 워크플로우를 실행한 후, 해당 브랜치를 삭제했습니다. 총 20개의 비밀(secret) 이름이 표적이 되었습니다.
- 10월 21일 · v1.107.0 버전의 악성 휠 파일 7개가 배포되었습니다. PyPI에 1시간 43분 동안, Docker Hub에 2시간 33분 동안 라이브 상태였습니다.
- 공격자가 확보한 것: LLM 제공자 키, 클라우드 자격 증명(cloud creds), SSH 키, CI 비밀(CI secrets), AI 코딩 도구 설정 등입니다.
오늘 변경해야 할 사항:
- Python을 시작하지 않고 확인하세요. 감염된 박스에서 Python이 시작되면 페이로드(payload)가 재실행됩니다. site-packages 내에서 litellm-1.107.0.dist-info, cook.pth, https://t.co/Xgt4n1koUo를 찾으세요.
- 1.106.2 버전으로 고정(Pin)하세요. :latest 대신 digest로 컨테이너를 관리하세요.
- 감염되었을까요? 깨끗한 기계에서 박스가 접근할 수 있었던 모든 키를 순환(Rotate)시키세요.
- 90일이 지난 키는 폐기하세요. 해당 라인을 삭제한다고 해서 git 히스토리에서 사라지는 것은 아닙니다.
저는 이를 DL-001 Key Rot이라는, Python을 시작하지 않는 읽기 전용 감사 도구로 만들었습니다. 테스트 박스에 덫(cook.pth와 5월 27일에 커밋되었고 2일 후 삭제된 키) 두 개를 설치했습니다: 리포지토리 3개, site-packages 10개, 잠금 파일(lockfiles) 2개를 확인했습니다. 0.65초 만에 둘 다 발견할 수 있었습니다. 삭제된 키는 150일 된 것으로 돌아왔습니다.
▸ 영향을 받은 대상: LiteLLM 1.107.0 사용자 (PyPI + Docker, 10월 21일) · 심각도: 아직 CVE 없음, OSV MAL-2026-2144 · 해결책: PyPI에서 1시간 43분 만에 제거됨
AI 자동 생성 콘텐츠
본 콘텐츠는 X AI 사용법/팁의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기