Preskočiť na obsah
Kritická eskalácia práv v ACF Extended: kedy sa z registračného formulára stane admin vstup
Peter Kováč
Peter Kováč 19. January 2026 · 6 min čítania

Kritická eskalácia práv v ACF Extended: kedy sa z registračného formulára stane admin vstup

Ak na WordPress webe skladáš registračné alebo profilové formuláre cez ACF stack, pravdepodobne poznáš doplnok Advanced Custom Fields: Extended (ACF Extended) – rozšírenie k ACF, ktoré pridáva ďalšie polia, form manager a akcie nad formulármi. Práve táto „form“ časť bola podľa zverejneného advisora zdrojom kritickej zraniteľnosti, ktorá pri konkrétnom nastavení umožnila neautentifikovanému útočníkovi povýšiť si účet na administrátora.

Dobrá správa: fix existuje. Zlá správa: ak si mal na webe formulár s akciou na vytváranie/aktualizáciu používateľa a zároveň si mapoval pole roly, riziko je reálne. V tomto článku rozoberám, čo sa stalo, koho sa to týka a čo skontrolovať, aby si podobný problém nevytvoril aj inde.

Čo je jadro problému: „Privilege escalation“ cez rolu používateľa

Privilege escalation (eskalácia oprávnení) je trieda chýb, pri ktorej sa používateľ dostane k vyšším právam, než mu patria. V tomto prípade ide o extrém: z „návštevníka“ (bez prihlásenia) na administrátora.

Podľa zverejnených detailov sa zraniteľnosť týkala doplnku ACF Extended do verzie 0.9.2.1 vrátane a je evidovaná ako CVE-2025-14533 s hodnotením CVSS 9.8 (Critical). Opravená verzia je 0.9.2.2.

Kedy je web skutočne zraniteľný (a prečo to nemusí byť každý, kto má plugin)

Toto nie je typ chyby, ktorá sa dá automaticky zneužiť na každej inštalácii len preto, že plugin existuje. Kriticky zasiahnuté sú hlavne weby, ktoré:

  • používajú v ACF Extended Form s akciou typu Create user (insert_user) alebo Update user,
  • a v rámci mapovania polí do akcie majú namapované aj pole role (rola používateľa).

V praxi to býva napríklad vlastný registračný formulár alebo „edit profil“ formulár, kde si developer dovolí používateľovi vybrať rolu (alebo rola prichádza cez skryté pole). Advisory priamo spomína, že zneužitie je možné vtedy, keď je role namapované na custom field.

Dôležitý detail

Aj keď si v ACF field group pri poli roly nastavíš obmedzenie typu „Allow User Role“, v zraniteľnej verzii sa toto obmedzenie podľa analýzy neaplikovalo pri spracovaní formulára. Útočník mohol poslať rolu „administrator“ bez ohľadu na UI nastavenia.

Ako to fungovalo technicky: insert_user() a nekontrolované argumenty

Wordfence vo svojej technickej analýze popisuje, že ACF Extended spracováva akciu vytvorenia používateľa cez funkciu insert_user() v triede acfe_module_form_action_user. Z $save (namapované polia z formulára) sa poskladajú argumenty a odovzdajú do wp_insert_user().

Problém bol v tom, že rola nebola dostatočne obmedzená – teda plugin nepresadil whitelist/validáciu rolí pre kontext „registrácia cez formulár“ a umožnil poslať hodnotu administrator.

<?php
// Konceptuálne (zjednodušené) vysvetlenie, nie kópia pôvodného kódu:
// Ak plugin zoberie hodnoty z formulára a bez validácie ich dá do wp_insert_user(),
// útočník môže poslať rolu 'administrator'.

$args = [
  'user_login' => $_POST['username'] ?? null,
  'user_email' => $_POST['email'] ?? null,
  'user_pass'  => $_POST['password'] ?? '',
  'role'       => $_POST['role'] ?? 'subscriber', // <- kľúčový problém, ak nie je whitelist
];

wp_insert_user($args);

Pointa je jednoduchá: ak sa rola správa ako bežné „mapovateľné“ pole bez server-side validácie, UI obmedzenia (select s povolenými hodnotami) ti nepomôžu. Útočník nehrá podľa UI – pošle vlastný request.

Dopad: od admin účtu po úplné prevzatie webu

Získať administrátorský účet vo WordPress znamená v praxi plný prístup k správe webu. Advisory explicitne uvádza typické následky:

  • nahratie škodlivého pluginu alebo témy (napr. ZIP s backdoorom),
  • úprava obsahu stránok a článkov (spam, SEO poison, presmerovania),
  • ďalšie vytváranie používateľov a zmeny nastavení.

Čo urobiť hneď: aktualizácia a rýchly audit formulárov

Najrýchlejšia mitigácia je aktualizovať ACF Extended na opravenú verziu. Podľa advisora je opravená verzia 0.9.2.2.

  1. Skontroluj verziu doplnku Advanced Custom Fields: Extended (slug acf-extended).
  2. Ak je verzia ≤ 0.9.2.1, aktualizuj na 0.9.2.2 alebo novšiu.
  3. Prejdi si ACF Extended Forms a nájdi akcie typu Create user alebo Update user.
  4. Over, či sa do akcie mapuje pole role (či už viditeľné, select, alebo hidden). Ak áno, ber to ako vysoké riziko.
  5. Ak rolu nepotrebuješ, odstráň mapovanie role z formulára (aj po aktualizácii je to dobrý hardening).

Praktická zásada pre registrácie

Rolu pri registrácii nastavuj server-side (napr. vždy „subscriber“ alebo vlastná rola) a nikdy ju nenechaj prichádzať z klienta ako „dôveryhodná“ hodnota. Aj select s obmedzenými možnosťami sa dá obísť.

Časová os zverejnenia a ochrana cez Wordfence

Wordfence uvádza, že zraniteľnosť bola nahlásená 10. decembra 2025 a overená 11. decembra 2025. Vendor podľa timeline vydal patch 14. decembra 2025 (verzia 0.9.2.2).

Z pohľadu mitigácie cez WAF (web application firewall) Wordfence nasadil firewall rule pre platené produkty (Premium/Care/Response) 11. decembra 2025 a pre Wordfence Free 10. januára 2026. Toto je fajn „safety net“, ale pri takto kritickej chybe sa neoplatí spoliehať len na WAF – patch je základ.

Poučenie pre developerov: UI obmedzenia nie sú bezpečnostná kontrola

ACF Extended má šikovné nastavenia polí, ktoré ťa zvádzajú veriť, že „keď som to obmedzil v administrácii, tak to platí“. Bez server-side validácie je to však iba UX. V momente, keď cez form builder vytváraš akcie typu create/update user, pracuješ s jednou z najcitlivejších častí WordPressu: identitami a rolami.

Ak niekde mapuješ polia do wp_insert_user() alebo wp_update_user(), ber rolu, capabilities a podobné atribúty ako neprípustný vstup z klienta. Aj keď ho posiela „len tvoj formulár“.

Zhrnutie

  • ACF Extended (Advanced Custom Fields: Extended) mal kritickú zraniteľnosť CVE-2025-14533 (CVSS 9.8), ktorá umožnila neautentifikovanú eskaláciu práv pri určitom nastavení formulára.
  • Zasiahnuté verzie sú ≤ 0.9.2.1, oprava je v 0.9.2.2.
  • Riziko je najmä na weboch, kde je použitá akcia Create user/Update user a do nej je mapované pole role.
  • Najdôležitejšie je aktualizovať plugin a následne skontrolovať formy, aby rola nebola nastaviteľná z klienta.
Nastavenie poľa roly používateľa v ACF Extended s možnosťou obmedzenia povolených rolí
ACF Extended umožňuje obmedziť roly v nastaveniach poľa, no v zraniteľnej verzii sa obmedzenie podľa advisora nepresadilo pri spracovaní formulára. — Forrás: Wordfence.com
Form action v ACF Extended pre vytvorenie používateľa s mapovaním polí
Pri akcii „Create user“ sa polia z formulára mapujú do údajov používateľa – práve tu vznikol pri role problém. — Forrás: Wordfence.com

Pridajte sa ku komunite HelloWP!

Chatujte s nami o WordPresse, webovom vývoji a zdieľajte skúsenosti s ostatnými vývojármi.

- členovia
- online
Pridať sa

Používame súbory cookie na zlepšenie vášho zážitku. Pokračovaním súhlasíte s našimi Zásadami používania súborov cookie.