FIX CARD
PRODUCT Milvus
SEVERITY HIGH
Milvus gRPC data plane (:19530) accepts connections
Why it matters
The port where your vectors actually live — Milvus's gRPC data plane on :19530 — accepts connections from the internet, and the same host was confirmed to be Milvus. This was measured by a zero-byte TCP connect, so it proves reachability, not that your data is readable: whether gRPC auth or TLS stands behind the open port was not tested. But Milvus has no authentication unless you enabled it, so an open :19530 usually means every embedding readable and writable, including stores that may hold agent memory (OWASP ASI06) — treat it as exposed until proven otherwise.
Fix it — 3 steps
- Take the data plane off the internet: bind :19530 to the cluster/VPC only or block it at the firewall — e.g.
sudo ufw deny 19530. This is the gRPC port, not the HTTP :9091 one. - Enable authentication so an open port is not an open database: set
common.security.authorizationEnabled: truein the Milvus config (ormilvus.authenticationEnabledin the Helm values) and restart. - If clients cross untrusted networks, enable TLS on the gRPC listener (
common.security.tlsMode: 2) — credentials otherwise travel in the clear.
Verify it’s fixed
nc -z -w 3 YOUR_SERVER_IP 19530 # should time out or refuse, not print succeeded/open
References
- https://milvus.io/docs/authenticate.md
- https://milvus.io/docs/configure_security.md
- https://genai.owasp.org/2025/12/09/owasp-top-10-for-agentic-applications-the-benchmark-for-agentic-security-in-the-age-of-autonomous-ai/
Not sure if your stack is exposed?
Run the free check — usually under a minute, safe read-only probes.
Scan your stack