CVE-2026-55546: QWED-MCP: Unsafe SymPy `parse_expr()` Remote Code Execution via Unsanitized Math Expression Input
QWED-MCP is a deterministic verification gateway for MCP. Prior to 0.2.1, verify_math_expression() in src/qwed_mcp/engines/math_engine.py passes attacker-controlled expression and claimed_result strings directly to SymPy's parse_expr() after only normalizing caret syntax to Python exponent syntax, without restricting global_dict, removing Python built-ins, or validating the expression AST. Because parse_expr() calls Python's eval() with built-ins available, an attacker who can cause a downstream caller to pass untrusted input to this public library function can use Python import functionality to execute arbitrary operating-system commands as the qwed-mcp process user, read or modify accessible data, exfiltrate process secrets, or reach internal services. The default MCP tool registry does not expose verify_math_expression(), so exploitation requires a downstream integration that invokes the library API with attacker-controlled input. This issue is fixed in version 0.2.1.
Security readout for executives and security teams
Plain-English summary
QWED-MCP before 0.2.1 can treat malicious mathematical input as Python code, potentially allowing takeover of the service process. The default MCP tool registry does not expose the vulnerable function, so risk depends on whether a custom downstream integration sends untrusted input to it.
Executive priority
Treat as an urgent, targeted remediation. Prioritize systems running versions before 0.2.1 that expose the library function to untrusted input. Upgrade promptly, but avoid assuming every default QWED-MCP deployment is remotely exploitable because the vulnerable function is not registered as a default MCP tool.
Technical view
The public verify_math_expression() library function passes expression and claimed_result into SymPy parse_expr() without restricting globals, removing built-ins, or validating syntax. Because parse_expr() uses Python eval(), crafted input may execute code with the qwed-mcp process user's permissions. CVSS 3.1 is 9.8; CWE-94 applies.
Likely exposure
Exposure is limited to qwed-mcp versions before 0.2.1 where downstream code calls verify_math_expression() with attacker-controlled expression or claimed_result values. Default MCP registration reportedly does not expose this function. Internet reachability, deployment prevalence, and affected integration counts are not established by the supplied sources.
Exploitation context
No active exploitation is established: the bundle reports KEV as false and provides no cited evidence of exploitation in the wild. Exploitation nevertheless appears low-complexity when a vulnerable downstream integration exposes attacker-controlled input, requiring no privileges or user interaction under the supplied CVSS assessment.
Researcher notes
The critical boundary is downstream reachability, not merely package presence. Review both input parameters, caller authentication, process privileges, secrets, and network access. The supplied sources attribute the flaw to unsafe parse_expr() evaluation and identify 0.2.1 as fixed, but do not establish public exploitation, deployment prevalence, or default remote exposure.
Mitigation direction
Upgrade qwed-mcp to version 0.2.1 or later.
Identify and restrict integrations calling verify_math_expression() with untrusted input.
Disable affected integrations until upgrading if input trust cannot be assured.
Limit the qwed-mcp process permissions, secrets, and internal network access.
Validation and detection
Inventory installed qwed-mcp versions and flag releases earlier than 0.2.1.
Search application code for calls to verify_math_expression().
Trace whether expression or claimed_result can originate from untrusted users or systems.
Confirm production deployments run the upgraded package and affected services were restarted.
Review process and application logs for suspicious activity around math-verification requests.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cwe · medium confidence lookup
CWE-94: Code execution behavior lookup
Code execution and unsafe deserialization weaknesses often justify reviewing execution behavior and process telemetry. Open the exact CWE lookup page first, then review the ATT&CK searches from that MITRE weakness context. This is a Glexia lookup hint, not an official ATT&CK mapping.
The CVE wording references code or command execution, so execution technique review may help defensive triage. This is a Glexia inferred lookup path, not an official MITRE, ATT&CK, or CVE Program mapping.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
1CVSS vectors
3Timeline events
1ADP providers
5Source links
SSVC decision data
CISA-ADPCISA Coordinator
Timestamp
Version
2.0.3
Exploitation: pocAutomatable: yesTechnical Impact: total
CVSS vector scores
1 official score
We collect every scored CVSS vector available in the official CNA and ADP containers. When more than one version is present, the table keeps the source vectors side by side instead of collapsing them into the highest score.
CWE links open Glexia weakness intelligence pages with official CWE context, developer remediation guidance, and related CVE mappings.
CWE-94 · source CWE mapping
Improper Control of Generation of Code
Improper Control of Generation of Code represents a recurring weakness pattern that can create exploitable paths when design, validation, or implementation controls are missing.