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-auditand Dependabot do read GitHub advisories.
Affected packages
| Ecosystem | Package | Vulnerable | First fixed |
|---|---|---|---|
| npm | @profullstack/mcp-server | <= 1.4.12 | none 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
- GitHub Advisory GHSA-v6wj-c83f-v46x github.com
- github.com github.com