Przejdź do treści
Krytyczna eskalacja uprawnień w ACF Extended: kiedy formularz rejestracji może dać atakującemu admina
Magdalena Wiśniewska
Magdalena Wiśniewska 19 January 2026 · 5 min czytania

Krytyczna eskalacja uprawnień w ACF Extended: kiedy formularz rejestracji może dać atakującemu admina

W ekosystemie WordPressa najgroźniejsze są te błędy, które nie wymagają logowania, a jednocześnie kończą się przejęciem konta z wysokimi uprawnieniami. Dokładnie z taką sytuacją mieliśmy do czynienia w dodatku Advanced Custom Fields: Extended (ACF Extended) – popularnym rozszerzeniu do ACF (Advanced Custom Fields), używanym m.in. do budowania formularzy i mapowania pól na akcje typu „Create user”.

Według analizy Wordfence podatność pozwalała niezautoryzowanemu atakującemu uzyskać eskalację uprawnień poprzez wymuszenie roli (np. administrator) podczas tworzenia użytkownika w formularzu. Problem został załatany – kluczowe jest jednak to, że luka była wykorzystywalna tylko w określonej konfiguracji formularza.

Kogo dotyczy problem (i dlaczego nie każda strona jest „od razu” zagrożona)

Podatność obejmuje Advanced Custom Fields: Extended w wersjach ≤ 0.9.2.1 i dotyczy scenariusza, w którym właściciel strony używa modułu formularzy ACF Extended do tworzenia lub aktualizacji użytkowników. Z technicznego punktu widzenia krytyczne jest to, czy w formularzu istnieje pole mapowane na rolę użytkownika.

Warunek wykorzystania luki

Luka była możliwa do wykorzystania tylko wtedy, gdy w formularzu skonfigurowano mapowanie pola role (rola) na dane użytkownika. Bez takiego mapowania atakujący nie ma „uchwytu”, żeby wstrzyknąć własną rolę.

Na czym polegała eskalacja uprawnień

Sedno problemu: mechanizm obsługi akcji „insert user” (tworzenie użytkownika) w ACF Extended pozwalał przekazać argumenty do wp_insert_user() w sposób, który nie blokował wartości roli dostarczanej z formularza. Jeśli formularz przyjmował (jawnie lub „pośrednio” przez mapowanie) parametr roli, to niezalogowany atakujący mógł spróbować wysłać administrator i utworzyć konto z pełnymi uprawnieniami.

Wordfence opisuje, że logicznie można by oczekiwać, iż ograniczenia ustawiane przy polu roli (np. „Allow User Role”) będą respektowane również na etapie formularza. W podatnej wersji takie ograniczenia w kontekście formularza nie były skutecznie egzekwowane – w efekcie rola mogła zostać ustawiona arbitralnie, o ile pole roli zostało dodane do formularza.

Dlaczego to jest krytyczne (CVSS 9.8) w praktyce

Eskalacja do administratora oznacza w WordPressie praktycznie pełne przejęcie aplikacji. Po uzyskaniu dostępu admina atakujący może m.in.:

  • instalować/aktualizować wtyczki i motywy (w tym wgrać złośliwe paczki z backdoorem),
  • modyfikować treści (np. wstrzykiwać spam, linki SEO, przekierowania),
  • zakładać kolejne konta, zmieniać role innym użytkownikom,
  • zmieniać ustawienia witryny, a w skrajnych przypadkach utrwalić dostęp.

Wersje podatne i poprawka (CVE-2025-14533)

Wordfence sklasyfikował podatność jako Critical (CVSS 9.8) i przypisał jej identyfikator CVE-2025-14533. Podatne są wersje Advanced Custom Fields: Extended ≤ 0.9.2.1, a poprawka została wydana w 0.9.2.2.

Co robić

Zaktualizuj Advanced Custom Fields: Extended do wersji 0.9.2.2 (lub nowszej, jeśli jest dostępna). To podstawowy krok, niezależnie od tego, czy masz skonfigurowane formularze użytkowników.

Szybki checklist dla osób, które budują formularze w ACF Extended

Jeśli korzystasz z ACF Extended jako „form managera”, warto przejrzeć konfigurację pod kątem miejsc, w których rola mogła być ustawiana przez formularz. To szczególnie istotne przy formularzach typu rejestracja, onboarding, „create account”, a także przy akcjach aktualizujących użytkownika.

  1. Sprawdź, czy masz formularze z akcją „Create user” (insert_user) lub „Update user`.
  2. Zweryfikuj, czy jakikolwiek field w tych formularzach mapuje się na role (lub czy rola wynika z mapowania w grupie pól).
  3. Jeśli rola musi być ustawiana, ogranicz ją do minimalnie potrzebnych ról i nie wystawiaj pola roli publicznie (z perspektywy UX i bezpieczeństwa to zwykle antywzorzec).
  4. Zadbaj o warstwę ochronną: firewall aplikacyjny (WAF) i monitorowanie prób rejestracji/logowania, bo tego typu luki często idą w parze z automatyzacją ataków.

Warstwa ochrony od Wordfence: kiedy pojawiły się reguły

Wordfence poinformował, że użytkownicy Wordfence Premium, Wordfence Care oraz Wordfence Response otrzymali regułę firewalla chroniącą przed próbami wykorzystania tej podatności 11 grudnia 2025. Użytkownicy darmowej wersji Wordfence dostali analogiczną ochronę 10 stycznia 2026 (po 30 dniach).

Chronologia ujawnienia i reakcja producenta

Z perspektywy procesu disclosure widać tu dość sprawny przepływ: zgłoszenie trafiło do Wordfence 10 grudnia 2025, weryfikacja i przekazanie szczegółów do zespołu ACF Extended nastąpiły 11 grudnia, a poprawiona wersja wtyczki została wydana 14 grudnia 2025.

Podatność odkrył i odpowiedzialnie zgłosił badacz andrea bocchetti w ramach programu bug bounty Wordfence.

Najważniejsze wnioski dla praktyki WordPress dev

  • Jeśli wystawiasz publiczny formularz, który dotyka obiektów użytkownika (rejestracja/edycja), traktuj rolę jako dane wrażliwe – najlepiej w ogóle nie przyjmuj jej z inputu.
  • Ograniczenia ustawione „w UI wtyczki” nie zawsze oznaczają, że back-end konsekwentnie je egzekwuje. Warto czytać changelogi i śledzić advisory dla popularnych dodatków.
  • Wtyczki typu „form builder” + „user management” to częsty wektor ataku, bo łączą zewnętrzny input z krytycznymi operacjami (tworzenie kont, role, capabilities).

Podsumowanie

W ACF Extended wykryto krytyczną podatność eskalacji uprawnień (CVE-2025-14533), która w określonej konfiguracji formularza pozwalała niezalogowanemu atakującemu utworzyć konto z rolą administratora. Poprawka jest dostępna w wersji 0.9.2.2, więc najrozsądniejszym krokiem jest szybka aktualizacja oraz przegląd formularzy użytkowników pod kątem mapowania role.

Ustawienia pola roli użytkownika w ACF Extended (Allow User Role)
Ograniczenia roli ustawiane na poziomie pola mogą nie wystarczyć, jeśli formularz nie egzekwuje ich po stronie serwera. — Forrás: Wordfence.com
Konfiguracja formularza w ACF Extended z akcją Create user i mapowaniem pól
Kluczowy scenariusz: formularz „Create user” z mapowaniem pól użytkownika, w tym roli. — Forrás: Wordfence.com

Dołącz do społeczności HelloWP!

Porozmawiaj z nami o WordPressie i tworzeniu stron oraz dziel się doświadczeniami z innymi deweloperami.

- członkowie
- online
Dołącz

Używamy plików cookie, aby poprawić Twoje doświadczenia. Kontynuując, zgadzasz się na naszą Politykę plików cookie.