CVE-2026-52892
ŚrednieCVSS 6.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 17 - wyżej niż 17% wszystkich znanych CVE
Streszczenie
W Wekan przed wersją 9.32, REST-owe procedury obsługi w server/models/customFields.js używają sprawdzania dostępu na poziomie odczytu (Authentication.checkBoardAccess) zamiast zapisu (Authentication.checkBoardWriteAccess) dla tras modyfikujących pola niestandardowe. Członek tablicy z uprawnieniami tylko do odczytu może wywoływać procedury POST, PUT i DELETE dla /api/boards/:boardId/custom-fields oraz elementów list rozwijanych pól niestandardowych, aby tworzyć, aktualizować lub usuwać niestandardowe pola tablicy.
Ocena ryzyka
Ryzyko polega na tym, że użytkownik z ograniczonymi uprawnieniami (tylko do odczytu) może nieautoryzowanie modyfikować strukturę tablicy, co może prowadzić do naruszenia integralności danych i nieoczekiwanych zmian w konfiguracji tablicy.
Rekomendacja
Należy natychmiast zaktualizować Wekan do wersji 9.32 lub nowszej, która zawiera poprawkę wymuszającą sprawdzanie dostępu na poziomie zapisu dla tras modyfikujących pola niestandardowe.
Inne podatności w Wekan
Zobacz wszystkie- CVE-2026-55652Krytyczne
Wekan przed wersją 9.46 zawiera podatność w mechanizmie logowania przez nagłówek (header-login), gdzie funkcja getRequestIp() ufa nagłówkowi X-Forwarded-For dostarczonemu przez klienta przed rzeczywistym adresem gniazda. Pozwala to nieuwierzytelnionemu atakującemu na podszycie się pod dowolnego użytkownika, w tym administratora, poprzez wysłanie nagłówka HEADER_LOGIN_ID i uzyskanie sesji meteor_login_token.
- CVE-2026-52893Krytyczne
W Wekan przed wersją 9.32, w hooku Accounts.onCreateUser w server/models/users.js, logowanie przez OIDC jest scalane z istniejącymi kontami, gdy adres e-mail lub nazwa użytkownika OIDC pasuje do istniejącego użytkownika Wekan, bez weryfikacji własności lub sprawdzenia email_verified. Atakujący używający konta OIDC z adresem e-mail lub nazwą użytkownika ofiary może scalić swoje dane uwierzytelniające OIDC z kontem ofiary, a następnie zalogować się jako to konto.
- CVE-2026-52891Krytyczne
Wekan przed wersją 9.07 zawiera podatność na wstrzykiwanie poleceń w funkcji przesyłania awatarów. Nazwy plików dostarczone przez użytkownika są przekazywane do funkcji child_process.exec() bez odpowiedniego oczyszczenia, co umożliwia wykonanie dowolnych poleceń na serwerze poprzez znaki specjalne, takie jak backticki czy $().
- CVE-2026-25560Krytyczne
WeKan przed wersją 8.19 zawiera podatność na wstrzykiwanie filtrów LDAP w mechanizmie uwierzytelniania LDAP. Wprowadzona przez użytkownika nazwa użytkownika jest używana w filtrach wyszukiwania LDAP i wartościach DN bez odpowiedniego escapowania, co umożliwia atakującemu manipulowanie zapytaniami LDAP podczas uwierzytelniania.
- CVE-2026-68901Średnie
Wekan (wersje przed 10.38) zawiera podatność w kilku endpointach eksportu, gdzie token authToken jest pobierany z parametru zapytania i używany bez sprawdzenia, czy użytkownik istnieje. Żądanie do prywatnej tablicy z nieznanym tokenem powoduje TypeError i nieobsłużone odrzucenie, co może doprowadzić do zakończenia procesu Wekan i odmowy usługi dla wszystkich użytkowników. Wersja 10.38 dodaje zabezpieczenia 401 i opakowuje handlery funkcją safeRoute().
- CVE-2026-68900Wysokie
Wekan to open source'owa tablica kanban zbudowana w Meteor. Od wersji 8.72 do 10.23 funkcja addBoardHTMLToZip() w client/lib/exportHTML.js odczytywała tytuł i treść karty przez textContent, co dekodowało encje HTML, a następnie interpolowało titleText i allText do content.innerHTML w wyeksportowanym index.html. Członek tablicy mógł przechowywać zakodowany encją payload obsługi zdarzeń w tytule karty, który pozostawał nieaktywny na żywej tablicy, ale był ponownie parsowany i wykonywany, gdy odbiorca kliknął kartę w pobranym eksporcie HTML, umożliwiając skryptowi odczytanie i przesłanie wszystkich danych tablicy zawartych w tym eksporcie, w tym treści dodane po usunięciu członkostwa atakującego. Wersja 10.23 buduje modal z węzłami DOM i przypisuje niezaufane wartości przez textContent. Problem został naprawiony w wersji 10.23.
- CVE-2026-68899Wysokie
Wekan to open source'owa tablica kanban zbudowana w Meteor. Przed wersją 9.90 funkcja isFileValid() w models/fileValidation.js używała polecenia Unix 'file' do wykrywania MIME na podstawie zawartości, ale detectMimeFromFile() po cichu zwracała undefined, gdy ten binarny plik był niedostępny, a walidacja wracała do kontrolowanego przez atakującego fileObj.type dostarczanego przez server/routes/attachmentApi.js. Na wdrożeniach z WITH_API=true i bez pliku binarnego 'file', uwierzytelniony członek tablicy mógł oznaczyć HTML zawierający JavaScript jako image/png, ominąć niebezpieczne sprawdzenie MIME i przechowywać aktywną treść pod originem Wekan do wykonania, gdy inny użytkownik ją otworzył. Wersja 9.90 dodaje looksLikeDangerousMarkup() do inspekcji bajtów pliku i wymusza skanowanie niebezpiecznej zawartości, gdy wykrywanie MIME jest niedostępne. Problem został naprawiony w wersji 9.90.
- CVE-2026-68561Wysokie
Wekan to open source'owa tablica kanban zbudowana w Meteor. Przed wersją 9.89 druga reguła Boards.allow({ update }) w server/permissions/boards.js wywoływała canUpdateBoardSort w server/lib/utils.js, która autoryzowała każdego członka tablicy, gdy fieldNames zawierało 'sort'. Ponieważ Meteor łączy reguły allow z semantyką OR i stosuje kompletny modyfikator, członek z uprawnieniami tylko do komentarzy lub tylko do odczytu mógł wysłać jedno Boards.update z wartościami $set dla sort, members, permission i title, uczynić siebie jedynym administratorem tablicy, ujawnić prywatną tablicę i usunąć prawowitego właściciela; reguła deny dotycząca ostatniego administratora sprawdzała tylko $pull i nie blokowała całkowitego $set członków. Wersja 9.89 wymaga, aby 'sort' był jedynym modyfikowanym polem i odrzuca tablice $set członków, które usuwają ostatniego aktywnego administratora. Problem został naprawiony w wersji 9.89.
- CVE-2026-68560Wysokie
Wekan to open source'owa tablica kanban zbudowana w Meteor. Przed wersją 9.75, models/fileValidation.js interpolował przesłany fileObj.path do skonfigurowanego przez administratora externalCommandLine w miejscu {file} i wykonywał wynik przez asyncExec, który jest promisify(exec) i wywołuje `/bin/sh -c`. Na wdrożeniach ze skonfigurowanym zewnętrznym skanerem, uwierzytelniony użytkownik mogący przesłać załącznik mógł umieścić metaznaki powłoki, takie jak podstawienia poleceń, w nazwie pliku i wykonać polecenia jako proces serwera Wekan. Wersja 9.75 dodaje shellQuote() i przekazuje ścieżkę pliku jako argument w pojedynczych cudzysłowach POSIX, aby metaznaki powłoki nie mogły uciec z miejsca {file}. Problem został naprawiony w wersji 9.75.
- CVE-2026-68559Średnie
Wekan (wersje od 9.57 do 9.74) zawiera podatność w trasie /api/boards/:boardId/exportExcel, gdzie funkcja autoryzacyjna exporterExcel.canExport(user) nie jest oczekiwana (brak await). Zwracana Promise jest zawsze prawdziwa, więc exporterExcel.build(res) wykonuje się nawet gdy board.isVisibleBy(user) odmawia dostępu. Pozwala to każdemu uwierzytelnionemu nie-członkowi na pobranie tytułów kart, opisów, list, swimlanes, członków i metadanych prywatnych tablic. Poprawka w wersji 9.74.
Oryginalny opis (angielski, źródło NVD)
Wekan is open source kanban built with Meteor. Prior to 9.32, Wekan REST handlers in server/models/customFields.js use read-level Authentication.checkBoardAccess instead of write-level Authentication.checkBoardWriteAccess for mutating custom-field routes. A read-only board member can call POST, PUT, and DELETE handlers for /api/boards/:boardId/custom-fields and custom-field dropdown items to create, update, or delete board custom fields. This issue is fixed in version 9.32.

