Security Digest · Critical advisory (no CVE assigned)

GHSA-v6wj-c83f-v46x: @profullstack/mcp-server vulnerable to OS Command Injection in domain_lookup Module

Security Advisory: OS Command Injection in profullstack/mcp-server domainlookup Module Field | Value -- | -- Project | profullstack/mcp-server Repository | https://github.com/profullstack/mcp-server Affected Commit | 2e8ea913573610667ad54e31dba2e8198ebf7cf9 Affected Module |…

CVSS 9.8 Critical GitHub-reviewed · critical

Should you act?

  • Only if you depend on one of the packages below, directly or transitively, in a vulnerable version. Check your lockfile with npm audit (or: npm ls <package>).
  • No CVE has been assigned, so it will not appear in CVE-based scanners that ignore GitHub advisories. npm audit, pip-audit and Dependabot do read GitHub advisories.

Affected packages

EcosystemPackageVulnerableFirst fixed
npm@profullstack/mcp-server<= 1.4.12none listed

Details

Security Advisory: OS Command Injection in profullstack/mcp-server domainlookup Module

Field | Value -- | -- Project | profullstack/mcp-server Repository | https://github.com/profullstack/mcp-server Affected Commit | 2e8ea913573610667ad54e31dba2e8198ebf7cf9 Affected Module | mcpmodules/domainlookup Affected Endpoints | POST /domain-lookup/check, POST /domain-lookup/bulk Vulnerability Type | CWE-78: OS Command Injection CVSS 3.1 Score | 9.8 (Critical) — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H Authentication Required | None Default Network Exposure | Bind address 0.0.0.0, no global authentication middleware Validated | 2026-04-21 (initial), 2026-04-28 (re-confirmed)

Summary The domainlookup module assembles a shell command string by concatenating user-controlled input ( domains / keywords ) and passes it to execAsync() . Both HTTP endpoints reach the same sink. Because there is no argument quoting, escaping, or allowlist — and no authentication on the server — an unauthenticated remote attacker can execute arbitrary OS commands as the server process. Affected Code index.js:27 — server binds to 0.0.0.0 , no global auth middleware. mcpmodules/domainlookup/index.js:52 — registers POST /domain-lookup/check . mcpmodules/domainlookup/index.js:55 — registers POST /domain-lookup/bulk . mcpmodules/domainlookup/src/service.js:19, :20 — buildTldxCommand() concatenates user input into the shell string. mcpmodules/domainlookup/src/service.js:114, :115, :142 — execAsync(command) sink reached from both routes. Vulnerable Code File: mcpmodules/domainlookup/src/service.js Step 1 — User input concatenated directly into a shell string: buildTldxCommand(keywords, options = {}) { let command = tldx ${keywords.join(' ')};

if (options.prefixes?.length) { command += --prefixes ${options.prefixes.join(',')}; } } Step 2 — That shell string is executed…

CVSS: 9.8 (v3.1) CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

Sources and references

  1. GitHub Advisory GHSA-v6wj-c83f-v46x github.com
  2. github.com github.com

Critical npm advisories · Today’s Security Digest