---
title: "CVE-2026-55546: qwed-mcp has Unsafe SymPy `parse_expr()` Remote Code Execution via Unsanitized Math Expression Input"
url: https://erroneo.us/security/cve/CVE-2026-55546/
description: "CVE-2026-55546 (qwed-mcp (PyPI)): QWED-MCP is a deterministic verification gateway for MCP. Prior to 0.2.1, verifymathexpression() in…"
type: vulnerability-record
section: "Security Digest"
date_published: 2026-08-25
date_modified: 2026-08-25
publisher: erroneo.us
author: erroneo.us Security Desk
cve: "CVE-2026-55546"
kev: false
cvss: 9.8
epss: 0.00726
license: All rights reserved. Quote with attribution and a link.
---

# CVE-2026-55546: qwed-mcp has Unsafe SymPy `parse_expr()` Remote Code Execution via Unsanitized Math Expression Input

**Signal:** Critical and remotely reachable. No known exploitation yet, but it is network-reachable without credentials. (Computed from CISA KEV, EPSS and CVSS; not an editorial verdict.)

## Should you act?

- Not in CISA KEV , but CISA’s SSVC assessment records a public proof-of-concept, so attack code exists.
- EPSS 0.7% , percentile 54: FIRST’s model estimates a 0.7% chance of exploitation activity in the next 30 days, higher than 54% of all scored CVEs (moderate). EPSS is a probability, not a verdict.
- Remotely reachable with no login and no user interaction. If the vulnerable service is exposed to the internet, prioritize it.
- Only applies if your dependency tree includes qwed-mcp (PyPI) < 0.2.1, fixed in 0.2.1 . Check your lockfile, including transitive dependencies.

## What it is

QWED-MCP is a deterministic verification gateway for MCP. Prior to 0.2.1, verifymathexpression() in src/qwedmcp/engines/mathengine.py passes attacker-controlled expression and claimedresult strings directly to SymPy's parseexpr() after only normalizing caret syntax to Python exponent syntax, without restricting globaldict, removing Python built-ins, or validating the expression AST. Because parseexpr() 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 verifymathexpression(), so exploitation requires a downstream integration that invokes the library API with attacker-controlled input. This issue is fixed in version 0.2.1.

## Affected packages

- PyPI `qwed-mcp` < 0.2.1 → fixed: 0.2.1

## Affected products (CVE record)

- QWED-AI qwed-mcp: < 0.2.1

## Severity

- GitHub_M CVSS 3.1: 9.8 `CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H`
- GitHub CVSS 3.1: 9.8 `CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H`

## Exploitation

- CISA KEV: not listed (no confirmed in-the-wild exploitation known to CISA).
- CISA SSVC assessment: exploitation poc , automatable yes , technical impact total .
- FIRST EPSS (model of 2026-10-21): 0.73% probability of exploitation activity in the next 30 days; percentile 54.

## Sources

- [GitHub Advisory GHSA-mw6r-2hvm-4rp2](https://github.com/advisories/GHSA-mw6r-2hvm-4rp2)
- [CVE.org record CVE-2026-55546](https://www.cve.org/CVERecord?id=CVE-2026-55546)
- [NVD entry CVE-2026-55546](https://nvd.nist.gov/vuln/detail/CVE-2026-55546)
- [github.com](https://github.com/QWED-AI/qwed-mcp/security/advisories/GHSA-mw6r-2hvm-4rp2)
- [github.com](https://github.com/QWED-AI/qwed-mcp/pull/22)
- [github.com](https://github.com/QWED-AI/qwed-mcp/commit/362e61892052e250c56cb1ee852024d6f98c467b)
- [github.com](https://github.com/QWED-AI/qwed-mcp/releases/tag/v0.2.1)

---
Source page: https://erroneo.us/security/cve/CVE-2026-55546/ · Security Digest: https://erroneo.us/security/ · More: https://erroneo.us/llms.txt
