CVE-2026-55546
KrytyczneCVSS 9.8Streszczenie
QWED-MCP przed wersją 0.2.1, funkcja verify_math_expression() w src/qwed_mcp/engines/math_engine.py przekazuje kontrolowane przez atakującego wyrażenie i ciąg claimed_result bezpośrednio do SymPy's parse_expr() po tylko normalizacji składni daszka do składni potęgowej Pythona, bez ograniczania global_dict, usuwania wbudowanych funkcji Pythona ani walidacji AST wyrażenia. Ponieważ parse_expr() wywołuje eval() Pythona z dostępnymi wbudowanymi funkcjami, atakujący, który może spowodować, że wywołujący downstream przekaże niezaufane dane do tej publicznej funkcji bibliotecznej, może użyć funkcji importu Pythona do wykonania dowolnych poleceń systemu operacyjnego jako użytkownik procesu qwed-mcp, odczytać lub modyfikować dostępne dane, eksfiltrować sekrety procesu lub dotrzeć do wewnętrznych usług. Domyślny rejestr narzędzi MCP nie udostępnia verify_math_expression(), więc wykorzystanie wymaga integracji downstream, która wywołuje API biblioteki z danymi kontrolowanymi przez atakującego. Problem został naprawiony w wersji 0.2.1.
Ocena ryzyka
Podatność może umożliwić wykonanie dowolnego kodu w kontekście procesu qwed-mcp, co może prowadzić do naruszenia poufności danych, modyfikacji systemu i dostępu do wewnętrznych usług.
Rekomendacja
Zaleca się aktualizację QWED-MCP do wersji 0.2.1 lub nowszej oraz unikanie przekazywania niezaufanych danych do funkcji verify_math_expression().
Oryginalny opis (angielski, źródło NVD)
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.

