Case · DiggingBeagle record

MCP filesystem read validation was vulnerable to a timed symlink swap

The filesystem MCP server checked that a requested path resolved inside an approved directory. It then opened the pathname again. That gap let a local actor replace an intermediate directory with a symlink after validation but before the read, making the server open a file outside its configured root.

Public disclosure: Nov 11, 2026

Scope

Cooperating local filesystem manipulator and a privileged MCP process; no general unauthenticated arbitrary read.

Assessment profile

Assessment method
Setting
research demonstration
Exploitation
demonstrated
Evidence
Grade B
Remediation
patch available
AI role
AGAINST AI
Basis and provenance

The upstream advisory includes a two-user Linux test retrieving a file inaccessible to the attacker. It requires a local path swapper and server identity with read access. An impact band is not assigned because the available Claims do not establish a comparable verified severity or quantified harm.

Assessed Nov 12, 2026 using diggingbeagle.assessment/1.

At a glance

Mechanism and trust boundary

  1. 01

    The privileged filesystem MCP server approves a realpath inside its allowed directory.

  2. 02

    A local actor replaces a writable parent with a symlink before a fresh open.

  3. 03

    The server can read an otherwise inaccessible outside file under the server's own identity.

Claims & evidence

CLM-R239-030-COREGHSA-p9cv-8g75-4xcg documents a read_text_file time-of-check/time-of-use path swap that retrieved a file outside allowedDirectories in a two-user Linux test.supported

Basis: reported finding

Link to claim

Implications

The observed effect is limited to the study or disclosed setting; deployment and independent impact remain unestablished.

Controls and mitigations

  • Use descriptor-anchored opens beneath approved directories, pin paths through their use, separate service identities and upgrade the filesystem server.

Unknowns and contradictions

  • Success frequency under mixed workloads and platform-specific guarantees after the 2.3.0 fix remain uncertain.

Sources and citation

Material revision history

  1. Nov 12, 2026 · Published version · first publication · revision 241