Summary
CVE-2026-103765 is a missing-authentication vulnerability (CWE-306) in Mooncake’s HTTP metadata server, used by the mooncake-transfer-engine component to coordinate KV cache transfers between distributed LLM inference nodes. The /metadata handler accepts unauthenticated GET, PUT, and DELETE requests, letting any network-reachable attacker read, overwrite, or delete transfer engine metadata — including segment descriptors that control where KV cache payloads are sent. This can be abused to redirect live KV cache transfers (potentially containing sensitive prompt/context data) to an attacker-controlled listener, or to disrupt cluster operation. The issue is rated High/Critical severity (CVSS 8.8) and affects all versions of Mooncake through 0.3.13.post1.
Technical details
- Root cause: The HTTP metadata server (
mooncake/http_metadata_server.py, run viapython -m mooncake.http_metadata_server, default bind0.0.0.0:8080) implements GET/PUT/DELETE handlers for the/metadataendpoint with no authentication, authorization, or input validation. This server acts as the documented backend used byTransferEngine‘sHTTPStoragePlugin(src/transfer_metadata_plugin.cpp) via connection strings such ashttp://host:28080/metadata. - Trigger conditions: Any host that can reach the metadata server’s HTTP port can interact with it — no credentials, tokens, or prior session state are required.
- Attack vector: Network. An attacker sends a GET request to read a victim engine’s segment descriptor (exposing absolute buffer addresses and TCP data ports), then PUTs a modified descriptor (e.g., poisoning
tcp_data_port) to redirect that engine’s outbound KV cache transfers to an attacker-controlled listener. A duplicate-key protection onrpc_metaentries can be bypassed by issuing a DELETE followed by a PUT, allowing re-creation of metadata under attacker control. - Impact: Full confidentiality, integrity, and availability compromise of the KV cache transfer path — senders report successful transfers while data actually reaches the attacker’s listener (data exfiltration of prompts/context), cluster metadata can be deleted to break new transfers (denial of service), and unbounded PUT operations can exhaust server memory.
Affected software
- Vendor/Project: kvcache-ai / Mooncake
- Package:
mooncake-transfer-engine(PyPI) - Affected versions: All versions through 0.3.13.post1, including the current
mainbranch example server (mooncake-wheel/mooncake/http_metadata_server.py)
Severity
- CVSS v4.0: 8.8 (High) —
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:L/VA:H/SC:N/SI:N/SA:N - CVSS v3.1: 9.4 (Critical) —
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:H - No authentication (PR:N), no user interaction (UI:N), and network attack vector (AV:N) make this remotely exploitable without any prerequisites.
Mitigation and recommended actions
- Immediate: As of this writing, the maintainers have not released a patched version — treat any deployment of the HTTP metadata server as unauthenticated-by-design and monitor the upstream
kvcache-ai/Mooncakerepository (GitHub issue #4444) for a fix. - Workarounds / network mitigations:
- Do not expose the Mooncake HTTP metadata server (default port 8080, or any configured metadata port such as 28080) to untrusted networks or the public internet.
- Restrict access to the metadata server strictly to trusted hosts within the inference cluster using network segmentation, firewall rules, or a service mesh with mutual TLS.
- Where supported, replace the unauthenticated HTTP metadata backend with an authenticated alternative (e.g., etcd with access controls) for the
TransferEngine‘s metadata plugin. - Monitor metadata server logs for unexpected GET/PUT/DELETE requests on
/metadatafrom unrecognized sources, and for anomalous changes to segment descriptors (tcp_data_portvalues pointing outside the expected cluster range).

