Wtyczka bezpieczeństwa WordPress ujawniała prywatne dane subskrybentom (CVE-2025-11705) - Security Bez Tabu

Wtyczka bezpieczeństwa WordPress ujawniała prywatne dane subskrybentom (CVE-2025-11705)

Wprowadzenie do problemu / definicja luki

W popularnej wtyczce Anti-Malware Security and Brute-Force Firewall (GOTMLS) dla WordPressa wykryto podatność CVE-2025-11705, która umożliwia użytkownikom o niskich uprawnieniach (np. „Subscriber”) odczyt dowolnych plików na serwerze. W praktyce oznacza to możliwość wykradzenia m.in. zawartości wp-config.php (dane dostępowe do bazy), kluczy/saltów oraz innych prywatnych plików. Luka dotyczy wersji ≤ 4.23.81 i została poprawiona w 4.23.83 z 15 października 2025 r. Szacuje się, że wtyczka działa na 100 000+ witrynach.

W skrócie

  • CVE-2025-11705: brak weryfikacji uprawnień (missing capability check) w akcjach AJAX prefiksowanych GOTMLS_. Efekt: arbitrary file read dla zalogowanych użytkowników (od poziomu Subscriber).
  • Zakres: wszystkie wersje do 4.23.81 włącznie.
  • Łatka: wydana 15.10.2025 w wersji 4.23.83 – dodano właściwą kontrolę uprawnień.
  • Eksploatacja: na moment publikacji brak oznak ataków w naturze, ale po ujawnieniu podatność może zostać szybko zaadaptowana przez napastników.
  • Skala: ~100 000 aktywnych instalacji; dzienniki WordPress.org wskazują tysiące pobrań po wydaniu poprawki, co sugeruje, że część witryn wciąż może pozostawać podatna.

Kontekst / historia / powiązania

Zgłoszenie trafiło do zespołu Wordfence (Threat Intelligence) na początku października; 14 października przekazano je dalej przez WordPress.org Security Team do autora wtyczki. Dzień później pojawiło się wydanie 4.23.83 z poprawką. Publiczne ujawnienie – 29 października 2025 r. – opisało wektor i ryzyko dla serwisów z otwartą rejestracją użytkowników.

Analiza techniczna / szczegóły luki

  • Źródło problemu: brak kontroli uprawnień (CWE-862) w funkcji GOTMLS_ajax_scan() i pokrewnych akcjach AJAX GOTMLS_*. Weryfikacja opierała się na noncie, który użytkownik o niskich uprawnieniach mógł legalnie pozyskać, co pozwalało obejść intencję ograniczenia dostępu.
  • Skutek: zalogowany subskrybent mógł odczytać dowolny plik dostępny z poziomu procesów PHP – w tym wp-config.php, klucze/solty, logi, kopie konfiguracji itp. W konsekwencji możliwy jest dostęp do bazy danych i eksfiltracja skrótów haseł, e-maili, metadanych, treści wpisów.
  • Poprawka: w 4.23.83 dodano prawidłową weryfikację kompetencji użytkownika (m.in. nową funkcję walidującą użytkownika), co blokuje nieautoryzowane wywołania akcji.

Praktyczne konsekwencje / ryzyko

  • Eskalacja dostępu pośrednia: odczyt wp-config.php → poświadczenia bazy → dostęp do tabel użytkowników → pętle resetów/masowe logowania, phishing ukierunkowany (np. na redaktorów/adminów).
  • Wycieki danych: e-maile, hash’e haseł, klucze i inne pliki konfiguracyjne. Ryzyko naruszeń RODO, jeżeli w bazie są dane osobowe.
  • Niski próg ataku: wystarczy konto subskrybenta, które wiele stron udostępnia przez otwartą rejestrację (komentarze, newslettery, membership).

Rekomendacje operacyjne / co zrobić teraz

  1. Zaktualizuj wtyczkę do ≥ 4.23.83 na wszystkich instancjach. Zweryfikuj, czy środowisko nie utrzymuje klonów/stagingów ze starszą wersją.
  2. Wymuś rotację sekretów: po aktualizacji zmień hasło do bazy, odśwież klucze/salty w wp-config.php (pole AUTH_KEY itp.) i rozważ reset haseł wybranym rolom, jeśli pliki mogły zostać odczytane.
  3. Audyt logów: przejrzyj dzienniki serwera/WordPress (AJAX, logowania) pod kątem podejrzanych wywołań admin-ajax.php związanych z akcjami GOTMLS_* oraz nietypowych pobrań plików.
  4. Ogranicz rejestrację (tymczasowo) lub podnieś tarcie: wymagaj weryfikacji e-mail, moderacji kont, włącz reCAPTCHA dla rejestracji i logowania. (Dobra praktyka, niezależnie od tej luki.)
  5. Zasady least privilege: oceń, czy rola „Subscriber” faktycznie jest potrzebna i jakie endpointy AJAX są dostępne zalogowanym użytkownikom – szczególnie w wtyczkach bezpieczeństwa.
  6. Monitoruj komunikaty dostawców (Wordfence/Patchstack) i skonfiguruj automatyczne aktualizacje bezpieczeństwa przynajmniej dla krytycznych/średnich luk.

Różnice / porównania z innymi przypadkami (jeśli dotyczy)

Ta luka wymaga autoryzacji (loginu) i daje odczyt plików – to inny profil ryzyka niż ostatnie przypadki pełnych przejęć przez auth bypass/RCE. W praktyce jednak odczyt wp-config.php bywa wystarczający do dalszej kompromitacji (kradzież poświadczeń DB → pivot). Wordfence od miesięcy sygnalizuje, że wektorem nr 1 ekosystemu WordPress są wtyczki i ich endpointy (AJAX/REST), nie zaś sam core.

Podsumowanie / kluczowe wnioski

  • Zaktualizuj GOTMLS do 4.23.83+ i zrotuj sekrety – to minimalny bezpieczny stan.
  • Sprawdź logi pod kątem nietypowych wywołań AJAX GOTMLS_* oraz potencjalnego wycieku wp-config.php.
  • Zamknij drzwi dla nadużyć subskrybenta: ogranicz otwartą rejestrację, dodaj CAPTCHA, przegląd ról i uprawnień.
  • Utrzymuj automatyczne aktualizacje i subskrybuj feedy bezpieczeństwa (Wordfence/Patchstack).

Źródła / bibliografia

  • BleepingComputer: streszczenie luki, wektor, wersje, status eksploatacji (29.10.2025). (BleepingComputer)
  • WordPress.org (karta wtyczki): wersja naprawcza 4.23.83, statystyki instalacji/pobrań. (WordPress.org)
  • Wordfence Threat Intelligence (rekord podatności): opis AFD (arbitrary file read), atrybucja, szczegóły techniczne. (Wordfence)
  • Wordfence (artykuł TI): oś czasu zgłoszenia/poprawki i zakres oddziaływania (~100k witryn). (Wordfence)
  • Patchstack Database: rekord podatności i zalecenie aktualizacji do 4.23.83+. (Patchstack)