A critical authentication bypass flaw in Milvus Proxy (CVE-2025-64513) allows attackers to bypass all security checks.
Discovered by the HelixGuard Team on November 12, 2025, this issue affects popular versions of Milvus, an open-source vector database designed for AI workloads, including generative models.
Attackers forge a user-controlled HTTP header called sourceId with a base64-encoded value of @@milvus-member@@.
This tricks the proxy into treating the request as coming from an internal trusted component, granting full administrative access without any username, password, or API key.
Milvus developers fixed the problem in a recent commit by removing this flawed trust logic. Now, every request must be properly authenticated.
Users running vulnerable setups face high risks, especially in cloud or AI environments where vector databases store sensitive embeddings.
| CVE ID | CVSS Score | Affected Versions | Impact | Exploit Prerequisites |
|---|---|---|---|---|
| CVE-2025-64513 | 9.1 (Critical) | Milvus [2.4.0, 2.4.24) Milvus [2.5.0, 2.5.21) Milvus [2.6.0, 2.6.5) | Full auth bypass, admin access, RCE potential via management APIs | Network access to Milvus Proxy (default port 19530); no privileges needed |
The vulnerability stems from weak header validation in authentication_interceptor.go.
When authentication is enabled, the proxy calls validSourceID(), which base64-decodes the sourceId header and checks it against the hardcoded constant @@milvus-member@@.
If it matches, the system skips user auth entirely and assumes an internal call.
Here’s the vulnerable code snippet:
func validSourceID(ctx context.Context, authorization []string) bool {
if len(authorization) < 1 { return false }
token := authorization[0]
sourceID, err := crypto.Base64Decode(token)
if err != nil { return false }
return sourceID == util.MemberCredID // Hardcoded: "@@milvus-member@@"
} In the auth flow:
if Params.CommonCfg.AuthorizationEnabled.GetAsBool() {
if !validSourceID(ctx, md[strings.ToLower(util.HeaderSourceID)]) {
// Fallback to username/password or API key
}
// Else: Full bypass!
} Anyone can send sourceId: <base64(“@@milvus-member@@”)> over gRPC to bypass checks.
This works on operations like ListDatabases, CheckHealth, or even collection management, enabling data exfiltration or manipulation.
To reproduce, set up a vulnerable Milvus standalone instance:
The patch at GitHub commit enforces standard auth for all requests. Update to Milvus 2.4.24+, 2.5.21+, or 2.6.5+ immediately.
Check exposures via Shodan for port 19530. No known in-the-wild exploits yet, but AI infrastructure demands quick patching.
PortSwigger has leveled up Burp Suite's scanning arsenal with the latest Active Scan++ extension, version…
Unit 42 researchers at Palo Alto Networks exposed serious flaws in the Model Context Protocol…
Polish police have arrested three Ukrainian men traveling through Europe and seized a cache of…
Google has launched its most significant Chrome update ever, embedding Gemini AI across the browser…
Attackers exploit this vulnerability through the router's web interface components, specifically "cgibin" and "hnap_main," by…
Security researchers have uncovered a severe flaw in Apache Tika, a popular open-source toolkit for…