CVE-2026-52763
ŚrednieCVSS 6.5Streszczenie
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ą.
Ocena ryzyka
Przechowywana iniekcja SQL pozwala na dowolny odczyt bazy danych, co może prowadzić do ujawnienia poufnych informacji, takich jak dane użytkowników, hasła lub inne wrażliwe dane.
Rekomendacja
Zaleca się natychmiastową aktualizację YesWiki do wersji 4.6.6 lub nowszej, która zawiera poprawkę eliminującą podatność.
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-52771Wysokie
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.
- 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-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. Prior to version 4.6.6, the recentchanges action (actions/recentchanges.php) accepts a period argument from two disjoint parameter spaces. A whitelist validates only the URL form against ['day','week','month']. The action-argument form takes the else branch with no validation, and the value flows into PageManager::getRecentlyChanged(), where it is interpolated into a WHERE time >= '...' ORDER BY time DESC clause without escaping or parameterization. UNION-based injection succeeds, the leaked rows render into the response page, so any visitor of the trigger page sees the exfiltrated data. The vulnerability provides arbitrary read of the YesWiki database to anyone who can save the trigger page. On a default install (default_write_acl='*'), this includes anonymous users, subject to the hashcash JS check on the page-edit form. Once the trigger page is saved, every subsequent view fires the injection as the SQLi is stored. Stored SQL injection is reachable through the page-edit flow, with arbitrary database read. This issue has been patched in version 4.6.6.

