🛡️ CVE-2026-47708 — stata-mcp

🔴 CVSS 9.5 — Critical ✅ No Known Exploit CWE-77 NVD
9.5
CVSS Score
0 Low4 Medium7 High9 Critical10

Description

MCP-for-Stata: Command injection via log_file_name parameter in Stata command wrapper

Summary

The log_file_name parameter in the stata_do API and CLI is directly interpolated into a Stata command string without sanitization. The security guard (GuardValidator) only scans the do-file content but does not validate this parameter. An attacker can inject arbitrary Stata commands (including shell, python, erase, etc.) by crafting a malicious log_file_name containing quotes, newlines, or Stata command separators.

Details

In src/stata_mcp/stata/stata_do/do.py, both _execute_unix_like and _execute_windows construct a Stata command string using Python f-strings:

```python

commands = f"""

capture log close

{self.generate_log_command(log_file, is_replace)}

...

do "{dofile_path}"

...

"""

```

The generate_log_command method returns:

```python

log_cmd = f'log using "{log_file.as_posix()}", {replace_clause} {log_type} name({log_type}_log)'

```

Where log_file is constructed from user-supplied log_name:

```python

def generate_log_file(self, log_name: str, extension='log'):

return self.log_file_path / f"{log_name}.{extension}"

```

The log_name parameter comes directly from user input (via MCP tool stata_do or CLI stata-mcp tool do) without any validation. Since the path is embedded inside double quotes in a Stata command string, an attacker can break out of the string context and inject arbitrary commands.

Additionally, generate_log_file does not prevent path traversal via log_name, allowing arbitrary file write outside the intended log directory.

Proof of Concept

When calling stata_do via MCP tool with:

```json

{

"dofile_path": "test.do",

"log_file_name": "'; shell echo pwned > /tmp/pwned.txt; '"

}

```

The generated Stata commands become:

```stata

log using "<log_dir>/'; shell echo pwned > /tmp/pwned.txt; '.log", replace text name(text_log)

```

Stata interprets this as multiple commands, with shell echo pwned > /tmp/pwned.txt; executed as an arbitrary shell command.

Impact

  • Remote Code Execution via shell command injection
  • Arbitrary file write/overwrite via path traversal in log_name
  • Complete bypass of the security guard, as the guard only validates do-file content, not wrapper parameters

Remediation / Fix

1. Apply strict allowlist validation to log_name (only alphanumeric, underscore, dot, hyphen; max 128 chars)

2. Resolve and verify the constructed log path remains within the intended log directory

3. Consider generating safe internal filenames (e.g., UUIDs) instead of accepting user-defined log names for command construction

4. Apply similar sanitization to dofile_path before embedding it into Stata command strings

References

  • Issue: #74
  • Fix commit: https://github.com/SepineTam/stata-mcp/commit/e6f945941ae0c7cf5e74a428e0b3dc82b396382f

How this vulnerability can be exploited

This issue can be reached over the network, attack complexity is low, an attacker needs no privileges on the target. No user interaction is required. Rated impact: confidentiality high, integrity high, availability high.

Weakness class

CVE-2026-47708 is classified as CWE-77: Command Injection. User input is placed into a command that the system interprets, allowing extra commands to be appended to the intended one.

Affected software

CVE-2026-47708 is recorded against 2 packages.

  • stata-mcp (fixed in 1.17.3)
  • unknown

Timeline and source

Published on 4 June 2026 and last revised on 1 July 2026. No public exploit is currently recorded for this entry. Record sourced from NVD.

References

github.com (Web)
github.com (Web)
github.com (Web)
github.com (Package)

Details

Severity CRITICAL
CVSS Score 9.5
CVSS Vector CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
CWE CWE-77
Public Exploit ✅ No
Source NVD
Published 2026-06-04
Updated 2026-08-12
Modified 2026-07-01
Fix URL N/A

Affected Packages

Software From version Fixed in
stata-mcp 1.17.3
unknown

Similar Threats

Exploit Protection

Are you running stata-mcp?

CVE-2026-47708 carries CVSS 9.5 Critical rating. BotEraser checks your installation against this and other known CVE records, and blocks IPs associated with exploit activity.

Check My Site For CVE-2026-47708 →

No credit card required  ·  Results in minutes

ⓘ Data Notice: The information presented above has been compiled from publicly available internet sources. Boteraser aggregates this data solely for informational purposes and does not independently classify, evaluate, or endorse any findings about the vulnerabilities listed. The accuracy and completeness of this information is the sole responsibility of the original publishers. Boteraser and its operators accept no liability for any decisions made based on this data.

Browse related advisories

All advisoriesCVECVE 2026