Most recent
navigate open esc close Corpus index built 2026-06-07 23:58 UTC

← All research

Survey May 9, 2026

Milvus/Attu on Public Cloud: Auth Posture and Multi-Tenant SaaS Exposure Survey

NuClide Research · 2026-05-09


Summary

Shodan pull of http.title:"Attu" "Milvus" → 1,389 unique IPs → asyncio probe of Attu port 3000 + Milvus REST port 19530 → 763 confirmed reachable instances. Of these, 303 have the Attu admin UI open (full read/write GUI access), 593 have Milvus REST unauthenticated, and 330 contain populated collections. RBAC is opt-in in Milvus, disabled by default. The pattern mirrors Qdrant, Weaviate, and ChromaDB: the auth-off default ships and operators rarely change it.

DCWF KSAT coverage

Auto-derived from DCWF AI work-role rule files (ksat-tag).

  • 672 (AI Test & Evaluation Specialist): K7003, K7044, S7068, T5904
  • 733 (AI Risk & Ethics Specialist): K7040, K7051, T5854, T5868, T5893
  • overlap (Common AI KSATs (all 5 roles)): K1158, K22, K6311, K6935, K7003, K7051

The standout finding class is again the enterprise multi-tenant SaaS pattern: AI platforms built on top of Milvus expose their entire client portfolio as enumerable collections without access controls. A RAGFlow deployment (1,224 collections, Attu open) and an Indian chatbot SaaS (704 collections, 194 distinct tenants) represent the highest-volume confirmed exposures.


Methodology

shodan download --limit 1500 attu-milvus.json.gz 'http.title:"Attu" "Milvus"'
  → 1,389 unique IPs

attu-probe.py (asyncio, 80 concurrent)
  GET  http://{ip}:3000          → confirm Attu UI (HTTP 200/3xx)
  POST http://{ip}:19530/v2/vectordb/collections/list  body {"dbName":"default"}
       match {"code":0, "data":[...]} → unauthenticated Milvus REST
  GET  http://{ip}:9091/healthz  → Milvus metrics/health fallback
  → 763 confirmed (probe time: ~30 seconds)

Findings Summary

MetricValue
Shodan hits (http.title:"Attu" "Milvus")1,418 (1,389 downloadable)
Confirmed reachable763
Attu UI open (:3000)303
Milvus REST unauthenticated (:19530)593
Populated (≥1 collection)330

Notable Findings

F1: RAGFlow deployment (HIGH)

Host: 183.6.121.94 (ChinaTelecom BACKBONE AS4134, Shenzhen CN)
Severity: HIGH. 1,224 unauthenticated Milvus collections, Attu admin UI open on port 3000

Collection naming pattern matches RAGFlow’s internal schema: _{numeric_id}_{chunk_collection|file_info_collection|structure_info_collection|knowledge_triple|file_link}. RAGFlow creates this 4–5 collection set per knowledge base. Approximately 245–305 distinct knowledge bases are present given the collection count and naming pattern.

RAGFlow is an open-source RAG engine (GitHub: infiniflow/ragflow) that uses Milvus as its vector backend and Elasticsearch for full-text search. When Milvus’s RBAC is off (default), every knowledge base’s chunks, file metadata, structure info, and knowledge-graph triples are directly accessible.

Attu access (port 3000): The Attu admin GUI is publicly reachable. Attu provides a full React frontend for Milvus administration: collection creation/deletion, data browse, vector search, index management. A reachable Attu is equivalent to a reachable database with no auth. Full read/write/delete.

Reproduction:

curl -X POST http://183.6.121.94:19530/v2/vectordb/collections/list \
  -H "Content-Type: application/json" -d '{"dbName":"default"}'
# Returns {"code":0,"data":["_485_file_info_collection","_496_chunk_collection",...1224 total]}

Disclosure status: Not yet disclosed. ChinaTelecom hosting. Direct operator not identified from exposed surface. Disclosure would route via CNCERT/CC (cncert@cert.org.cn) if operator not found.


F2: Indian chatbot SaaS platform (HIGH)

Host: 103.180.31.18 (Silver Touch Technologies Limited AS149275, Ahmedabad IN)
Severity: HIGH. 704 collections, 194 distinct chatbot tenant IDs (range 0–1130), Attu UI and Milvus REST both open

Collection naming: chatbot_{id}, chatbot_{id}_title, chatbot_{id}_faqs, chatbot_{id}_faqs_title. A 4-collection-per-tenant pattern. With 194 distinct bot IDs and gaps indicating deleted tenants, this is an active SaaS platform serving multiple clients.

Silver Touch Technologies is an Indian IT services company (Ahmedabad, Gujarat). The exposed Milvus instance appears to be the vector backend for their AI chatbot product line.

Disclosure status: Not yet disclosed. Routing via Silver Touch Technologies’ public contact surface.


F3: Chinese art museum/cultural platform (MEDIUM)

Host: 175.27.225.242 (likely Alibaba Cloud CN)
Severity: MEDIUM. 120 collections, Milvus REST open (no Attu)

Collection names: yishuguan_f1 (yishuguan = art museum), shanghai_jjt_v4_colornorm (Shanghai JJT, likely Jujintian or similar cultural org), ganhuayan (感化院 / correctional facility or rehabilitation center), zhonghe (Chinese place name). Pattern suggests a multi-institution cultural/arts content management system.


F4: Crypto trading quant data store (LOW/MEDIUM)

Host: 14.103.126.159
Severity: LOW (financial data, not personal). 26 collections, Attu open

Collection names: kline_BTCUSDT_1h_*, kline_BTCUSDT_15m_*, kline_ETHUSDT_1h_*. OHLCV kline (candlestick) data stored as vectors in Milvus. This is a quantitative trading research deployment indexing historical price data for vector similarity search (presumably for pattern matching / strategy similarity). The data is financial time-series, not personal data, but the Attu GUI exposes the operator’s proprietary trading data structure and potentially their alpha-generating signal encoding.


Auth Posture Analysis

Milvus RBAC is disabled by default. Enabling requires:

# milvus.yaml
common:
  security:
    authorizationEnabled: true

And creating a root user + per-collection grants. Without this, any connection to port 19530 (gRPC or REST) has full admin access. The Attu UI on port 3000 requires no credentials when Milvus auth is off.

gRPC blind spot persists: Milvus’s gRPC API on port 19530 (the primary production client interface) cannot be fingerprinted by Shodan banner match. GRPC uses binary HTTP/2 framing. This survey used the Milvus REST API (introduced in Milvus 2.4+) on the same port 19530, which Shodan can’t see but asyncio probes can reach. The Shodan http.title:"Attu" query finds the admin UI, not the gRPC backend. Attu is the most reliably Shodan-visible signal for Milvus exposure.


Discovery Context

Survey conducted 2026-05-09 as part of NuClide Research vector database exposure series. Shodan pull on http.title:"Attu" "Milvus" (1,418 hits, 1,389 downloadable). Asyncio probe of port 3000 (Attu) and port 19530 (Milvus REST).

Companion surveys: weaviate-cloud-survey-2026-05.md, milvus-cloud-survey-2026-05.md, milvus-tier2-cloud-survey-2026-05.md.