CVE-2026-55585 QWED: Authenticated Remote Code Execution via Unsafe SymPy `parse_expr()`

High 8.8 Published Updated

Authenticated attackers can execute arbitrary Python code via unsafe SymPy expression parsing in QWED, leading to full system compromise.

Exploited in the wild
Not known
Login needed
Any signed-in user
Attackable
Over the internet
Victim action needed
Not needed
Fix
Available

What is CVE-2026-55585?

CVE-2026-55585 is a high-severity code injection vulnerability in QWED-AI qwed-verification, published on 25 Aug 2026. Any signed-in user can exploit it over the network, with no action from the victim.

Official description

QWED is open-source AI verification infrastructure for deterministic verification of LLM outputs, tool calls, code, schemas, and agent state before production execution. Prior to 5.1.2, the qwed package passes caller-controlled math expressions directly to SymPy parse_expr() without restricted global_dict and local_dict namespaces, allowing Python eval() to resolve builtins and execute arbitrary Python code in the API server process. In src/qwed_new/api/main.py, POST /verify/math is protected by get_current_tenant but accepts any valid tenant API key, reads the expression field, applies only a cosmetic re.sub(r'(\d)(()', r'\1*\2', expression) normalization, and passes the result to parse_expr(). In src/qwed_new/core/batch.py, POST /verify/batch sends math items through batch_service.create_job(), stores item.query verbatim, and _verify_item() passes VerificationType.MATH input to parse_expr() without sanitization. The default-enabled POST /auth/signup endpoint allows anyone to create a standard tenant account, POST /auth/api-keys issues an x-api-key, and either vulnerable path can then be used to read or write files, modify data, execute operating system commands, terminate the service, and compromise other tenants in a shared deployment. This issue is fixed in version 5.1.2.

Weakness: CWE-94

Which versions are affected by CVE-2026-55585?

3 open source packages ship an affected version, including qwed.

PackageAffectedFixed in
qwed PyPIAll versions5.1.2
qwed PyPIAll versions5.1.2
qwed PyPIAll versions5.1.2

How do I fix CVE-2026-55585?

Upgrade qwed to 5.1.2 or later.

Upgrade, and never evaluate templates, expressions or code built from user input. More about Code injection.

Is CVE-2026-55585 being exploited?

It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-55585 exists.

Sources

Also known as GHSA-q27q-98j4-9pfv, PYSEC-2026-3914.

Is CVE-2026-55585 in your software?

Upload an SBOM and sbomify checks it against every vulnerability here, every day.

Check your SBOMs for free