CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-55609

CVE-2026-55609: Arbitrary File Read and Write via Model Context Protocol (MCP) Tools in sublinear-time-solver and consciousness-explorer

Alon Barad
Alon Barad
Software Engineer

Aug 26, 2026·5 min read·15 visits

Executive Summary (TL;DR)

A path traversal vulnerability in sublinear-time-solver and consciousness-explorer allows local attackers to perform arbitrary file reads and writes via unvalidated MCP tool parameters.

An arbitrary file read and write vulnerability exists in the Model Context Protocol (MCP) server endpoints of sublinear-time-solver and consciousness-explorer. By providing unvalidated file paths to the export_state, import_state, saveVectorToFile, and loadVectorFromFile tools, local attackers can read or overwrite sensitive host files.

Vulnerability Overview

The Model Context Protocol (MCP) server implementations in sublinear-time-solver (specifically version 1.5.0) and its companion library consciousness-explorer (specifically version 1.1.1) expose operational endpoints designed to facilitate state and vector calculations. These endpoints are accessible as specialized tools named export_state, import_state, saveVectorToFile, and loadVectorFromFile.

These components accept user-provided path parameters without enforcing structural directory restrictions. Consequently, the exposed attack surface allows any user or local process capable of communicating with the MCP interface to interact directly with filesystem components under the privileges of the running application process.

This vulnerability is classified under CWE-73 (External Control of File Name or Path). The lack of absolute restriction and path validation permits attackers to perform read and write operations, leading to complete compromise of integrity and confidentiality on the local filesystem.

Root Cause Analysis

The root cause of this vulnerability lies in the direct transmission of user-controlled input paths to low-level filesystem interfaces. In consciousness-explorer (<= 1.1.1), the export_state and import_state tools expose an execution parameter named filepath. This string variable is handled directly by the system APIs without sanitization.

When a request is submitted, the code resolves the input path using standard filesystem utilities and executes direct IO actions such as fs.writeFileSync(filepath, JSON.stringify(state)). Because these tools do not perform bounds checking or relative path normalization, an attacker can input parent directory patterns (../) or absolute path structures to navigate beyond the workspace scope.

Similarly, in sublinear-time-solver (<= 1.5.0), the tools saveVectorToFile and loadVectorFromFile dynamically resolve path parameters using path.resolve(filePath). The program then invokes recursive folder creation followed by file reads or writes. If an attacker directs this path to systemic configurations, files will be read or overwritten silently.

Code Analysis

In the vulnerable version of consciousness-explorer (src/consciousness-explorer/index.js), the state-saving logic relies entirely on the client's input validation:

// Vulnerable Implementation
async exportState(filepath) {
    const fs = await import('fs');
    fs.writeFileSync(filepath, JSON.stringify(state, null, 2));
    return state;
}

The corresponding patch addresses this deficiency by creating a dedicated verification helper named resolveVectorPath within a newly introduced security file (safe-path.ts / safe-path.js). This module validates the structural safety of the incoming parameter before interacting with filesystem resources:

// Patched Implementation (safe-path.ts)
export function resolveVectorPath(
  filename: unknown,
  options: { stateDir?: string } = {},
): string {
  assertSafeBasename(filename);
  const stateDir = options.stateDir ?? DEFAULT_VECTOR_DIR;
  const baseAbs = path.resolve(stateDir);
  fs.mkdirSync(baseAbs, { recursive: true, mode: 0o700 });
  const candidate = path.resolve(baseAbs, filename as string);
  const rel = path.relative(baseAbs, candidate);
  if (rel.startsWith('..') || path.isAbsolute(rel) || rel.includes(`..${path.sep}`)) {
    throw new SafePathError(`resolved path "${candidate}" escapes vector dir "${baseAbs}"`);
  }
  return candidate;
}

The remediated implementation establishes an anchor path (baseAbs) and evaluates the candidate output path relative to this anchor. The directory confinement checks guarantee that if the output attempts to escape the root directory using relative patterns, an error is triggered, immediately halting execution.

Exploitation Methodology

To execute this vulnerability, an attacker must craft JSON-RPC requests directed at the local MCP server endpoint. Because the software interacts natively with LLM applications, exploitation can occur locally or via malicious system instructions delivered to integrated agents.

For an arbitrary file write attack, the client submits a JSON payload to invoke the export_state tool, defining a destination directory such as /tmp/sublinear_state_poc.json to prove the ability to write files outside of the intended state boundaries:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "export_state",
    "arguments": {
      "filepath": "/tmp/sublinear_state_poc.json"
    }
  }
}

For an arbitrary file read attack, the attacker calls the loadVectorFromFile tool and provides directory traversal variables to point to sensitive server configurations or operating system databases:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "loadVectorFromFile",
    "arguments": {
      "file_path": "../../../../../../etc/passwd"
    }
  }
}

When the application processes this traversal request, it reads the contents of the target system file and packages it directly inside the RPC response, facilitating data exfiltration.

Impact Assessment

The impact of CVE-2026-55609 is substantial. Successful exploitation allows unauthorized read and write access to files accessible under the host system permissions of the running application. Attackers can leverage the writing capabilities to modify configuration structures, drop administrative authorization configurations, or overwrite executable files.

The arbitrary file reading capabilities also present confidentiality exposures. Sensitive database environments, keys, and operational files can be systematically harvested from vulnerable container containers.

When this application interacts with AI-driven models or automated agents, the risk is amplified. An external agent could manipulate the model context to invoke filesystem utilities with engineered path variables, bridging application security domains and leading to indirect code execution.

Remediation and Mitigation

To mitigate this vulnerability, system administrators and developers must update dependencies immediately. Ensure that sublinear-time-solver is updated to version 1.6.0 or higher, and consciousness-explorer is updated to version 1.1.2 or higher.

If instant upgrades are not feasible within your system architecture, the following host-level controls must be applied:

  • Run the underlying application using a dedicated, non-privileged system user profile to reduce the scope of directory modifications.

  • Use network segmentation rules to block the MCP interfaces from accepting non-local connections.

  • Explicitly configure secure isolation pathways by setting the target environment variables SUBLINEAR_SOLVER_VECTOR_DIR and CONSCIOUSNESS_EXPLORER_STATE_DIR to isolated, sandboxed directories.

Official Patches

ruvnetGitHub Security Advisory
ruvnetPull request containing the safe path verification logic

Fix Analysis (2)

Technical Appendix

CVSS Score
7.1/ 10
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H

Affected Systems

sublinear-time-solver (version 1.5.0)consciousness-explorer (version 1.1.1)

Affected Versions Detail

Product
Affected Versions
Fixed Version
sublinear-time-solver
ruvnet
< 1.6.01.6.0
consciousness-explorer
ruvnet
< 1.1.21.1.2
AttributeDetail
CWE IDCWE-73
Attack VectorLocal
CVSS Base Score7.1
Exploit StatusProof of Concept
CISA KEV StatusNot Listed
ImpactArbitrary File Read and Write

MITRE ATT&CK Mapping

T1005Data from Local System
Collection
T1546Event Triggered Execution
Persistence
CWE-73
External Control of File Name or Path

The software allows user input to control or influence the paths used in filesystem operations without adequate validation, potentially leading to unauthorized access or modification of files.

Known Exploits & Detection

GitHub IssuesPublic issue reporting vulnerability and outlining the vector paths
Public Exploit RepositoriesDetailed researcher report containing Proof-of-Concept demonstration scripts

References & Sources

  • [1]GitHub Security Advisory GHSA-xc9g-j69q-37xw
  • [2]Sublinear-time-solver Release v1.6.0

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•2 minutes ago•CVE-2026-109619
9.2

CVE-2026-109619: Remote Code Execution in PHP Core via Stale Global State Memory Corruption (PHP2Shell)

CVE-2026-109619 (PHP2Shell) is a critical Use-After-Free vulnerability in the core PHP engine caused by improper global state cleanup during out-of-memory exception handling across persistent worker requests.

Alon Barad
Alon Barad
1 views•6 min read
•5 minutes ago•CVE-2026-113721
4.5

CVE-2026-113721: Unsafe Link Resolution in virtualenv File Generation

In Python virtualenv prior to version 21.14.9, activation script generators and configuration writers use Path.exists() before writing files. Because Path.exists() resolves symbolic links, it returns False for dangling symlinks. Consequently, virtualenv skips unlinking pre-planted symbolic links or hard links, writing data directly to target locations outside the intended virtual environment directory.

Amit Schendel
Amit Schendel
1 views•5 min read
•9 days ago•CVE-2026-87697
8.8

CVE-2026-87697: Untrusted Deserialization in .NET PresentationCore Clipboard Handling

A remote code execution vulnerability exists in Microsoft .NET due to untrusted data deserialization within the PresentationCore component. The flaw stems from implicit auto-conversion flags during clipboard data retrieval operations.

Alon Barad
Alon Barad
31 views•5 min read
•9 days ago•CVE-2026-70007
8.8

CVE-2026-70007: Out-of-Bounds Write Vulnerability in .NET Framework and WPF Subsystem

An out-of-bounds write vulnerability in Microsoft .NET Framework, .NET runtime, and Visual Studio allows unauthenticated remote attackers to execute arbitrary code via crafted pixel-shader bytecode or auto-converted clipboard payloads.

Amit Schendel
Amit Schendel
19 views•6 min read
•10 days ago•CVE-2026-70186
7.5

CVE-2026-70186: ASP.NET Core Denial of Service Vulnerability via Framework Deadlock

ASP.NET Core contains a thread deadlock vulnerability (CWE-833) that allows an unauthenticated remote attacker to cause a denial of service over the network by exhausting server thread pool resources.

Amit Schendel
Amit Schendel
18 views•5 min read
•10 days ago•CVE-2026-70035
8.8

CVE-2026-70035: Insecure Deserialization Remote Code Execution in Microsoft .NET Framework and .NET Runtime

CVE-2026-70035 is a high-severity Remote Code Execution (RCE) vulnerability in Microsoft .NET Framework, .NET runtime, and Visual Studio caused by improper handling during the deserialization of untrusted data (CWE-502). An unauthenticated attacker can execute arbitrary code within the context of the affected process by delivering a crafted serialized payload.

Amit Schendel
Amit Schendel
24 views•6 min read