CVE-2026-52771
WysokieCVSS 8.3Streszczenie
YesWiki od wersji 4.2.0 do przed 4.6.6 zawiera podatność na wstrzykiwanie SQL w ApiController::deletePage(), gdzie tag strony pobrany z bazy jest interpolowany do zapytania DELETE bez escapowania. Niskouprzywilejowany uwierzytelniony użytkownik może utworzyć stronę z tagiem będącym fragmentem SQL i wykonać dowolny SQL w bazie wiki.
Ocena ryzyka
Uwierzytelniony użytkownik z niskimi uprawnieniami może wykonywać dowolne zapytania SQL, w tym eksfiltrację danych z dowolnych tabel, co stanowi poważne naruszenie poufności i integralności danych.
Rekomendacja
Zaleca się aktualizację do wersji 4.6.6 oraz stosowanie parametryzowanych zapytań.
Inne podatności w YesWiki
Zobacz wszystkie- CVE-2026-52775Wysokie
YesWiki przed wersją 4.6.6 zawiera podatność na wstrzykiwanie SQL w funkcji ReactionManager::deleteUserReaction(), która pozwala każdemu uwierzytelnionemu użytkownikowi na wstrzyknięcie dowolnego SQL przez parametry ścieżki URL {idreaction} i {id}. Parametry są konkatenowane bezpośrednio do klauzuli SQL LIKE bez escapowania lub parametryzacji.
- CVE-2026-52774Średnie
YesWiki to system wiki napisany w PHP. Przed wersją 4.6.6, handler widżetu Bazar odzwierciedla parametr GET 'id' w atrybutach HTML używając tylko strip_tags(). Ponieważ strip_tags() nie escapuje podwójnych cudzysłowów, atakujący może wyrwać się z wartości atrybutu, wstrzyknąć handler zdarzeń, taki jak onmouseover, i wykonać dowolny JavaScript w przeglądarce ofiary. Problem jest osiągalny bez uwierzytelnienia.
- CVE-2026-52773Średnie
YesWiki to system wiki napisany w PHP. Od wersji 4.1.0 do przed 4.6.6, widok zarchiwizowanej rewizji odzwierciedla parametr GET 'time' w ukrytym polu HTML w handlers/page/show.php bez escapowania. Ponieważ MySQL koercji nieprawidłowych ciągów DATETIME, atakujący może dołączyć HTML lub JavaScript do prawidłowego znacznika czasu zarchiwizowanej rewizji, nadal załadować tę rewizję i wykonać dowolny JavaScript w przeglądarce ofiary. Podatny formularz jest renderowany tylko gdy ofiara może czytać i edytować stronę docelową.
- CVE-2026-52772Średnie
YesWiki to system wiki napisany w PHP. Przed wersją 4.6.6, szablony pól formularza Bazar nadal stosują |raw('html') do field.label / field.hint w kontekście atrybutów i treści etykiet, co powoduje trwały XSS w renderowaniu formularzy.
- CVE-2026-52770Wysokie
YesWiki przed wersją 4.6.6 zawiera podatność na nieuwierzytelnione wstrzykiwanie SQL w publicznych API listowania wpisów Bazar, w filtrach numerycznych. Wartość filtra jest escapowana, ale wstawiana do SQL bez cudzysłowów i walidacji numerycznej, co pozwala atakującemu na wstrzykiwanie wyrażeń boolowskich i wnioskowanie o zawartości bazy.
- CVE-2026-52769Wysokie
YesWiki od wersji 4.6.2 do przed 4.6.6 zawiera podatność w trasie POST /api/forms/{formId}/actor/inbox, która jest publicznie dostępna. HttpSignatureService::verifySignature() parsuje nagłówek HTTP Signature i natychmiast wykonuje serwerowe żądanie HTTP GET do podanego URL, przed jakąkolwiek weryfikacją kryptograficzną. Nieuwierzytelniony atakujący może zmusić serwer do wykonywania żądań do wewnętrznych usług, w tym metadanych chmury.
- CVE-2026-52767Wysokie
YesWiki od wersji 4.6.2 do przed 4.6.6 zawiera podatność w HttpSignatureService::verifySignature(), która sprawdza wynik funkcji openssl_verify() za pomocą luźnej negacji boolowskiej. Ponieważ PHP traktuje -1 jako prawdę, warunek !(-1) jest fałszywy, co powoduje pominięcie błędu i kontynuację przetwarzania, nawet gdy weryfikacja podpisu nie powiodła się.
- CVE-2026-52763Średnie
YesWiki to system wiki napisany w PHP. Przed wersją 4.6.6, akcja recentchanges (actions/recentchanges.php) akceptuje argument okresu z dwóch rozłącznych przestrzeni parametrów. Biała lista waliduje tylko formę URL przeciwko ['day','week','month']. Forma argumentu akcji przechodzi do gałęzi else bez walidacji, a wartość trafia do PageManager::getRecentlyChanged(), gdzie jest interpolowana do klauzuli WHERE time >= '...' ORDER BY time DESC bez escapowania lub parametryzacji. Udana iniekcja UNION-based pozwala na wyświetlenie wyciekłych wierszy w odpowiedzi, więc każdy odwiedzający stronę wyzwalającą widzi eksfiltrowane dane. Podatność zapewnia dowolny odczyt bazy danych YesWiki każdemu, kto może zapisać stronę wyzwalającą.
- CVE-2026-52762Wysokie
YesWiki przed wersją 4.6.6 zawiera podatność na przechowywane wstrzykiwanie szablonów po stronie serwera (SSTI) w funkcji szablonów semantycznych Bazar, która może eskalować do zdalnego wykonania kodu (RCE). Uwierzytelniony administrator może umieścić dowolne wyrażenia Twig w polu szablonu semantycznego, które są wykonywane podczas żądań do publicznych endpointów semantycznych.
- CVE-2026-52777Krytyczne
YesWiki to system wiki napisany w PHP. Przed wersją 4.6.6 występuje uwierzytelniona podatność na wstrzykiwanie obiektów PHP w BazarImportAction przez funkcję unserialize. Problem został naprawiony w wersji 4.6.6.
Oryginalny opis (angielski, źródło NVD)
YesWiki is a wiki system written in PHP. From version 4.2.0 to before version 4.6.6, ApiController::deletePage() interpolates a page tag retrieved from the database into a DELETE FROM …_links WHERE to_tag = '$tag' query without escaping. The page tag is attacker-controlled — the POST /api/pages/{tag} API accepts arbitrary URL-encoded values, including single quotes, and stores them. A low-privilege authenticated user can therefore create a page whose tag is a SQL fragment, make the page non-orphaned via the standard {{include page="…"}} link mechanism, and then invoke the delete endpoint to execute arbitrary SQL inside the wiki database - including time-based blind data exfiltration from any table. This issue has been patched in version 4.6.6.

