CVE-2026-12949
KrytyczneCVSS 9.8Streszczenie
Wtyczka Wishlist Member dla WordPressa do wersji 3.34.1 włącznie jest podatna na przejęcie konta z powodu niewystarczającej weryfikacji autentyczności danych. Funkcja wpm_register() waliduje cookie rejestracyjne tylko względem parametru GET reg, akceptując parametry POST mergewith i POST wpm_id bez weryfikacji, czy identyfikator użytkownika mergewith odnosi się do tymczasowego lub niekompletnego rejestrującego powiązanego z bieżącą transakcją rejestracji. Umożliwia to nieuwierzytelnionym atakującym przejęcie dowolnego istniejącego konta WordPress, w tym kont administratora, poprzez podanie dowolnego numerycznego identyfikatora użytkownika jako wartości mergewith, co powoduje, że wp_update_user() nadpisuje nazwę użytkownika, hasło, adres e-mail, imię i nazwisko docelowego konta wartościami kontrolowanymi przez atakującego, przy jednoczesnym tłumieniu powiadomień e-mail o zmianie hasła i adresu e-mail.
Ocena ryzyka
Atakujący może całkowicie przejąć konto administratora, co prowadzi do pełnej eskalacji uprawnień i przejęcia kontroli nad całą instalacją WordPressa. Może to skutkować kradzieżą danych, defacementem strony lub wykorzystaniem serwera do dalszych ataków.
Rekomendacja
Niezwłocznie zaktualizuj wtyczkę Wishlist Member do najnowszej dostępnej wersji, która zawiera poprawkę. Jeśli aktualizacja nie jest możliwa, rozważ tymczasowe wyłączenie wtyczki do czasu wdrożenia poprawki.
Oryginalny opis (angielski, źródło NVD)
The Wishlist Member plugin for WordPress is vulnerable to Account Takeover via Insufficient Verification of Data Authenticity in versions up to and including 3.34.1. This is due to the wpm_register() function validating the registration cookie only against the GET reg parameter while accepting the POST mergewith and POST wpm_id parameters without verifying that the mergewith user ID references a temporary or incomplete registrant that is bound to the current registration transaction. This makes it possible for unauthenticated attackers to take over any existing WordPress account — including administrator accounts — by supplying an arbitrary user's numeric ID as the mergewith value, which causes wp_update_user() to overwrite the target account's username (additionally written via a direct $wpdb UPDATE), password, email address, first name, and last name with attacker-controlled values, while WordPress password and email change notification emails are explicitly suppressed. When wpm_id references a non-existent membership level, no role key is added to the update payload, causing wp_update_user() to preserve the target user's existing role — including administrator — making full privilege escalation a direct consequence of the takeover.

