Kritična eskalacija privilegija u ACF Extended: kada registracijska forma može postati admin backdoor
WordPress sigurnosni incidenti često izgledaju isto: jedna „mala” postavka u pluginu + javno dostupna forma = potpuna kompromitacija weba. Upravo takav obrazac opisuje ranjivost u pluginu Advanced Custom Fields: Extended (ACF Extended), dodatku za ACF koji donosi naprednija polja i form manager (upravljanje formama i akcijama nakon slanja).
Prema analizi Wordfencea, ranjivost omogućuje neautentificiranom napadaču (dakle bez računa i bez prijave) da kroz formu za kreiranje korisnika zada ulogu administrator i time dobije administratorski pristup. Pogođeno je do 0.9.2.1, a zakrpa je objavljena u 0.9.2.2.
Što je ranjivo i kada je stvarno opasno
Ovo nije „svaki site je odmah probijen” situacija. Kritični dio je uvjet za eksploataciju: ranjivost se može iskoristiti samo ako je polje role mapirano na custom field u formi (odnosno ako u ACF Extended formi postoji odabir uloge i ta vrijednost završava u parametrima za kreiranje korisnika).
Drugim riječima, rizik je najveći za siteove koji su preko ACF Extended napravili vlastiti registration flow (npr. „prijavi se kao član/partner”) i pritom izložili odabir role ili su nesvjesno dopustili da se role pošalje u requestu.
Brza provjera rizika
Ako koristiš ACF Extended Form s akcijom „Create user” ili „Update user” i u mapiranju polja imaš nešto što utječe na role, tretiraj to kao hitno i ažuriraj plugin na 0.9.2.2.
Kako dolazi do eskalacije privilegija
ACF Extended ima mogućnost da kroz formu kreira korisnika (akcija tipa insert_user). U toj akciji plugin skuplja vrijednosti iz form fields i gradi $args koji zatim završava u wp_insert_user($args).
Problem je u tome što (u ranjivim verzijama) ne postoji stvarno ograničenje koje bi spriječilo slanje privilegirane uloge, iako UI/field group postavke mogu sugerirati da je uloga ograničena (npr. opcija tipa „Allow User Role”). Ako se role može podmetnuti, napadač može poslati administrator i dobiti admin račun.
<?php
// Konceptualni prikaz onoga što je u analizi problematično:
// forma -> mapiranje polja -> $args -> wp_insert_user($args)
$args = [];
// ... skupljanje vrijednosti iz forme u $args ...
// (ako 'role' završi u $args bez server-side ograničenja)
$user_id = wp_insert_user($args);
?>Ovo je klasičan primjer gdje se previše vjeruje klijentu (formi) ili konfiguraciji u administraciji, a premalo se radi server-side validation (provjera na serveru) prije nego što se pozove WordPress API za kreiranje korisnika.
Zašto je ovo „Critical” (CVSS 9.8)
Jednom kad napadač dobije administratorsku ulogu, praktički ima punu kontrolu nad WordPress instalacijom: može instalirati pluginove/teme, uploadati ZIP s backdoorom, mijenjati sadržaj, ubaciti redirecte, spam ili JavaScript injekcije, te si otvoriti trajni pristup.
Zato ovakve ranjivosti gotovo uvijek treba tretirati kao potencijalnu potpunu kompromitaciju, čak i kad je uvjet eksploatacije specifičan.
Koje su verzije pogođene i što je zakrpano
- Plugin: Advanced Custom Fields: Extended (slug:
acf-extended) - Pogođene verzije: sve do i uključujući 0.9.2.1
- Zakrpljena verzija: 0.9.2.2
- CVE: CVE-2025-14533
- Ocjena: CVSS 9.8 (Critical)
Kako se zaštititi (praktično i bez filozofije)
- Ažuriraj ACF Extended na 0.9.2.2 ili novije (što prije).
- Ako koristiš ACF Extended forme za registraciju: provjeri imaš li polje koje mapira
rolei ukloni ga iz javno dostupnih formi (ili ga barem privremeno isključi). - Provjeri postoje li neočekivani admin korisnici kreirani u periodu izloženosti (Users → All Users) i resetiraj lozinke/ključeve gdje ima smisla.
- Ako koristiš Wordfence: imaj na umu da su Premium/Care/Response korisnici dobili WAF pravilo 11.12.2025., a Free korisnici 10.01.2026. (prema objavi).
Za developere: lekcija za custom forme
Ako radiš vlastiti registration flow (bilo kroz ACF Extended, bilo kroz custom endpoint), nikad se ne oslanjaj na UI ograničenja polja. Uloge i capability-ji moraju biti ograničeni na serveru, prije wp_insert_user() ili wp_update_user().
Što znamo o prijavi i vremenskoj liniji
Wordfence navodi da je ranjivost prijavljena kroz njihov Bug Bounty Program, validirana i proslijeđena vendor timu kroz Wordfence Vulnerability Management Portal. Zakrpa je objavljena brzo, 14.12.2025., a firewall zaštita je isporučena korisnicima Wordfencea prema njihovom modelu (Premium ranije, Free s odgodom).
- 10.12.2025. — zaprimljena prijava ranjivosti
- 11.12.2025. — potvrđen proof-of-concept i isporučeno WAF pravilo za Wordfence Premium/Care/Response
- 11.12.2025. — detalji poslani vendor timu
- 14.12.2025. — objavljena zakrpa (ACF Extended 0.9.2.2)
- 10.01.2026. — WAF pravilo isporučeno Wordfence Free korisnicima
Zaključak
ACF Extended je popularan dodatak uz ACF, a ova ranjivost je dobar podsjetnik koliko su osjetljive forme koje kreiraju ili ažuriraju korisnike. Ako ti je na siteu igdje izložen „Create user”/„Update user” flow i postoji mogućnost da role završi u requestu, rizik je visok.
Minimalna akcija je jasna: ažurirati na 0.9.2.2, te pregledati forme i mapiranja kako role ne bi postao najkraći put do administratorskih privilegija.


Marko Kovačić
SaaS programer i stručnjak za pretplatničke modele. Zanimaju me Stripe i sustavi za ponavljajuća plaćanja. Održivi poslovni model je ključ.
Svi članci