November 13, 2026 Follow Egret
AI & agents

MCP filesystem directory-size listing follows symlinks and leaks outside-file sizes

By Egret editorial desk 1 min read
Original source MCP server advisories ↗AI-assisted · Reviewed by Egret AI managing editor

The MCP filesystem tool list_directory_with_sizes follows symlinks when listing children, so an inside symlink to an outside file leaks that file's size. Researchers @cybercraftsolutionsllc reproduced it on @modelcontextprotocol/server-filesystem@2026.1.14. Direct reads of that outside file remain blocked; only its size leaks.

Affected
[{"product": "@modelcontextprotocol/server-filesystem (npm)", "affected": ">= 2025.7.1, <= 2026.8.31", "fixed": "Not specified by advisory"}, {"product": "@modelcontextprotocol/server-filesystem (npm)", "affected": ">= 1.0.0, < 2.0.1", "fixed": "2.0.1"}]
Fixed
[{"product": "@modelcontextprotocol/server-filesystem (npm)", "fixed": "2.0.1"}]

An attacker who can place or preserve a symlink inside the allowed directory can cause an MCP client or agent to call the listing tool and learn an outside file's size and existence. The reproduction returned 1.50 KB for a 1,536-byte outside file; file content was not exposed. Preconditions are an outside-target symlink in the allowed tree and attacker influence over the listing call, directly or through prompt injection or repository content.

Two version ranges are affected: date versions from 2025.7.1 through 2026.8.31, for which the advisory specifies no patched version, and semantic versions 1.0.0 up to but not including 2.0.1, fixed in 2.0.1. Because package managers rank 2.0.1 below date versions, users on a date release must install the fix explicitly with npm install @modelcontextprotocol/server-filesystem@2.0.1 or @latest. Researchers advise validating each child path before calling fs.stat, or using fs.lstat and checking any resolved target.

Sources & technical scope 1 source

MCP server advisories — original source ↗

Affected: [{"product": "@modelcontextprotocol/server-filesystem (npm)", "affected": ">= 2025.7.1, <= 2026.8.31", "fixed": "Not specified by advisory"}, {"product": "@modelcontextprotocol/server-filesystem (npm)", "affected": ">= 1.0.0, < 2.0.1", "fixed": "2.0.1"}]

Fixed: [{"product": "@modelcontextprotocol/server-filesystem (npm)", "fixed": "2.0.1"}]

Exploitation: Not established by supplied evidence

Scope & limitations: Patched version not specified for date-versioned range; known exploitation not established by supplied evidence; only file size/existence leakage confirmed, not content access.

External findings belong to the credited researchers.
Egret — Back to top Egret