LiteLLM 1.82.8 파이썬 패키지 공급망 공격 당함 — SSH키, AWS 크레덴셜 전부 털림
요약
기사 전체 정리
- litellm==1.82.8 PyPI 패키지에 악성 `.pth` 파일(`litellm_init.pth`) 포함 확인
- `import litellm` 없어도 파이썬 시작할 때마다 자동 실행되는 구조 (`.pth` 파일 특성 악용)
- SSH 키, 환경변수(API 키 포함), AWS/GCP/Azure 크레덴셜, 쿠버네티스 시크릿, 암호화폐 지갑까지 전방위 수집
- 수집한 데이터는 AES-256 + RSA-4096으로 암호화 후 `https://models.litellm.cloud/` (공식 도메인 아님)으로 전송
- 로컬 개발 환경, CI/CD 파이프라인, 도커 컨테이너, 프로덕션 서버 모두 영향
상세 내용
뭐가 문제임?
공급망 공격(Supply Chain Attack)으로, PyPI에 올라간 `litellm==1.82.8` 휠 패키지 안에 악성 파일 `litellm_init.pth` (34,628 bytes)가 포함됨. 이 파일은 패키지 자체 RECORD에도 버젓이 등록되어 있음 ㄷㄷ.
`.pth` 파일은 파이썬 인터프리터가 시작될 때 `site-packages/` 폴더에서 자동으로 실행되는 특성이 있어서, `import litellm` 한 줄도 없어도 그냥 실행됨. 설치만 해도 당하는 구조.
악성 페이로드 동작 방식
페이로드는 이중 base64 인코딩으로 숨겨져 있어서 단순 grep으로는 탐지 안 됨.
Stage 1 — 정보 수집 (진짜 무섭게 다 털어감)
- 시스템 정보: hostname, whoami, uname -a, ip addr, ip route
- 환경변수 전체: `printenv` 실행 → API 키, 시크릿, 토큰 싹 다
- SSH 키: `id_rsa`, `id_ed25519`, `authorized_keys`, `known_hosts`, `config` 등
- Git 크레덴셜: `~/.gitconfig`, `~/.git-credentials`
- AWS 크레덴셜: `~/.aws/credentials`, `~/.aws/config`, IMDS 토큰 + 보안 자격증명
- 쿠버네티스 시크릿: `~/.kube/config`, 각종 conf 파일, 서비스 어카운트 토큰
- GCP/Azure 크레덴셜: gcloud 기본 크레덴셜, `~/.azure/` 전체
- 도커 설정: `~/.docker/config.json`, kaniko 설정 포함
- 패키지 매니저 설정: `.npmrc`, `.netrc`, `.pgpass`, `.my.cnf`, `.mongorc.js` 등
- 셸 히스토리: bash, zsh, mysql, psql, redis 히스토리
- 암호화폐 지갑: 비트코인, 이더리움, 솔라나, 카르다노 등 주요 코인 지갑 전부
- SSL/TLS 프라이빗 키: Let's Encrypt `.pem`, `.key` 파일
- CI/CD 시크릿: `terraform.tfvars`, `.gitlab-ci.yml`, `Jenkinsfile`, `.travis.yml` 등
- DB 크레덴셜: PostgreSQL, MySQL, Redis, LDAP 설정
- 웹훅 URL: Slack/Discord 웹훅 URL grep
Stage 2 — 암호화 및 외부 전송
수집된 데이터를 임시 파일에 저장한 뒤:
1. `openssl rand`로 32바이트 AES-256 세션 키 생성
2. 데이터를 `openssl enc -aes-256-cbc -pbkdf2`로 암호화
3. 세션 키를 하드코딩된 4096-bit RSA 공개키로 암호화 (OAEP 패딩)
4. 두 파일을 `tpcp.tar.gz`로 패킹
5. `https://models.litellm.cloud/`로 전송 (공식 도메인 `litellm.ai`가 아님 — 주의)
영향 범위
`litellm==1.82.8`을 설치한 모든 환경 해당:
- 로컬 개발 머신
- CI/CD 파이프라인
- 도커 컨테이너
- 프로덕션 서버
다른 버전도 아직 확인 안 됨 → 공격자가 여러 버전을 건드렸을 가능성 있음.
지금 당장 해야 할 것
1. `site-packages/` 디렉토리에서 `litellm_init.pth` 파일 확인 및 삭제
2. `litellm==1.82.8`이 설치된 적 있는 모든 시스템에서 크레덴셜 전부 교체 (환경변수, SSH 키, 클라우드 크레덴셜 포함)
3. PyPI에서 해당 버전 즉시 yanked 처리 요청
4. BerriAI는 PyPI 퍼블리싱 크레덴셜 및 CI/CD 파이프라인 전체 감사 필요
핵심 포인트
인사이트
관련 기사
Cloudflare flags archive.today as "C&C/Botnet"; no longer resolves via 1.1.1.2
GrapheneOS will remain usable by anyone without requiring personal information
France's aircraft carrier located in real time by Le Monde through fitness app
구글, 비인증 앱 사이드로딩에 24시간 대기 시간 도입한다
댓글
댓글
댓글을 불러오는 중...