CVE-2026-55585
WysokieCVSS 8.8Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 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
- CVE-2026-120308Krytyczne
W Beta9 dzierżawca może podpiąć wolumen podczas wdrażania funkcji, endpointu lub kolejki zadań. Gateway buduje ścieżkę hosta łącząc katalog główny wolumenów współdzielonych, nazwę workspace i identyfikator wolumenu ze stubu, bez weryfikacji, czy wolumen należy do danego workspace. Segmenty katalogu nadrzędnego w identyfikatorze pozwalają zredukować ścieżkę do katalogu głównego systemu plików workera, który jest montowany w sandboxie z prawem zapisu, umożliwiając odczyt i zapis plików workera, w tym wolumenów innych dzierżawców.
- CVE-2026-120307Krytyczne
Worker Beta9 udostępnia API plików sandboxa spoza kontenera. Funkcja getHostPathFromContainerPath przekształca ścieżkę kontenera dzierżawcy na ścieżkę workera; jeśli nierozwiązana ścieżka zaczyna się od celu montowania (w tym domyślnego /tmp/.beta9), reszta jest dołączana do źródła montowania za pomocą filepath.Join, co czyści segmenty katalogu nadrzędnego po sprawdzeniu prefiksu. Odpowiednio długi ciąg takich segmentów wskazuje dowolną ścieżkę absolutną na workerze, a ścieżka niepasująca do żadnego montowania jest otwierana w systemie plików workera, podążając za dowiązaniami symbolicznymi. Dzierżawca z tokenem workspace i działającym sandboxem może czytać, zapisywać, listować i usuwać pliki na workerze jako root, w tym pliki innych dzierżawców.
- CVE-2026-120306Krytyczne
Beta9 zamienia każdą komendę powłoki w definicji obrazu dzierżawcy na linię RUN w Dockerfile i wykonuje ją za pomocą Buildah na workerze budowania. Obraz workera ustawia BUILDAH_ISOLATION=chroot, a żadne wywołanie buildah nie przekazuje --isolation, więc krok zmienia tylko katalog główny systemu plików, zachowując przestrzenie nazw PID, sieci, IPC i użytkownika workera, działając jako uid 0 z CAP_DAC_OVERRIDE. PID 1 w tym procfs to entrypoint workera, więc /proc/1/root to system plików kontenera workera i jest zapisywalny, zawierając binaria runc, buildah i runsc, token konta usługi Kubernetes oraz katalogi hosta zamontowane w podzie. Pody workera są uprzywilejowane, a warstwowe budowy Clip v2 są domyślne, więc dzierżawca z tokenem workspace może to osiągnąć, przesyłając jedną budowę obrazu.
- CVE-2026-120227Krytyczne
W WAVLINK WN701AE M01AE_V260105 wykryto podatność w funkcji del_staticrule pliku static_route_setting.sh komponentu ioos Web Backend. Manipulacja argumentem rule_name prowadzi do wstrzyknięcia poleceń systemu operacyjnego. Zdalne wykorzystanie podatności jest możliwe, a exploit jest publicznie dostępny i może być użyty.
- CVE-2026-120225Krytyczne
W urządzeniu Oray Pugongying X5 Pro do wersji 7.6.1 funkcja config_restore_ex w pliku /etc/openwrt_release jest podatna na przejście ścieżki względnej poprzez manipulację argumentem filename. Atak można zainicjować zdalnie, a publiczny exploit jest już dostępny.
- CVE-2026-120224Krytyczne
W urządzeniu Oray Pugongying X5 Pro do wersji 7.6.1 funkcje run_apis_by_json/run_async_task w komponencie API Authorization pozwalają na obejście kontroli autoryzacji. Atak można przeprowadzić zdalnie, a publiczny exploit został udostępniony.
- CVE-2026-120198Krytyczne
W urządzeniu WAVLINK WL-WN530BE1-A (wersja V251117) wykryto podatność w funkcji con_check_read_finish w pliku /protocol.csp. Manipulacja argumentem group_name/IP-FROM prowadzi do wstrzyknięcia poleceń. Atak można przeprowadzić zdalnie, a exploit został publicznie ujawniony.
- CVE-2026-120197Krytyczne
W urządzeniu WAVLINK WL-WN530HG4B (wersja M_V260724) wykryto podatność w funkcji port_forward w pliku /cgi-bin/wapi.cgi. Manipulacja argumentem Name prowadzi do wstrzyknięcia poleceń systemu operacyjnego. Atak można przeprowadzić zdalnie, a publiczny exploit jest już dostępny.
- CVE-2026-120196Krytyczne
W urządzeniu WAVLINK WN579X3-D (wersja V250402) wykryto podatność w funkcji port_forward w pliku /cgi-bin/wapi.cgi. Manipulacja argumentem Name prowadzi do wstrzyknięcia poleceń systemu operacyjnego. Atak można przeprowadzić zdalnie, a exploit jest publicznie dostępny.
- CVE-2026-120195Krytyczne
W urządzeniu WAVLINK WL-WN579A3-A (wersja 2026-03-10-94f93d4) wykryto podatność w funkcji set_wzdgwMesh w pliku /cgi-bin/adm.cgi, w komponencie Initial Setup Wizard. Manipulacja argumentem wlan_ssid prowadzi do wstrzyknięcia poleceń systemu operacyjnego. Atak można przeprowadzić zdalnie, a exploit został publicznie ujawniony.
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

