CVE-2026-52766
KrytyczneCVSS 9.1Streszczenie
YesWiki przed wersją 4.6.6 zawiera podatność w akcji wiki {{erasespamedcomments}}, która bez autoryzacji usuwa dowolne strony wiki na podstawie tablicy suppr[] z żądania POST. Domyślny model ACL pozwala każdemu użytkownikowi z prawem zapisu na usuwanie stron, w tym strony głównej i stron administratorów.
Ocena ryzyka
Nieautoryzowani użytkownicy (domyślnie wszyscy) mogą trwale usuwać dowolne strony wiki, co prowadzi do utraty danych i zakłócenia działania serwisu.
Rekomendacja
Zaleca się aktualizację do wersji 4.6.6 oraz przegląd konfiguracji ACL, aby ograniczyć uprawnienia do zapisu.
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-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.
Oryginalny opis (angielski, źródło NVD)
YesWiki is a wiki system written in PHP. Prior to version 4.6.6, the {{erasespamedcomments}} wiki action (actions/EraseSpamedCommentsAction.php) accepts a suppr[] array from POST and deletes every wiki page whose tag appears in that array, with no authorization check anywhere in the action body or in the page-deletion path it invokes. Combined with YesWiki's allow-by-default action ACL model, any user who has page write access, which is the default for everyone (default_write_acl='*') on a fresh install can permanently delete arbitrary wiki pages, including the front page, admin pages, and pages owned by other users. This issue has been patched in version 4.6.6.

