QWED: Authenticated Remote Code Execution via Unsafe SymPy `parse_expr()`
Default status is the baseline for the product, each version can override it (e.g. patched versions marked unaffected).
| Vendor | Product | Default status | Versions | ||||||
|---|---|---|---|---|---|---|---|---|---|
| QWED-AI | qwed-verification | affected |
|
No data.
No data.
| Vendor | Product | Versions | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Qwed-ai | Qwed-verification |
|
| Source | ID | Title |
|---|---|---|
Github GHSA |
GHSA-q27q-98j4-9pfv | qwed Vulnerable to Authenticated Remote Code Execution via Unsafe SymPy `parse_expr()` |
No CVSS v4.0
No CVSS v3.0
No CVSS v2
This CVE is not in the KEV list.
Exploit prediction score: < 1% (0.775% probability within 30 days)
| Type | Values Removed | Values Added |
|---|---|---|
| Metrics |
ssvc
|
| Type | Values Removed | Values Added |
|---|---|---|
| First Time appeared |
Qwed-ai
Qwed-ai qwed-verification |
|
| Vendors & Products |
Qwed-ai
Qwed-ai qwed-verification |
| Type | Values Removed | Values Added |
|---|---|---|
| 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. | |
| Title | QWED: Authenticated Remote Code Execution via Unsafe SymPy `parse_expr()` | |
| Weaknesses | CWE-94 | |
| References |
|
|
| Metrics |
cvssV3_1
|