Ga naar inhoud
Kritieke privilege escalation in ACF Extended: wanneer een registratieformulier ineens admin wordt
Lars Jansen
Lars Jansen 19 January 2026 · 3 min leestijd

Kritieke privilege escalation in ACF Extended: wanneer een registratieformulier ineens admin wordt

WordPress-sites die Advanced Custom Fields: Extended (ACF Extended) gebruiken, kregen half december een serieuze security-wake-up call. Wordfence publiceerde een advisory over een unauthenticated privilege escalation: een aanval waarbij iemand zonder account tóch hogere rechten kan krijgen. In dit geval kan een bezoeker zichzelf in sommige configuraties rechtstreeks een administrator-rol toekennen.

De kwetsbaarheid is geregistreerd als CVE-2025-14533 en krijgt een CVSS-score van 9.8 (Critical). ACF Extended heeft >100.000 actieve installs, al geldt de echte impact vooral voor sites die ACF Extended Forms gebruiken om users aan te maken of te wijzigen.

Wat is er precies aan de hand?

ACF Extended is een addon op de bekende Advanced Custom Fields-plugin. Eén van de features is een form builder (Form Manager) waarmee je front-end forms kunt maken, inclusief acties zoals “Create user” (user aanmaken) en “Update user” (user bijwerken). Handig voor lidmaatschapssites, portals, interne tools of onboarding flows zonder wp-admin.

De kern van het probleem: bij de action die een user aanmaakt, wordt user-data uit de form gemapt naar arguments voor wp_insert_user(). Als je in je form óók een veld hebt gemapt naar role, dan kan een aanvaller zelf een waarde meesturen zoals administrator.

Het pijnpunt volgens Wordfence: de code die de user invoegt beperkt niet welke rollen toegestaan zijn. Daardoor kan de rol “vrij” worden gekozen, ook als je in de field group een restrictie verwacht (bijvoorbeeld een instelling zoals “Allow User Role”). In kwetsbare versies werd die beperking niet (voldoende) afgedwongen op het moment dat de form action draait.

Belangrijke nuance

Dit is vooral kritiek als je daadwerkelijk een ACF Extended form hebt met een “Create user” of “Update user” action én je hebt een veld gemapt naar role. Zonder die role mapping is dit specifieke aanvalspad volgens de advisory niet exploiteerbaar.

Waarom dit meteen full compromise kan zijn

Privilege escalation is in WordPress bijna altijd game over als het om administrator gaat. Met adminrechten kan een aanvaller onder andere:

  • plugins of thema’s uploaden (bijv. een “legitiem ogende” zip met backdoor)
  • PHP-code uitvoeren via plugin/theme editors of custom code oplossingen
  • redirects en SEO-spam injecteren door pagina’s te wijzigen
  • extra accounts aanmaken om persistent toegang te houden
  • security tooling uitschakelen en logs opruimen

Omdat de aanval unauthenticated is, hoef je niet eens een bestaand account te compromitteren. Een publiek bereikbaar registratieformulier kan voldoende zijn.

Welke versies zijn kwetsbaar en wat is de fix?

Volgens Wordfence zijn alle versies t/m 0.9.2.1 kwetsbaar. De vendor heeft dit gepatcht in 0.9.2.2. Praktisch betekent dit: update ACF Extended zo snel mogelijk naar minimaal die versie (of hoger).

  • Kwetsbaar: ACF Extended <= 0.9.2.1
  • Gepatcht: 0.9.2.2
  • CVE: CVE-2025-14533
  • Severity: 9.8 (Critical)

Wanneer loop je risico? Een snelle checklist voor developers

In veel sites staat ACF Extended geïnstalleerd voor extra field types en quality-of-life features, zonder dat Forms actief wordt gebruikt. In dat scenario is de kans kleiner dat je exact de kwetsbare configuratie hebt. Check specifiek dit:

  1. Gebruik je ACF Extended Forms (Form Manager) op de front-end?
  2. Heb je een form action staan op “Create user” (insert_user) of “Update user”?
  3. Is er een veld (select, hidden, etc.) dat gemapt is naar role?
  4. Is dat formulier publiek bereikbaar (geen login nodig) of kan een laag-privilege user erbij?
  5. Wordt het veld aan client-side kant beperkt, maar niet server-side (typisch: alleen HTML select options)?

Let op met “hidden role” velden

Een veelgemaakte fout is een hidden field met value subscriber voor UX-redenen. Als de server-side validatie ontbreekt, kan een aanvaller die waarde simpel aanpassen in de request.

Technische context: waar gaat het mis?

Wordfence beschrijft dat ACF Extended bij de user-action een insert_user()-functie gebruikt die arguments opbouwt uit de gemapte formvelden en vervolgens wp_insert_user($args) aanroept. In kwetsbare versies werd daarbij niet afgedwongen dat role alleen uit een veilige allowlist komt.

Concreet: zodra role in de mapping zit, kan die via form input worden beïnvloed. En omdat WordPress wp_insert_user() de rol accepteert als die bestaat, kan administrator—als string—voldoende zijn om met adminrechten te eindigen.

Mitigaties naast updaten (voor wanneer je snel moet handelen)

Updaten is de juiste fix. Maar als je in een incident-situatie zit of je releaseproces traag is, kun je tijdelijk risico verlagen met operationele maatregelen:

  • Zet forms met “Create user” / “Update user” tijdelijk offline of achter login/extra toegang
  • Verwijder de mapping naar role (ook hidden/select) totdat je geüpdatet hebt
  • Controleer recent aangemaakte admin-accounts en wijzig admin-wachtwoorden waar nodig
  • Beperk registratieflows tot een strikt minimum en voeg server-side validatie toe waar mogelijk

Wordfence bescherming en disclosure-tijdlijn (zoals gemeld)

Wordfence meldt dat zij de melding op 10 december 2025 ontvingen via hun Bug Bounty Program en deze op 11 december 2025 valideerden. Volgens hun publicatie kregen Wordfence Premium/Care/Response-klanten op 11 december 2025 een firewall rule. Sites met de gratis variant kregen dezelfde rule 30 dagen later, op 10 januari 2026. De ACF Extended-ontwikkelaars brachten de gepatchte versie 0.9.2.2 uit op 14 december 2025.

  1. 2025-12-10: melding ontvangen via Wordfence Bug Bounty Program
  2. 2025-12-11: validatie + firewall rule voor Premium/Care/Response
  3. 2025-12-11: disclosure naar vendor via Vulnerability Management Portal
  4. 2025-12-14: vendor acknowledgement + release patch 0.9.2.2
  5. 2026-01-10: firewall rule beschikbaar voor Wordfence Free

Praktisch advies voor teams met veel WordPress-sites

Beheer je meerdere sites (agency/hosting/enterprise)? Dan is dit typisch zo’n issue waarbij je winst pakt met een korte, herhaalbare routine:

  • Inventariseer installaties op plugin slug acf-extended
  • Forceer update naar >= 0.9.2.2 waar mogelijk
  • Zoek in de configuratie naar ACF Extended forms met user actions
  • Controleer of role gemapt is in één van die acties
  • Audit users: filter op recent aangemaakte admins en onbekende e-maildomeinen

Samenvatting

ACF Extended (Advanced Custom Fields: Extended) had een kritieke privilege escalation (CVE-2025-14533) waardoor een anonieme bezoeker zichzelf adminrechten kan geven als je een user-form hebt met role mapping. De fix staat in 0.9.2.2. Update zo snel mogelijk en controleer specifiek je front-end registratie-/user-update flows.

ACF Extended interface met veldinstellingen voor user role (Allow User Role)
. — Forrás: Wordfence.com
ACF Extended Form Manager met Create user action en field mapping
Velden kunnen gemapt worden naar user properties; role mapping is hier de risicofactor. — Forrás: Wordfence.com

Word lid van de HelloWP-community!

Chat met ons over WordPress en webontwikkeling en deel ervaringen met andere ontwikkelaars.

- leden
- online
Deelnemen

We gebruiken cookies om je ervaring te verbeteren. Door verder te gaan, ga je akkoord met ons Cookiebeleid.