쓸모 쓸모연구소 · 실전 노트
제 740 호이번 주 새 글 260 편2026 · 10 · 30
챗GPT·제미나이⁠·AI 소식
GitHub

LiteLLM 악성 버전 확인 방법, 1.107.0 대응과 PHP 패치 정리

LiteLLM 악성 버전 사고는 2026년 10월 21일 파이썬 패키지 저장소(PyPI)에 올라온 1.107.0 버전이 설치만 해도 비밀 키를 가져가도록 조작돼 있던 사건입니다. 이 글은 내 환경에 그 버전이 들어왔는지 확인하는 방법, 들어왔다면 해야 할 복구 순서, 같은 날 공개된 PHP 취약점의 고친 버전을 정리했습니다.

LiteLLM 악성 버전 확인 방법, 1.107.0 대응과 PHP 패치 정리 삽화
삽화 · 쓸모연구소

무슨 일이 있었나

LiteLLM은 OpenAI, 앤트로픽, 구글 등 여러 회사의 AI API를 한 가지 형식으로 묶어 주는 파이썬 라이브러리이자 프록시(중간 전달 서버)입니다. AI 앱 개발에 널리 쓰여서 개발 컴퓨터, CI(자동 검사 환경), 서버에 깔려 있는 경우가 많습니다.

  • 10월 21일 UTC 11시 39분(한국시간 같은 날 저녁 8시 39분) 악성 코드가 든 1.107.0이 PyPI에 올라왔습니다. 보도에 따라 PyPI에는 1시간 44분쯤, 도커 이미지에는 2시간 반쯤 올라가 있었습니다. 이후 PyPI가 격리했고 도커 이미지도 내려갔습니다.
  • 영향을 받은 것은 PyPI의 1.107.0과 도커 이미지 1.107.0입니다. latest, main-latest, main-stable 같은 태그로 이미지를 받았다면 같은 기간에 악성 이미지를 받았을 수 있습니다.
  • 안전한 마지막 버전은 1.106.2로 보도됩니다.
  • 2026년 3월에도 LiteLLM 일부 버전(1.82.7, 1.82.8)이 같은 방식으로 오염된 적이 있어 이번이 두 번째라고 보안업체 클라우드스미스는 짚었습니다.

이 글의 사실은 클라우드스미스와 더 레지스터 등 보안업체와 언론 보도를 기준으로 했습니다. 조사는 진행 중이라 세부는 바뀔 수 있으니 LiteLLM의 공식 안내도 함께 확인합니다(2026년 10월 기준).

왜 설치만 해도 위험한가

악성 버전은 파이썬 패키지에 끼워 넣은 .pth 파일을 이용합니다. .pth 파일은 파이썬이 켜질 때마다 자동으로 실행됩니다. 그래서 LiteLLM을 불러오지(import) 않아도 그 환경에서 파이썬이 한 번만 실행되면 코드가 돌아갑니다.

보고된 동작은 이렇습니다.

  • 설치된 파일: cook.pth, cook.py, sitecustomize.py
  • 가져가는 정보: 클라우드 키(AWS, 구글 클라우드, 애저), SSH 키와 GPG 키, 환경 변수에 든 AI 서비스 API 키, 브라우저에 저장된 로그인 정보와 쿠키, 셸 기록
  • 원격 접속 도구가 함께 깔려 한 시간 간격으로 공격자의 명령을 받아 오는 것으로 보도됐습니다. 이 부분은 보도마다 설명이 다릅니다.

공격자는 LiteLLM의 배포 과정을 장악한 것으로 보도됩니다. 개발자 계정의 깃허브 로그인 토큰을 가져가서 배포 설정을 바꾸고 정상 저장소와 이름이 비슷한 가짜 저장소에서 빌드하게 했다는 설명입니다. 회사는 침투 경로를 조사 중입니다. 사용자가 할 수 있는 일은 확인과 복구입니다.

내 환경에 깔려 있는지 확인하기

  1. LiteLLM을 쓸 수 있는 파이썬 환경마다 아래 명령을 실행합니다. 가상 환경, conda, 도커 컨테이너, CI 서버, 개발 서버마다 따로 확인해야 합니다.
명령어
pip show litellm

출력의 Version: 줄을 읽습니다. 설치돼 있지 않으면 설치 안 됨이 나옵니다. 모든 설치 목록에서 찾으려면 아래 명령도 씁니다.

명령어
pip freeze | grep -i litellm
  1. 프로젝트의 requirements.txt, poetry.lock, Pipfile.lock, pyproject.toml에서 1.107.0을 검색합니다. 버전을 고정하지 않고 litellm만 적어 뒀다면 10월 21일 같은 날에 설치나 빌드가 있었는지가 기준입니다.
  2. 도커를 쓴다면 10월 21일 이후 1.107.0이나 latest, main-latest, main-stable 태그로 이미지를 받았거나 컨테이너를 새로 만든 적이 있는지 봅니다.
  3. 1.107.0이 깔렸거나 한 번이라도 깔렸을 가능성이 있다면 흔적을 찾아봅니다. 맥과 리눅스 기준입니다.
명령어
ls /tmp/.pc_once_* /tmp/remote_code_loader.lock
find / -name "cook.pth" 2>/dev/null

/tmp/.pc_once_* 파일이 있으면 정보 유출이 이미 실행된 흔적이고, /tmp/remote_code_loader.lock이 있으면 원격 접속 부분이 돌았거나 돌고 있다는 뜻으로 보도됐습니다. 흔적이 안 보여도 안전하다는 보장은 아닙니다. 1.107.0이 실제로 깔렸다면 흔적과 관계없이 아래 복구를 합니다.

깔렸다면 복구하기

LiteLLM 쪽 안내의 요지는 "업데이트로 끝나지 않는다"입니다. 패키지를 지워도 이미 복사된 키는 되돌려지지 않습니다.

  1. 해당 컴퓨터나 서버를 네트워크에서 분리하거나, 적어도 새 작업을 올리지 않습니다.
  2. 새 가상 환경을 만들고 안전한 버전으로 고정해 설치합니다.
명령어
python -m venv .venv-new
source .venv-new/bin/activate
pip install "litellm==1.106.2"
  1. 도커를 쓴다면 이미지를 지우고 새로 받습니다. latest 태그 대신 안전한 버전의 태그를 명시합니다. 태그 이름은 공식 저장소의 태그 목록에서 확인합니다.
  2. 그 컴퓨터가 접근할 수 있었던 키를 전부 바꿉니다. 키를 바꾸는 작업은 감염되지 않은 다른 기기에서 합니다. 목록은 이렇습니다.
    • AWS, 구글 클라우드, 애저 같은 클라우드 키와 토큰
    • SSH 키와 GPG 키
    • OpenAI, 앤트로픽 등 AI 서비스 API 키와 환경 변수에 있던 모든 비밀 값
    • 깃허브 같은 코드 저장소의 토큰
    • 데이터베이스 비밀번호
    • 브라우저에 로그인해 둔 계정의 비밀번호와 로그인 세션
    • .claude, .cursor 같은 AI 도구 설정 폴더 안의 키
  3. 키를 바꾼 뒤 클라우드와 AI 서비스의 사용 기록에서 알 수 없는 호출이나 새로 만들어진 키가 있는지 봅니다.
  4. 해당하는 사람만 합니다. 프록시 뒤에서 클로드 코드 같은 도구를 쓰면서 요청과 응답 본문을 로그로 남기고 있다면, 로그에 토큰 같은 민감한 값이 찍히지 않았는지 확인합니다. 로그에 찍힌 값도 바꿔야 할 키에 포함됩니다.

회사 서버라면 혼자 처리하지 말고 보안 담당자에게 바로 알립니다.

같은 날 공개된 PHP 취약점: 고친 버전으로 올리기

PHP 프로젝트는 2026년 10월 21일 로그인 없이 원격으로 코드를 실행할 수 있는 취약점 두 건(CVE-2026-109618, CVE-2026-109619)의 수정판을 냈습니다. 위험도(CVSS 4.0)는 두 건 모두 10점 만점에 9.2점입니다. 첫 번째는 메모리가 부족할 때 요청 데이터가 반쯤 초기화된 채 처리되는 문제이고, 두 번째는 해제된 메모리 상태가 다음 요청에 남는 문제입니다. 워드프레스를 포함해 PHP로 도는 웹사이트가 대상이고, PHP-FPM, mod_php, php-cgi, FrankenPHP, LiteSpeed 등 웹 요청을 받는 구성이 모두 해당합니다. 그중 아파치 mod_php가 가장 위험하다고 PHP 프로젝트는 설명합니다.

고친 버전은 아래와 같습니다.

쓰는 줄 고친 버전
8.5 8.5.12
8.4 8.4.27
8.3 8.3.36
8.2 8.2.35

8.1 이하는 PHP 프로젝트의 정식 업데이트가 없습니다. 사용 중인 리눅스 배포판이나 장기 지원 업체가 낸 패치를 확인하거나, 지원되는 위 버전으로 올립니다. 7.4, 8.0, 8.1에는 직접 소스를 빌드하는 사람을 위한 최소 수정(백포트)이 따로 공개됐습니다. 8.2는 2026년 12월 31일에 지원이 끝나므로 8.2.35가 마지막 패치입니다.

  1. 서버에서 PHP 버전을 확인합니다.
명령어
php -v

주의할 점이 있습니다. 명령줄의 PHP와 웹 서버가 쓰는 PHP가 다를 수 있습니다. 웹에서 쓰는 쪽(mod_php, PHP-FPM)의 버전을 따로 확인합니다. 데비안이나 우분투 같은 배포판은 버전 번호를 그대로 두고 수정 내용만 얹어 배포하는 경우가 있어서, 위 숫자보다 낮게 보여도 패치된 상태일 수 있습니다. 배포판의 보안 추적 페이지나 패키지 변경 기록(changelog)에서 CVE 번호를 확인합니다.

  1. 서버 패키지 관리자로 업데이트합니다. 우분투 계열 예시입니다. 패키지 이름은 배포판과 설치 방식에 따라 다릅니다.
명령어
sudo apt update
sudo apt upgrade
  1. 업데이트 뒤 웹 서버나 PHP-FPM을 재시작하고 버전을 다시 확인합니다. 공유 호스팅이라면 호스팅 업체의 PHP 버전 설정에서 고친 버전으로 올리거나 업체에 문의합니다.
  2. 당장 올릴 수 없을 때를 위한 완화책이 PHP 공지에 있습니다. 예를 들어 php.ini에서 업로드 진행 정보를 끄는 설정이 있습니다. 어디까지나 임시방편이고 완전한 해결은 업데이트뿐이고 공지에 적혀 있으니, 설정을 바꾸기 전에 공지 원문의 전체 목록을 읽습니다.
프롬프트
session.upload_progress.enabled = 0

같은 주에 나온 AI 소식 두 가지

보안과 직접 관계는 없지만 그 주에 개발자가 챙길 만한 소식입니다. 수치는 모두 회사 발표나 보도에서 나온 것입니다.

  • OpenAI Decisions API 정식 출시(10월 22일 보도): 긴 답이 아니라 정해진 형식의 답 하나만 돌려주는 API입니다. 조건이 맞을 확률, 정해 준 보기 중 하나, 순서 있는 등급 점수 같은 형식입니다. 모델은 GPT-6 루나 하나이고, 입력 100만 토큰당 0.10달러, 캐시된 입력은 0.01달러이며 출력 토큰에는 요금이 붙지 않는다고 보도됐습니다(2026년 10월 기준). 요청 한 번에 질문을 400개까지 넣을 수 있습니다. OpenAI는 일반 응답 API보다 최대 열 배 빠르다고 설명하지만 이는 회사 비교입니다. 에이전트가 다음 도구를 고르거나 문의를 보낼 팀을 고르는 등 "고르기만 하는" 호출이 있다면 옮겨서 비용과 속도를 재 볼 만합니다.
  • 문샷 AI Kimi K3.1 Pro(10월 23일 공개): 100만 토큰 컨텍스트와 2~3배 빠른 하이스피드 버전이 있습니다. 터미널 작업 벤치마크 Terminal-Bench 4.0에서 65.7%로, 문샷이 같은 표에 올린 Opus 5.5의 66.4%보다 조금 낮습니다. 이 수치는 문샷 자체 발표입니다. 독립 평가 기관 Artificial Analysis의 지능 지수는 55점으로 같은 평가에서 4위였다고 보도됩니다. 가중치(모델 파일)는 11월 4일까지 공개하겠다고 했고, 아직 공개되지 않았습니다.

막힐 때

  • 버전이 1.107.0이 아니라 다른 숫자라면: 1.107.0만 악성으로 보도됐고 이전 버전은 안전하다고 알려졌습니다. 그래도 litellm을 최신으로 무심코 올리지 말고 공식 공지를 먼저 확인합니다.
  • 어느 환경에 있었는지 기억나지 않는다면: 개발 컴퓨터, CI, 서버, 도커 이미지 순으로 pip freeze를 돌려 찾습니다.
  • 8.1 이하 PHP라 올릴 고친 버전이 없다면: 배포판 업체의 패치를 확인하거나, 지원되는 PHP 버전으로 올립니다.
  • 임시 설정으로 충분한지 헷갈린다면: 아닙니다. 완전한 해결은 업데이트뿐입니다.

최종 체크리스트

  • pip show litellm으로 모든 환경의 버전을 확인했다
  • 1.107.0이 깔렸던 적이 있으면 1.106.2로 고정한 새 가상 환경, 새 도커 이미지를 만들고 키를 전부 바꿨다
  • 유출 흔적 파일(/tmp/.pc_once_*, /tmp/remote_code_loader.lock)을 확인했다
  • PHP가 고친 버전(8.5.12, 8.4.27, 8.3.36, 8.2.35) 이상이거나, 8.1 이하는 업체 패치를 확인했다
  • 웹 서버를 재시작한 뒤 웹에서 쓰는 PHP 버전을 다시 확인했다

자주 묻는 질문

LiteLLM 1.107.0이 깔렸는지 어떻게 확인하나요?

pip show litellm을 쓰는 모든 파이썬 환경에서 실행해 Version:이 1.107.0인지 봅니다. 프로젝트의 잠금 파일에서 1.107.0을 검색하고, 도커라면 10월 21일 이후 받은 이미지 태그도 확인합니다.

1.107.0을 깔았다가 지웠는데 괜찮은가요?

괜찮다고 보기 어렵습니다. 파이썬이 실행될 때마다 코드가 돌았고 이미 키가 복사됐을 수 있습니다. 그 컴퓨터가 접근할 수 있었던 키를 모두 바꾸고 새 가상 환경으로 다시 만듭니다.

최신 버전으로 업데이트하면 해결되나요?

업데이트만으로는 부족합니다. 악성 버전이 이미 가져간 키는 그대로 유효하기 때문입니다. 안전한 버전(1.106.2)으로 새 환경을 만들고 키를 교체해야 끝납니다.

PHP 취약점은 워드프레스 사이트도 해당되나요?

워드프레스는 PHP로 돌아가므로 서버의 PHP 버전이 고친 버전보다 낮으면 해당됩니다. 호스팅 업체의 PHP 버전 설정에서 고친 버전으로 올리거나 업체에 확인합니다. 워드프레스 플러그인 업데이트와는 별개입니다.

이 글의 본문은 아래 원본 유튜브 영상의 내용을 바탕으로 쓸모연구소가 다시 정리해 쓴 것입니다. 세부 내용과 최신 정보는 원본 영상과 공식 안내에서 확인해 주세요.

원본 영상 보러가기 ↗