Executive brief
The sublinear-time-solver software provides an MCP (Model Context Protocol) server that accepts file paths as user input for exporting and importing state data. An attacker with access to this server can manipulate file paths to write to arbitrary locations on the filesystem, such as critical system files or SSH keys, potentially taking over the system or disrupting service operations.
Technical details
The vulnerability is a path traversal / arbitrary file write flaw (CWE-73) in the MCP tools export_state, import_state, saveVectorToFile, and loadVectorFromFile. These tools accept a user-controlled filepath parameter and pass it directly to Node.js fs.writeFileSync/fs.readFileSync without validation or sanitization. An attacker able to invoke these MCP tools (typically with low privilege requirements and no user interaction needed) can supply paths like "../../.ssh/authorized_keys" to read or write arbitrary files accessible to the server process. The vulnerability was patched in consciousness-explorer 1.1.2, sublinear-time-solver 1.6.0, and sublinear 0.2.0 by confining file operations to a dedicated directory, enforcing basename-only file names, and using secure open flags (O_NOFOLLOW | O_CLOEXEC).
Affected products
- ruvnet sublinear-time-solver < 1.6.0
- npm consciousness-explorer < 1.1.2
- crates.io sublinear < 0.2.0
Timeline
- 2026-06-14: disclosed: GitHub security advisory published
- 2026-08-25: advisory: Advisory updated and reviewed by GitHub
- 2026-06-14: patched: Patches released: consciousness-explorer@1.1.2, sublinear-time-solver@1.6.0, sublinear@0.2.0