CVE-2025-66401: Mcp watch Remote Code Execution Vulnerability

CRITICAL
Advisory Identifier: GHSA-27m7-ffhq-jqrm
CVSS 9.8
CWE-78
Published
Advisory Summary

CVE-2025-66401 is a CRITICAL (CVSS 9.8) remote code execution vulnerability (CWE-78: Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')) affecting Mcp watch libraries in the npm ecosystem. The issue involves mcp watch has a critical command injection in clonerepo allows remote code execution (rce) via malicious url. Remediation is available in the latest vendor maintenance releases.

CVE-2025-66401 at a Glance

CVE Identifier CVE-2025-66401
GHSA Identifier GHSA-27m7-ffhq-jqrm
Severity CRITICAL
CVSS v3.1 Base Score 9.8
CWE Classification CWE-78: Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')
Affected Product Mcp watch
Package Ecosystem npm
Published Date
Last Updated

Security Impact

CVSS: 9.8

The security impact metrics below are parsed directly from the CVSS v3.1 vector string (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H).

Attack Vector Network (AV:N)
Attack Complexity Low (AC:L)
Privileges Required None (PR:N)
User Interaction None (UI:N)
Scope Unchanged (S:U)
Confidentiality High (C:H)
Integrity High (I:H)
Availability High (A:H)

How to Fix CVE-2025-66401

To remediate this vulnerability, upgrade all affected Mcp watch dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.

mcp-watch fixed: Latest secure release
npm install mcp-watch@Latest secure release
Verify Direct and Transitive Dependencies

Run the following command in your project directory to verify that all resolved dependencies use the patched release:

npm ls mcp-watch

How to Check if You Are Affected

To determine whether your Node.js application is affected by CVE-2025-66401, inspect your project dependencies using npm:

npm ls mcp-watch

Analyze the terminal output to locate any version of Mcp watch in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than the patched release), your application is affected.

Note: The npm ls mcp-watch 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-78: Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection'), where the product constructs all or part of an os command using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended os command when it is sent to a downstream component. In Mcp watch, 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

### Summary The `MCPScanner ` class contains a critical Command Injection vulnerability in the `cloneRepo `method. The application passes the user-supplied githubUrl argument directly to a system shell via execSync without sanitization. This allows an attacker to execute arbitrary commands on the host machine by appending shell metacharacters to the URL. ### Details The vulnerability exists in the src/scanner/MCPScanner.ts file within the cloneRepo method. [https://github.com/kapilduraphe/mcp-watch/blob/0fca7228bd313ae5aa938d61311377e88ce6e682/src/scanner/McpScanner.ts#L181](https://github.com/kapilduraphe/mcp-watch/blob/0fca7228bd313ae5aa938d61311377e88ce6e682/src/scanner/McpScanner.ts#L181) The code uses child_process.execSync to execute a git clone command: Because execSync spawns a shell (defaulting to `/bin/sh` on Unix or` cmd.exe` on Windows), any shell metacharacters present in the url argument will be interpreted by the shell. The application does not validate that the url is a valid Git URL, nor does it sanitize input for shell metacharacters. ### PoC Install the package or clone the repository. Run the scanner using the CLI (or invoke scanRepository programmatically). Provide a malicious URL containing a command separator (e.g., ;, &, or |) and a system command. payload : `npm run scan:github "https://github.com/kapilduraphe/mcp-watch & calc.exe"` <img width="1918" height="1046" alt="image" src="https://github.com/user-attachments/assets/021c1dfa-3f87-483c-aecb-6939bcf9c925" /> ### Impact Severity: **Critical** **CVSS Score**: 9.8 (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) Description: This vulnerability allows an attacker to execute arbitrary code on the machine running the scanner. If run by a developer locally, it compromises their workstation. If deployed as a hosted scanning service, it grants the attacker full control over the server (RCE), leading to potential data exfiltration, service disruption, or further lateral movement within the infrastructure. **Context Dependent Risk:** Local CLI : If you run this tool locally on your own machine, you are "hacking yourself." The risk is limited unless you copy-paste a malicious URL sent by someone else (e.g., "Hey, check this repo scan: npm run scan "https://git./..; rm -rf /"). **Web Service / CI Pipeline (Critical Risk)**: If this scanner is deployed as a web service (e.g., "Paste your repo URL to scan"), an attacker can take full control of the server immediately.

CVE-2025-66401 Affected Mcp watch Versions

1 component(s)
Product / Package Ecosystem Affected Versions Fixed Version
mcp-watch
npm
≤ 0.1.2

References

Frequently Asked Questions

What is CVE-2025-66401?
CVE-2025-66401 is a security vulnerability in Mcp watch involving MCP Watch has a Critical Command Injection in cloneRepo allows Remote Code Execution (RCE) via malicious URL under CWE-78: Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').
Which Mcp watch versions are affected?
Affected versions include releases prior to current release patches across affected packages: mcp-watch.
What version fixes CVE-2025-66401?
Upgrading to current release patches (or the latest patched release for your respective branch) resolves the vulnerability.
Is mcp-watch affected?
Yes, mcp-watch is affected in releases prior to Latest secure release. Upgrade your dependency to Latest secure release or later.
What is the CVSS score of CVE-2025-66401?
CVE-2025-66401 has a CVSS v3.1 base score of 9.8 (CRITICAL) with vector string CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H.
What CWE is associated with CVE-2025-66401?
CVE-2025-66401 is classified under CWE-78: Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection') (The product constructs all or part of an OS command using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended OS command when it is sent to a downstream component.).
How can I check npm dependencies for CVE-2025-66401?
Run the dependency tree command: 'npm ls mcp-watch'. This command lists direct and transitive dependencies in your build configuration so you can verify if a vulnerable version is resolved.
Machine-readable OSV JSON OSV v1.5 Schema
Normalized schema output
{
  "schema_version" : "1.4.0",
  "id" : "GHSA-27m7-ffhq-jqrm",
  "modified" : "2025-12-02T00:38:14Z",
  "published" : "2025-12-02T00:38:14Z",
  "aliases" : [ "CVE-2025-66401" ],
  "summary" : "MCP Watch has a Critical Command Injection in cloneRepo allows Remote Code Execution (RCE) via malicious URL",
  "details" : "### Summary\nThe `MCPScanner ` class contains a critical Command Injection vulnerability in the `cloneRepo `method. The application passes the user-supplied githubUrl argument directly to a system shell via execSync without sanitization. This allows an attacker to execute arbitrary commands on the host machine by appending shell metacharacters to the URL.\n\n### Details\nThe vulnerability exists in the src/scanner/MCPScanner.ts file within the cloneRepo method.\n\n[https://github.com/kapilduraphe/mcp-watch/blob/0fca7228bd313ae5aa938d61311377e88ce6e682/src/scanner/McpScanner.ts#L181](https://github.com/kapilduraphe/mcp-watch/blob/0fca7228bd313ae5aa938d61311377e88ce6e682/src/scanner/McpScanner.ts#L181)\n\nThe code uses child_process.execSync to execute a git clone command:\n\nBecause execSync spawns a shell (defaulting to `/bin/sh` on Unix or` cmd.exe` on Windows), any shell metacharacters present in the url argument will be interpreted by the shell. The application does not validate that the url is a valid Git URL, nor does it sanitize input for shell metacharacters.\n\n### PoC\nInstall the package or clone the repository.\n\nRun the scanner using the CLI (or invoke scanRepository programmatically).\n\nProvide a malicious URL containing a command separator (e.g., ;, &, or |) and a system command.\npayload : `npm run scan:github \"https://github.com/kapilduraphe/mcp-watch & calc.exe\"`\n\n<img width=\"1918\" height=\"1046\" alt=\"image\" src=\"https://github.com/user-attachments/assets/021c1dfa-3f87-483c-aecb-6939bcf9c925\" />\n\n\n\n### Impact\nSeverity: **Critical**\n\n**CVSS Score**: 9.8 (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)\nDescription: This vulnerability allows an attacker to execute arbitrary code on the machine running the scanner.\n\nIf run by a developer locally, it compromises their workstation.\n\nIf deployed as a hosted scanning service, it grants the attacker full control over the server (RCE), leading to potential data exfiltration, service disruption, or further lateral movement within the infrastructure.\n\n**Context Dependent Risk:**\n\nLocal CLI : If you run this tool locally on your own machine, you are \"hacking yourself.\" The risk is limited unless you copy-paste a malicious URL sent by someone else (e.g., \"Hey, check this repo scan: npm run scan \"https://git./..; rm -rf /\").\n\n**Web Service / CI Pipeline (Critical Risk)**: If this scanner is deployed as a web service (e.g., \"Paste your repo URL to scan\"), an attacker can take full control of the server immediately.",
  "severity" : [ {
    "type" : "CVSS_V3",
    "score" : "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
  } ],
  "affected" : [ {
    "package" : {
      "ecosystem" : "npm",
      "name" : "mcp-watch"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "0"
      }, {
        "last_affected" : "0.1.2"
      } ]
    } ]
  } ],
  "references" : [ {
    "type" : "WEB",
    "url" : "https://github.com/kapilduraphe/mcp-watch/security/advisories/GHSA-27m7-ffhq-jqrm"
  }, {
    "type" : "ADVISORY",
    "url" : "https://nvd.nist.gov/vuln/detail/CVE-2025-66401"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/kapilduraphe/mcp-watch/commit/e7da78c5b4b960f8b66c254059ad9ebc544a91a6"
  }, {
    "type" : "PACKAGE",
    "url" : "https://github.com/kapilduraphe/mcp-watch"
  } ],
  "database_specific" : {
    "cwe_ids" : [ "CWE-78" ],
    "severity" : "CRITICAL",
    "github_reviewed" : true,
    "github_reviewed_at" : "2025-12-02T00:38:14Z",
    "nvd_published_at" : "2025-12-01T23:15:53Z"
  }
}