Jeśli otrzymali Państwo ode mnie wiadomość e-mail kierującą na tę stronę, to dlatego, że Państwa witryna najwyraźniej korzysta z wersji wtyczki Ultimate Member (wtyczki członkostwa i profili użytkowników dla WordPressa, od Ultimate Member, która w plikach znajduje się w /wp-content/plugins/ultimate-member/) mieszczącej się w zakresie dotkniętym znanym problemem bezpieczeństwa. Ta strona wyjaśnia, na czym polega problem, jak ustalić, czy dotyczy Państwa witryny, jak odczytać wersję, nie dając się zmylić, i do jakiej wersji zaktualizować.

Problemem jest CVE-2026-19423, nieuwierzytelniona słabość umożliwiająca eskalację uprawnień w formularzach rejestracji i profilu wtyczki. Dotyczy wersji Ultimate Member od 2.6.7 do 2.12.1 i została naprawiona w wersji 2.13.0, wydanej 24 sierpnia 2026 r. Jeśli używają Państwo wersji z tego zakresu, proszę zaktualizować Ultimate Member do 2.13.0 lub nowszej. Dla tego problemu nie opublikowano oceny CVSS (został on nadany przez WPScan bez wektora ważności), więc żadnej nie zacytuję, i nie jest mi znany żaden publiczny kod exploita.

Wersje starsze niż 2.6.7 nie są dotknięte tym problemem, i chcę być w tym precyzyjny, zamiast pozwolić, by biuletyn brzmiał szerzej, niż jest. Nie jest to wada obecna od początków wtyczki: ścieżka kodu, na której się opiera, została wprowadzona w 2.6.7. Instalacja starsza niż 2.6.7 nie jest tu więc celem i nie pisałem do witryn z taką wersją. Jeśli okaże się, że Państwa wersja jest niższa niż 2.6.7, mogą Państwo pominąć ten biuletyn w odniesieniu do tego problemu (choć utrzymywanie tak zapóźnionej wtyczki w aktualności warto rozważyć z innych powodów).

Przede wszystkim zastrzeżenie, które decyduje o tym, jak bardzo dotyczy to Państwa witryny, bo wolę powiedzieć to wprost, niż pozwolić, by biuletyn brzmiał groźniej, niż jest: ten problem sięga tylko witryny, w której jeden z formularzy rejestracji lub profilu Ultimate Member oferuje osobie wypełniającej go wybór roli, i w której rejestracja jest otwarta dla wszystkich. Standardowa konfiguracja Ultimate Member nie umieszcza wyboru roli w formularzu rejestracji (administrator musi go dodać celowo), więc wiele witryn korzystających z dotkniętej wersji w ogóle nie jest narażonych. Mogę odczytać wersję wtyczki z publicznego pliku, ale nie widzę, jak zbudowane są Państwa formularze ani czy rejestracja jest otwarta, dlatego ten biuletyn jest ostrzeżeniem zapobiegawczym, a nie potwierdzonym ustaleniem dotyczącym Państwa witryny.

Słowo o pilności, bo to biuletyn warunkowy. Jeśli żaden z formularzy Ultimate Member nie pozwala odwiedzającemu wybrać roli, aktualizacja jest zwykłą konserwacją wtyczek. Jeśli któryś pozwala, a rejestracja jest otwarta, proszę potraktować aktualizację priorytetowo: w takiej konfiguracji odwiedzający rejestrujący konto dla siebie mógłby przypisać temu kontu podwyższone uprawnienia, potencjalnie aż do poziomu odpowiadającego administratorowi, bez żadnego wcześniejszego dostępu do witryny. Tam, gdzie to się stosuje, jest to poważny skutek, i dlatego piszę, zamiast odłożyć sprawę jako mało istotną; stosuje się jednak tylko przy powyższych warunkach, a aktualizacja usuwa problem niezależnie od nich.

To wada wtyczki, a nie rdzenia WordPressa. W pełni aktualny WordPress nie chroni Państwa, jeśli sama wtyczka Ultimate Member jest w dotkniętej wersji.

Czy ta wiadomość jest wiarygodna?

Tak. To biuletyn w dobrej wierze, w ramach odpowiedzialnego ujawniania, od niezależnego badacza bezpieczeństwa. Nie proszę o pieniądze, hasła ani dostęp do witryny i nie próbowałem się do niej włamać, zarejestrować się na niej ani niczego wykorzystać.

Jedyne, co zrobiłem, to obejrzałem strony i pliki, które Państwa witryna udostępnia każdemu odwiedzającemu (tak samo publicznie jak stronę główną), i zanotowałem numer wersji, który wtyczka publikuje. W szczególności nie utworzyłem konta, nie wysłałem żadnego formularza rejestracji ani profilu, nie logowałem się ani nie wysłałem niczego do dotkniętej funkcji. Nic w tej kontroli nie dotyka Państwa danych, panelu administracyjnego ani żadnej prywatnej części witryny (więcej w sekcji Co zrobiłem, a czego nie poniżej).

Jeśli chcą Państwo zweryfikować, kim jestem, proszę zajrzeć do danych kontaktowych na dole tej strony oraz na stronę O mnie.

Dlaczego to ważne

Ultimate Member buduje strony rejestracji, logowania i profili członków na bardzo wielu witrynach WordPress. Gdy ktoś się rejestruje, wtyczka decyduje, jaką rolę ma otrzymać nowe konto. W formularzu oferującym wybór roli powinna akceptować tylko te role, na które dany formularz został skonfigurowany.

W dotkniętych wersjach, gdy lista dozwolonych ról takiego formularza okazuje się pusta, wtyczka nie odrzuca już roli przesłanej przez odwiedzającego. Zamiast tego zachowuje tę wartość i sprawdza ją wyłącznie względem ról, które witryna w ogóle posiada, a nie względem ról, które formularz miał oferować. Konsekwencją jest to, że odwiedzający rejestrujący konto dla siebie mógł skierować je ku roli, której nigdy nie powinien otrzymać, aż do poziomu odpowiadającego administratorowi.

Warunek wstępny, powtórzony, bo to część najłatwiejsza do błędnego odczytania w obie strony: potrzebny jest wybór roli w publicznym formularzu oraz otwarta rejestracja. Żadne z nich nie jest ustawieniem domyślnym. Standardowy formularz rejestracji Ultimate Member nie zawiera pola roli, więc na typowej instalacji nie ma tu czego osiągnąć. Tam, gdzie administrator dodał pole roli i pozostawił rejestrację otwartą, przeszkoda jest tylko tak wysoka, jak pytanie, kto może wysłać ten formularz, a przy otwartej rejestracji jest to każdy.

Opisuję to na poziomie, jakiego operator witryny potrzebuje, by działać, i nie dalej. Nie publikuję szczegółów, które pozwoliłyby komuś to odtworzyć, i proszę nie próbować tego przeciwko własnej witrynie ani cudzej. Odczytanie numeru wersji i sprawdzenie własnych formularzy, jak opisano poniżej, mówi wszystko, czego potrzeba, by zdecydować, co robić.

Jeśli mój e-mail przywoływał ten problem, oznacza to, że wersja zgłaszana przez Państwa witrynę mieści się w zakresie od 2.6.7 do 2.12.1. Nie testowałem, czy akurat Państwa witryna jest podatna, i nie widzę, jak zbudowane są formularze. Jedyne, co zaobserwowałem, to wersja.

Czy mnie to dotyczy?

Decydują o tym dwa pytania, w tej kolejności.

Po pierwsze: czy któryś z formularzy oferuje wybór roli, przy otwartej rejestracji?

To pytanie decydujące i tylko Państwo mogą na nie odpowiedzieć, bo zależy od tego, jak zbudowane są formularze, czego z zewnątrz nie widać. Sprawdzenie jest całkowicie bezpieczne i jest celem tej strony.

  1. W kokpicie WordPressa proszę przejść do Ultimate Member, a następnie Formularze (Forms) i otworzyć po kolei każdy formularz rejestracji i profilu.
  2. Proszę przejrzeć pola każdego formularza w poszukiwaniu pola wyboru roli (listy rozwijanej lub zestawu opcji pozwalających osobie rejestrującej się wybrać rolę, czasem opisanego „Rola”). Na większości witryn takiego pola nie ma, bo standardowy formularz rejestracji go nie zawiera.
  3. Proszę sprawdzić, czy rejestracja jest otwarta: Ustawienia, następnie Ogólne, następnie Członkostwo, pole wyboru „Każdy może się zarejestrować” (rdzeń WordPressa), oraz czy formularz rejestracji Ultimate Member jest osiągalny dla odwiedzających.
  4. Jeśli żaden formularz nie oferuje wyboru roli, ten problem nie sięga Państwa witryny, nawet przy dotkniętej wersji, choć aktualizacja i tak jest warta wykonania jako zwykła konserwacja.
  5. Jeśli którykolwiek formularz oferuje wybór roli, a rejestracja jest otwarta, proszę potraktować aktualizację priorytetowo (zob. Jak zaktualizować). Jeśli nie mogą Państwo zaktualizować od razu, krokiem przejściowym jest usunięcie pola roli z każdego publicznie dostępnego formularza rejestracji lub profilu albo zamknięcie publicznej rejestracji do czasu aktualizacji. Właściwą poprawką jest aktualizacja.

Proszę nie próbować odtwarzać problemu przeciwko własnej witrynie ani cudzej; nie jest to potrzebne do odpowiedzi na powyższe pytanie.

Po drugie: której wersji Państwo używają?

Nie muszą Państwo wierzyć mi na słowo. Są dwa publiczne sposoby odczytania wersji i jeden w kokpicie, i powinny się zgadzać.

Z panelu administracyjnego WordPressa (rozstrzygające):

  1. Proszę zalogować się do kokpitu WordPressa (zwykle pod adresem yourdomain.com/wp-admin).
  2. Proszę przejść do Wtyczki, a następnie Zainstalowane wtyczki.
  3. Proszę znaleźć Ultimate Member, pozycję, której katalogiem jest ultimate-member, i zanotować wersję widoczną pod jej nazwą.

Z publicznego manifestu (bez logowania): proszę otworzyć

yourdomain.com/wp-content/plugins/ultimate-member/readme.txt

w przeglądarce i odczytać wiersz Stable tag: blisko początku. To jest publiczne źródło, które odczytałem. Jeśli ten adres zwróci „nie znaleziono”, proszę spróbować README.txt wielkimi literami; niektóre hostingi rozróżniają wielkość liter, a nieliczne pakiety dostarczają plik zapisany wielkimi literami.

Ze źródła strony (bez logowania): proszę wyświetlić źródło strony głównej i poszukać własnych arkuszy stylów wtyczki dokładnie pod tymi ścieżkami:

/wp-content/plugins/ultimate-member/assets/css/um-styles.min.css?ver=...
/wp-content/plugins/ultimate-member/assets/css/um-profile.min.css?ver=...

Numer ?ver= dołączony do tych plików to własna wersja wtyczki. Ultimate Member domyślnie ładuje te arkusze stylów na każdej stronie frontowej, niezależnie od tego, czy strona pokazuje strefę członkowską, więc strona główna zwykle wystarcza.

Pułapka, której należy tu uniknąć, a łatwo w nią wpaść. Ultimate Member dostarcza dołączone kopie kilku bibliotek zewnętrznych wewnątrz własnego katalogu wtyczki, a każda z nich nosi własny, zupełnie niezwiązany numer wersji. Źródło strony może pokazywać bibliotekę przycinania obrazów z ?ver=1.6.1, Font Awesome z ?ver=6.5.2 czy Select2 z ?ver=3.6.2, wszystkie na ścieżkach zaczynających się od katalogu wtyczki Ultimate Member. Operator, który przeszuka źródło strony pod kątem katalogu wtyczki i odczyta pierwszą napotkaną wartość ?ver=, łatwo może odejść z jednym z tych numerów, który nie ma nic wspólnego z wersją wtyczki. Wersję należy odczytywać wyłącznie z własnych arkuszy um- wtyczki (um-styles, um-profile, um-account itp.), a każde inne ?ver= na stronie ignorować. Jeśli ze źródła strony w ogóle nie da się uzyskać czytelnego numeru, jest to częste i o niczym nie świadczy: wtyczki buforujące i optymalizacyjne rutynowo usuwają wartość ?ver=; proszę wtedy skorzystać z readme.txt lub ekranu administracyjnego.

Następnie proszę zastosować tę regułę, pamiętając, że wersje porównuje się numerycznie, a nie alfabetycznie, więc 2.12.1 jest nowsza niż 2.6.7, choć „12” jako tekst wygląda na mniejsze niż „6”:

  • od 2.6.7 do 2.12.1: dotknięta, z zastrzeżeniem powyższego pytania o formularze. Proszę zaktualizować do 2.13.0 lub nowszej.
  • 2.13.0 lub nowsza: już naprawiona w zakresie tego problemu. Najlepszym ruchem jest wzięcie najnowszej dostępnej wersji.
  • Cokolwiek starszego niż 2.6.7: niedotknięte tym problemem. Aktualizacja i tak jest warta wykonania jako zwykła konserwacja.

Jak zaktualizować

Wtyczka jest bezpłatna, nadal publikowana i aktywnie utrzymywana, więc poprawka to zwykła aktualizacja. Najbezpieczniejsza droga to aktualizacja przez sam WordPress, po wcześniejszym wykonaniu kopii zapasowej:

  1. Proszę wykonać kopię zapasową witryny (pliki i bazę danych) przed wprowadzeniem zmian. Większość dostawców hostingu oferuje kopie jednym kliknięciem, można też użyć wtyczki do kopii zapasowych WordPressa.
  2. W panelu administracyjnym WordPressa proszę przejść do Kokpit, a następnie Aktualizacje, albo Wtyczki, a następnie Zainstalowane wtyczki. Jeśli aktualizacja Ultimate Member jest na liście, proszę ją stąd zainstalować.
  3. Jeśli wolą Państwo wiersz poleceń, WP-CLI robi to samo: wp plugin update ultimate-member (polecenie używa nazwy katalogu, nie nazwy wyświetlanej).
  4. Jeśli aktualizacja się nie pojawia, najnowsze wydanie można pobrać bezpośrednio ze strony wtyczki w katalogu WordPress.org, Ultimate Member, i zaktualizować przez Wtyczki, następnie Dodaj nową wtyczkę, następnie Wyślij wtyczkę na serwer.
  5. Po aktualizacji proszę potwierdzić nowy numer wersji (2.13.0 lub nowszy) powyższymi krokami i zarejestrować konto testowe (lub sprawdzić istniejące procesy członkostwa i rejestracji), aby upewnić się, że nadal działają zgodnie z oczekiwaniami.

Przy okazji warto potwierdzić, że rdzeń WordPressa i pozostałe wtyczki są aktualne, bo ta sama zasada dotyczy wszystkich.

Po aktualizacji: czy to już zostało użyte przeciwko Państwu?

Aktualizacja do 2.13.0 lub nowszej zamyka problem i dla wielu witryn to całe zadanie. Ta strona jest ostrzeżeniem zapobiegawczym, nie raportem o incydencie: nie mam wglądu w to, czy na Państwa witrynie coś się wydarzyło, i nie sprawdzałem tego.

Jedno działanie następcze warto wykonać, i jest ono uzależnione od tego samego pytania o formularze. Ponieważ skutkiem tego problemu, tam gdzie się stosuje, jest konto o podwyższonych uprawnieniach, to jeśli witryna miała formularz rejestracji lub profilu z wyborem roli, gdy rejestracja była otwarta, a Państwo używali dotkniętej wersji, warto potwierdzić, że nikt nie użył go do utworzenia konta, którego być nie powinno:

  • Proszę przejrzeć konta użytkowników, zwłaszcza administratorów. W Użytkownicy, a następnie Wszyscy użytkownicy, proszę przefiltrować po roli Administrator (i innych rolach o wysokich uprawnieniach) i poszukać kont, których Państwo nie rozpoznają, lub kont utworzonych w okresie używania dotkniętej wersji albo po nim. Szczególną uwagę warto zwrócić na niedawno zarejestrowanych użytkowników, których rola jest wyższa niż zwykłego członka.
  • Jeśli znajdą Państwo konto, którego nie da się wyjaśnić, proszę potraktować je jak każde inne podejrzenie nieautoryzowanego dostępu: usunąć je lub obniżyć mu rolę, wymusić reset haseł administratorów, a jeśli organizacja ma zespół bezpieczeństwa IT, włączyć go w sprawę.
  • Jeśli wszystko wygląda tak, jak powinno, a zwłaszcza jeśli żaden formularz w ogóle nie oferował wyboru roli, sama aktualizacja wystarczy.

Dla jasności co do ram: to autokontrola, a nie stwierdzenie, że witryna została zaatakowana. Ten biuletyn opiera się na numerze wersji, a nie na jakimkolwiek dowodzie incydentu.

Co zrobiłem, a czego nie

Aby być w pełni przejrzystym co do kontroli stojącej za moim e-mailem: czytałem wyłącznie pliki, które Państwa witryna i tak udostępnia każdemu odwiedzającemu, konkretnie stronę główną i zapisane w niej adresy arkuszy stylów Ultimate Member oraz publiczny readme.txt wtyczki wewnątrz wp-content/plugins/ultimate-member/. Nie uzyskiwałem dostępu do panelu administracyjnego WordPressa, bazy danych, konfiguracji formularzy ani żadnej prywatnej części witryny.

W szczególności nigdy nie utworzyłem konta, nie wysłałem formularza rejestracji ani profilu, nie logowałem się ani nie wysłałem niczego do dotkniętej funkcji. Nic nie zostało wysłane, przetestowane ani wykorzystane. To tutaj istotne, bo wysłanie rejestracji jest bliskie dokładnie tej czynności, której dotyczy ten problem, więc „nie dotknąłem tego” stanowi całą różnicę między ujawnieniem a włamaniem.

Celowo nie publikuję też szczegółów, które pomogłyby komuś wykorzystać ten problem. Powyższy opis zatrzymuje się na poziomie, jakiego potrzebuje operator witryny, i nie podaję odnośników do żadnego kodu proof-of-concept.

To obserwacja oparta na wersji: Państwa witryna zgłasza wersję w zakresie od 2.6.7 do 2.12.1. Nie jest to stwierdzenie, że witryna była podatna w chwili mojej kontroli. Ponieważ problem zależy od tego, jak zbudowane są formularze i czy rejestracja jest otwarta (czego nie widzę), witryna w dotkniętym zakresie może wcale nie być narażona, a witryna w tym zakresie może być dodatkowo chroniona innymi środkami, na przykład zaporą aplikacji internetowych lub poprawką przeniesioną wstecz. Jeśli już Państwo zaktualizowali lub w inny sposób usunęli problem, żadne działanie nie jest potrzebne, i przepraszam za zamieszanie.

Nie mam webmastera / utknąłem

Jeśli nie są Państwo osobą utrzymującą witrynę, proszę przekazać tę stronę temu, kto to robi (deweloperowi, agencji lub dostawcy hostingu). Szybko rozpozna powyższe kroki.

Jeśli utrzymują Państwo witrynę samodzielnie i utknęli, chętnie bezpłatnie wskażę właściwy kierunek. Proszę o kontakt przy użyciu danych poniżej.

Kontakt

Evan Harris, badacz bezpieczeństwa

Kontaktuję się w sprawach takich jak ta wyłącznie po to, by pomóc operatorom zabezpieczyć ich witryny. Jeśli wolą Państwo nie być ponownie kontaktowani, proszę dać mi znać, a uszanuję to.

Źródła

Oficjalne biuletyny i śledzenie

Producent / wtyczka