mirror of
https://github.com/kvcache-ai/Mooncake.git
synced 2026-11-05 01:17:55 +00:00
[GH-ISSUE #4626] Security concern: 3 of 4 publicly-disclosed CVEs in Transfer Engine still unpatched in v0.3.13.post1 (handshake DoS, memory exhaustion, missing auth on /metadata) #1179
Labels
No labels
ascend
auto-closed
bug
bug
CI/Build
Common
documentation
enhancement
feature request
good first issue
help wanted
high priority
MetaX
nightly-failure
pull-request
PyTorch Backend
question
RFC
Roadmap
stale
Store
Tests
Transfer Engine
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
kvcache-ai/Mooncake#1179
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @sivabreddy on GitHub (Oct 13, 2026).
Original GitHub issue: https://github.com/kvcache-ai/Mooncake/issues/4626
We were evaluating Mooncake for a production deployment and found four publicly-disclosed
CVEs against the Transfer Engine. One is already fixed; three appear to still be open as of the
latest release, with no public acknowledgement on this repo's Security Advisories page. Raising
this directly since it changes our evaluation, and we couldn't find an existing issue tracking it.
What we checked, and how
Verified directly via the CVE records themselves (not a single secondhand source), then
cross-checked against this repo's own releases page and Security Advisories page.
published security advisories") — these four CVEs don't appear to have been disclosed through
that channel.
v0.3.13.post1(2026-08-31). Its changelog does not mention any of thefour CVEs below.
The four CVEs
ServerSession::readHeader, TCP transport data port/metadatahandlertcp_data_portto redirect KV cache transfers to a machine the attacker controls, or exhaust server memory.through 0.3.13.post1).SocketHandShakePlugin, handshake RPC portwriteFully()— breaks all subsequent handshakes, metadata fetches, notify, and probe requests for the whole process.through 0.3.13.post1).TransferMetadata::receivePeerNotifythrough 0.3.13.post1).Sources: opencve.io/CVE-2026-103760,
opencve.io/CVE-2026-103761,
opencve.io/CVE-2026-103764,
opencve.io/CVE-2026-103765,
vulncheck.com advisory for CVE-2026-103765,
Mend.io CVE-2026-103764.
Why this matters
All three still-open issues require only unauthenticated network access to the handshake RPC
port or the HTTP metadata port — no credentials, no prior foothold beyond network reachability.
In a shared Kubernetes cluster, that means any other workload on the same network segment (not
just a deliberate external attacker) could, in principle, knock the whole Transfer Engine
offline (CVE-2026-103760, -103761) or silently redirect its cache traffic to an unintended
destination (CVE-2026-103765).
What we're asking
though nothing is visible on the public Security Advisories page.
a recommended minimum version once the other three are fixed.
Happy to provide more detail if useful.
@github-actions[bot] commented on GitHub (Oct 13, 2026):
Thanks for opening this issue, @sivabreddy!
113816799A maintainer will triage this when possible. To help us respond faster, please include:
Useful links: Documentation · Contributing guide
@he-yufeng commented on GitHub (Oct 14, 2026):
Thanks for the careful write-up, and for cross-checking the CVE records against our release page directly. Maintainer answer with commit-level pointers, in your table's order:
CVE-2026-103764 (crafted header → arbitrary memory read/write): confirmed fixed, your reading is correct. The server session validates the remote-supplied address and size against registered buffers before touching them (
validate_addr_). In the 0.3.12 line that check lives intcp_transport.cpp; after #2974 it moved intotcp_transport_session_impl.h. Present in v0.3.12.post1 and everything since, including v0.3.13.post1.CVE-2026-103765 (no auth on the HTTP metadata server): fix in review, not yet merged. #4472 adds optional bearer auth plus request/store bounds to the
/metadataserver. It is going through review right now, so no release carries it yet.CVE-2026-103760 (stalled peer wedges the handshake listener): fixed on main, not yet released. #4451 puts
SO_SNDTIMEOon accepted handshake sockets sowriteFully()can no longer spin forever against a peer that never reads (commit66bf7412, merged 2026-10-12).CVE-2026-103761 (notify flood → OOM): fixed on main, not yet released. #4453 bounds the pending-notify queue that
receivePeerNotifyappends to (commit38ee4194, merged 2026-10-10).One nuance that matters for your evaluation: v0.3.14-rc1 (cut 2026-09-07) predates all three of these fixes, so the rc is not covered either. The first tag that will carry them is the v0.3.14 stable release.
To your three questions:
Housekeeping on our side: the Security Advisories page is empty because nobody ever published GHSAs for these. I will propose to the other maintainers that we publish advisories when the v0.3.14 release carrying the fixes goes out, so the public record lines up with the CVE entries. @stmatengss for visibility on the release and advisory sequencing.