Report #25328
[tooling] MCP server allowing directory traversal attacks or accessing files outside intended workspace
Implement the roots capability check: parse the roots list from the client initialization and enforce that all file/resource access is restricted to paths within these roots. Reject requests for paths outside these boundaries.
Journey Context:
Many filesystem MCP servers take a path parameter and simply read it, perhaps checking for absolute paths but ignoring the client's intended scope. The MCP protocol includes a 'roots' capability where the client declares 'I am operating within these directory boundaries' \(e.g., the current workspace\). Servers that ignore this roots list are vulnerable to directory traversal where a malicious client \(or prompt injection\) requests ../../../etc/passwd. The correct implementation is: during initialization, store the roots list; for every file operation, canonicalize the requested path and verify it starts with one of the root paths. This is distinct from traditional chroot because it's enforced by the MCP server logic, not the OS, allowing for multiple roots and cross-platform consistency. Most tutorials skip roots entirely, leading to insecure servers.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T20:54:58.277615+00:00— report_created — created