Katalog CVE

CVE-2026-55585

WysokieCVSS 8.8
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.44%

Percentyl 37 - wyżej niż 37% wszystkich znanych CVE

Streszczenie

QWED przed wersją 5.1.2 przekazuje wyrażenia matematyczne sterowane przez wywołującego bezpośrednio do funkcji parse_expr() biblioteki SymPy bez ograniczonych przestrzeni nazw global_dict i local_dict, co pozwala na wykonanie dowolnego kodu Pythona w procesie serwera API. Podatne są ścieżki POST /verify/math i POST /verify/batch, które są chronione tylko przez klucz API dzierżawcy, a rejestracja konta jest domyślnie otwarta. Problem naprawiono w wersji 5.1.2.

Ocena ryzyka

Atakujący z ważnym kluczem API może wykonać dowolny kod Pythona na serwerze, co może prowadzić do odczytu/zapisu plików, modyfikacji danych, wykonania poleceń systemowych, zatrzymania usługi oraz naruszenia innych dzierżawców we wspólnym wdrożeniu.

Rekomendacja

Zaleca się natychmiastową aktualizację QWED do wersji 5.1.2. Należy również ograniczyć dostęp do rejestracji kont i kluczy API oraz monitorować ruch pod kątem podejrzanych żądań do /verify/math i /verify/batch.

Powiązane podatności

Oryginalny opis (angielski, źródło NVD)

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.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS