GHSA-6f5r-5672-72j7 @andrea9293/mcp-documentation-server: Web UI API binds to all interfaces without authentication by default
Summary`@andrea9293/mcp-documentation-server` v1.13.0 documents that a Web UI starts automatically on port `3080`. However, the Web UI/API appears to bind to all network interfaces by default (`*:3080` / `0.0.0.0:3080`) instead of localhost-only, and its document-management API endpoints do not require authentication.As a result, any network-reachable client on the same LAN, VM network, or container bridge can access the document-admin API without credentials. In my reproduction, I was able to enumerate documents, add a document, read its full content, search across the corpus, and delete the document through the host's LAN IP.The issue is not that a Web UI exists. The issue is that a local document-management Web UI/API is exposed on all interfaces by default without authentication.DetailsThe README documents that the Web UI starts automatically and tells users to open:It also documents `START_WEB_UI=true` and `WEB_PORT=3080` as the defaults.The vulnerable behavior appears to come from starting the web server without binding it to localhost explicitly.In `src/server.ts`, the Web UI is started unless `START_WEB_UI=false`:In `src/web-server.ts`, the Express app appears to listen with only the port:With Express/Node, `app.listen(PORT)` without a host argument binds to all interfaces. In my reproduction, this resulted in:The exposed API includes document-admin operations such as:I did not send any `Authorization` header in the PoC requests, and all tested operations succeeded.PoCTested on v1.13.0.1. Build from sourceExpected version:2. Start the server with default Web UI behaviorDo not set `START_WEB_UI=false`.3. Confirm that the Web UI/API binds to all interfacesObserved:This indicates the service is not bound only to `127.0.0.1`.4. Confirm that the API is reachable through the LAN IPObserved:No authentication header was sent.5. Full unauthenticated document-admin PoCRun against localhost:Observed:Run the same PoC against the host's LAN IP:Observed:6. CleanupImpactThis is a missing-authentication and unsafe-default network exposure issue for the Web UI/API.A network-reachable attacker can access the document-management API without credentials. Depending on what the user stores in the documentation server, this may allow:reading document titles, previews, and full document contents;searching across the entire document corpus;inserting attacker-controlled documents into the corpus;deleting documents;tampering with the user's local knowledge base used by the MCP assistant.This can affect users who run the MCP server on laptops, workstations, dev VMs, or hosts connected to shared networks, VPNs, Docker bridges, or other routable local networks.This is not a claim for unauthenticated remote code execution. The issue is that the documented Web UI/API is exposed on all interfaces by default and does not require authentication for document-admin operations.A safer default would be to bind the Web UI/API to `127.0.0.1` by default, and require an explicit opt-in such as `WEB_BIND_HOST=0.0.0.0` for network exposure. If network binding is supported, an authentication token should be required for document-management endpoints.
CVSS v3.1 score: 8.8