Vulnerabilities in pkg:npm/@roomi-fields/notebooklm-mcp
PACKAGECVE-2026-61647 is a HIGH path traversal vulnerability (CWE-73: External Control of File Name or Path) affecting @roomi fields/notebooklm mcp libraries in the npm ecosystem. The issue involves @roomi-fields/notebooklm-mcp has a path traversal in vault.batch tool that allows arbitrary file write outside intended vault directory. Remediation is available by upgrading affected packages to version 2.0.3.
pkg:npm/@roomi-fields/notebooklm-mcp
Vulnerability advisories affecting package pkg:npm/@roomi-fields/notebooklm-mcp. Select an advisory below to view technical details or fixes.
| Advisory ID | CVE / NVD | Severity | Summary |
|---|---|---|---|
| GHSA-jjhp-8crj-mppq | CVE-2026-61647 | HIGH | @roomi-fields/notebooklm-mcp has a path traversal in vault.batch tool that allows arbitrary file write outside intended vault directory |
CVE-2026-61647 at a Glance
How to Fix CVE-2026-61647
To remediate this vulnerability, upgrade all affected @roomi fields/notebooklm mcp dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.
npm install @roomi-fields/notebooklm-mcp@2.0.3
Run the following command in your project directory to verify that all resolved dependencies use the patched release:
npm ls @roomi-fields/notebooklm-mcp
How to Check if You Are Affected
To determine whether your Node.js application is affected by CVE-2026-61647, inspect your project dependencies using npm:
npm ls @roomi-fields/notebooklm-mcp
Analyze the terminal output to locate any version of @roomi fields/notebooklm mcp in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 2.0.3), your application is affected.
Note: The npm ls @roomi-fields/notebooklm-mcp command inspects dependencies declared in your package.json and lockfile; it does not perform automated runtime dynamic scanning.
Technical Details
Vulnerability Mechanism & Technical Analysis
This vulnerability is classified under CWE-73: External Control of File Name or Path, where the product allows user input to control or influence paths or file names that are used in filesystem operations. In @roomi fields/notebooklm mcp, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.
Source Advisory Statement
CVE-2026-61647 Affected @roomi fields/notebooklm mcp Versions
1 component(s)| Product / Package | Ecosystem | Affected Versions | Fixed Version |
|---|---|---|---|
|
@roomi-fields/notebooklm-mcp
|
npm |
≥ 1.6.0
< 2.0.3
|
2.0.3
|
References
Frequently Asked Questions
What is CVE-2026-61647?
Which @roomi fields/notebooklm mcp versions are affected?
What version fixes CVE-2026-61647?
Is @roomi-fields/notebooklm-mcp affected?
What CWE is associated with CVE-2026-61647?
How can I check npm dependencies for CVE-2026-61647?
Machine-readable OSV JSON
OSV v1.5 Schema
{
"schema_version" : "1.4.0",
"id" : "GHSA-jjhp-8crj-mppq",
"modified" : "2026-09-22T14:43:26Z",
"published" : "2026-09-22T14:43:26Z",
"aliases" : [ "CVE-2026-61647" ],
"summary" : "@roomi-fields/notebooklm-mcp has a path traversal in vault.batch tool that allows arbitrary file write outside intended vault directory",
"details" : "## Summary\n\nThe `vault_batch` MCP tool (and the equivalent `POST /batch-to-vault` HTTP endpoint) accepted a caller-supplied `vault_dir` path that was passed directly to `path.resolve()` + `fs.mkdir()` with no containment check. A caller — or a prompt-injected LLM driving the MCP — could therefore create directories and write `.md` / `.json` answer files anywhere the server process can write.\n\nThe `slug_prefix` parameter had a parallel, smaller traversal vector: it was concatenated into the filename without sanitization, so a prefix containing `/` or `..` could escape the resolved vault directory through the filename component.\n\n## Impact\n\nFile write (markdown + JSON sidecars) to any location writable by the server process. The written files are inert content (no code execution by themselves), but in a multi-user context — or when the MCP server is driven by an LLM that has read untrusted content (prompt injection) — this allows an attacker to plant files in sensitive locations (autostart folders, shell startup files, etc.) for downstream exploitation.\n\nThe vulnerability exists from **v1.6.0** (when the HTTP `/batch-to-vault` endpoint was introduced) and v1.7.0 (when the same logic was exposed as the `batch_to_vault` MCP tool) through **v2.0.2**.\n\n## Patch\n\nFixed in **v2.0.3**:\n\n- **Opt-in containment via `NOTEBOOKLM_VAULT_ROOT` env var.** When set, `vault_dir` is resolved relative to that root and `realpath`-based containment is enforced. Absolute paths or `..` segments outside the root are rejected with a clear error.\n- **`slug_prefix` is always sanitized.** Path separators (`/`, `\\`), `..` sequences and NUL bytes are stripped, length capped at 64 characters. This applies regardless of whether `NOTEBOOKLM_VAULT_ROOT` is set.\n- 15 unit tests in `src/__tests__/vault-writer.test.ts` cover the escape vectors (absolute paths, sibling-prefix attacks, `..` traversal, NUL/separator stripping).\n\n## Workarounds for users who cannot upgrade\n\n- Run the MCP server under a dedicated unprivileged user with write access only to the intended vault directory.\n- Do not expose the HTTP `/batch-to-vault` endpoint beyond localhost.\n- If using an LLM that ingests untrusted content, validate any `vault_dir` arguments before forwarding them to the MCP.\n\n## Configuration requirement after upgrade (important)\n\nv2.0.3 preserves the legacy unrestricted behaviour when `NOTEBOOKLM_VAULT_ROOT` is **unset**, to keep existing single-user local setups working. **To enable containment, set `NOTEBOOKLM_VAULT_ROOT` in the server environment** to a directory that should bound all vault writes.\n\n## Credit\n\nReported by @mcfly-zzh — thanks for the careful diagnosis and follow-up verification.",
"severity" : [ {
"type" : "CVSS_V4",
"score" : "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N"
} ],
"affected" : [ {
"package" : {
"ecosystem" : "npm",
"name" : "@roomi-fields/notebooklm-mcp"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "1.6.0"
}, {
"fixed" : "2.0.3"
} ]
} ]
} ],
"references" : [ {
"type" : "WEB",
"url" : "https://github.com/roomi-fields/notebooklm-mcp/security/advisories/GHSA-jjhp-8crj-mppq"
}, {
"type" : "ADVISORY",
"url" : "https://nvd.nist.gov/vuln/detail/CVE-2026-61647"
}, {
"type" : "WEB",
"url" : "https://github.com/roomi-fields/notebooklm-mcp/issues/15"
}, {
"type" : "WEB",
"url" : "https://github.com/roomi-fields/notebooklm-mcp/commit/13828d9ff3933839ce14c1797d3b20a6bb7694a6"
}, {
"type" : "PACKAGE",
"url" : "https://github.com/roomi-fields/notebooklm-mcp"
}, {
"type" : "WEB",
"url" : "https://github.com/roomi-fields/notebooklm-mcp/releases/tag/v2.0.3"
} ],
"database_specific" : {
"cwe_ids" : [ "CWE-22", "CWE-73" ],
"severity" : "HIGH",
"github_reviewed" : true,
"github_reviewed_at" : "2026-09-22T14:43:26Z",
"nvd_published_at" : "2026-09-21T21:17:07Z"
}
}