Kwetsbare plugins

ACF-beveiligingslekken: tijdlijn, exploits en patches

ACF: kwetsbaarheden, exploits en patches

Advanced Custom Fields (ACF) structureert de inhoud van meer dan 2 miljoen WordPress-sites, en het CVE-register kent er 18 kwetsbaarheden aan toe die tussen januari 2020 en begin juli 2026 zijn gepubliceerd. Geen enkele is kritiek, maar een XSS uit 2023 werd al de dag na de publicatie aangevallen, en in oktober 2024 maakte de plugin iets unieks mee: de overname door WordPress.org in naam van de beveiliging. Hier vind je de tijdlijn, de kwetsbaarheden die ertoe doen en de juiste instellingen.

Advanced Custom Fields in het kort

ACF voegt aangepaste velden (tekst, afbeelding, relatie, repeater...) toe aan inhoud, gebruikers of optiepagina's. De plugin staat sinds maart 2011 op wordpress.org, was eigendom van Delicious Brains en werd in juni 2022 samen met vier andere plugins overgenomen door WP Engine. Er bestaan een gratis versie en een betaalde versie, ACF Pro. De officiële directory toont meer dan 2 miljoen actieve installaties (wordpress.org).

Bureaus en freelancers gebruiken de plugin als basis voor maatwerksites, met thema's die rond get_field() en the_field() zijn opgebouwd. ACF verwerkt dus gegevens die door alle rollen worden ingevoerd, en soms door anonieme bezoekers via de openbare formulieren (acf_form()). En de plugin is moeilijk te verwijderen: het thema hangt ervan af.

Tijdlijn van de kwetsbaarheden sinds 2020

We hebben de kwetsbaarheden in ACF (gratis en Pro) geteld die een CVE-identificatie kregen, op basis van de vermeldingen in het register cve.org, voor adviezen gepubliceerd van 1 januari 2020 tot 4 juli 2026: 18 kwetsbaarheden, allemaal gepatcht. Daarbij komt een kwetsbaarheid die WPScan in mei 2026 zonder CVE publiceerde. WPScan en Patchstack missen elk enkele kwetsbaarheden, met name die welke via het Japanse JPCERT zijn gemeld.

Tijdlijn van Advanced Custom Fields: XSS gepatcht in 5.8.12 op 10 juni 2020, drie ontbrekende toegangscontroles op 2 december 2021, bestandsupload zonder account op 25 juli 2022, PHP-objectinjectie op 10 april 2023, reflected XSS CVE-2023-30777 op 5 mei 2023 met aanvalspogingen waargenomen door Akamai, XSS door bijdragers op 17 januari 2024, kwetsbaarheid gemeld door Automattic op 7 oktober 2024, fork naar Secure Custom Fields op 12 oktober 2024, pluginpagina teruggegeven aan WP Engine in december 2024, lezen van privé-inhoud op 14 april 2026 en wijzigen van berichten zonder account op 30 mei 2026
Elf sleuteldata: vooral gemiddelde kwetsbaarheden, een in 2023 aangevallen XSS en de crisis van oktober 2024.
PublicatieGepatcht inTypeCVSSCVEAccount vereist
10 juni 2020 (patch)5.8.12XSS in de keuzelijsten6,1 (NVD)CVE-2020-36172Geen (klik van een slachtoffer)
2 december 20215.11Drie ontbrekende toegangscontroles6,5 tot 7,5 (NVD)CVE-2021-20865, CVE-2021-20866, CVE-2021-20867Geen tot abonnee, afhankelijk van de kwetsbaarheid
30 maart 20225.12.1Ongeautoriseerde toegang tot gegevens6,5 (NVD)CVE-2022-23183Bijdrager
25 juli 20225.12.3 (getroffen: van 5.0 tot 5.12.2)Bestandsupload via een openbaar formulier8,8 (NVD)CVE-2022-2594Geen
18 oktober 20226.0.3 (getroffen: van 3.1.1 tot 6.0.2)Blootstelling van veldwaarden3,7 (Patchstack), 7,5 (NVD)CVE-2022-40696Geen volgens Patchstack
10 april 20235.12.5 en 6.1.0 (getroffen: 5.x vóór 5.12.5, 6.x vóór 6.1.0)PHP-objectinjectie8,8 (NVD)CVE-2023-1196Bijdrager
5 mei 20236.1.6 en 5.12.6Reflected XSS (gedocumenteerde aanvalspogingen)7,1 (Patchstack), 6,1 (NVD)CVE-2023-30777Geen (klik van een ingelogde gebruiker)
17 januari 20246.2.5Stored XSS via de shortcode6,4 (Wordfence), 5,4 (NVD)CVE-2023-6701Bijdrager
30 mei 20246.3.0Lezen van velden via de shortcode6,5 (NVD)CVE-2024-4565Bijdrager
9 oktober 20246.3.8, versterkt in 6.3.9Beperkte aanroep van functies5,4 (Patchstack), 6,6 (CISA)CVE-2024-9529Beheerder
15 oktober 20246.3.9 (getroffen: vóór 6.3.9, en Secure Custom Fields vóór 6.3.6.3)Stored XSS in de editor van veldgroepen5,3 (CISA)CVE-2024-49593Beheerder
14 april 20266.7.1Lezen van privé-inhoud via AJAX5,3 (Wordfence)CVE-2026-4812Geen (openbaar formulier)
27 mei 20266.8.2Wijzigen van velden via een openbaar formulier5,3 (WPScan)GeenGeen
30 mei 20266.8.2Wijzigen van de titel en inhoud van berichten5,3 (Wordfence)CVE-2026-8382Geen (openbaar formulier)
De opvallende kwetsbaarheden in ACF gepubliceerd van 1 januari 2020 tot 4 juli 2026 (CVE-register, plus een vermelding van WPScan zonder CVE)

De data zijn die van het eerste openbare advies (voor 2020 die van de patch). De score is die van de organisatie die de CVE toekende, anders die van de NVD of CISA. De meeste kwetsbaarheden troffen ook ACF Pro, gepatcht in dezelfde versies. Vier kwetsbaarheden die niet in de tabel staan, vereisten een beheerdersaccount of toegang tot de instellingen van ACF: stored XSS of HTML-injecties in labels, gepatcht in 6.1.8 (2023), 6.3.6 en 6.3.9 (2024) en 6.4.3 (2025).

De opvallendste kwetsbaarheden uitgelegd

Juli 2022: bestanden geüpload zonder account (CVE-2022-2594)

James Golovich (Pritect) ontdekte dat sinds de herschrijving van versie 5.0 de "basis"-uploadvelden van de openbare formulieren van ACF niet door een beveiligingstoken (nonce) werden beschermd. Op een site met zo'n formulier kon een anonieme bezoeker bestanden plaatsen: geen PHP, dat door WordPress wordt geblokkeerd, maar wel elk toegestaan type, volgens de onderzoeker bruikbaar voor een latere aanval of voor phishing. Uitgever gecontacteerd op 11 juli 2022, versie 5.12.3 gepubliceerd op de 14e, openbaar advies op de 25e: een voorbeeldig tijdschema. De NVD beoordeelt de kwetsbaarheid met 8,8.

April 2023: PHP-objectinjectie door een bijdrager (CVE-2023-1196)

ACF deserialiseerde bepaalde gegevens die de gebruiker kon beïnvloeden. Een Bijdrager-account kon zo een PHP-object injecteren, wat pas gevaarlijk wordt als een andere plugin of het thema een "gadgetketen" levert. De kwetsbaarheid werd via WPScan gemeld door Nguyen Huu Do en door de NVD beoordeeld met 8,8. De versies 6.1.0 en 5.12.5, gepubliceerd op 3 en 4 april 2023, verbieden voortaan het deserialiseren van klassen. Het mechanisme wordt uitgelegd in ons artikel over PHP-objectinjectie.

Mei 2023: de reflected XSS die binnen 48 uur werd aangevallen (CVE-2023-30777)

Rafie Muhammad van Patchstack stelde vast dat de parameter post_status van het scherm met veldgroepen na alleen een sanitize_text_field aan de CSS-klassen van de beheerpagina werd toegevoegd, wat onvoldoende is omdat WordPress die klassen zonder escaping toont. Een aanvaller zonder account kon een link maken die, geopend door een ingelogde beheerder, JavaScript in diens browser uitvoerde. Patchstack beoordeelt de kwetsbaarheid met 7,1, de NVD met 6,1. Dit type aanval wordt uitgelegd in ons artikel over XSS-kwetsbaarheden in WordPress.

De kwetsbaarheid werd op 2 mei 2023 gemeld en op 4 mei gepatcht in 6.1.6, met een gebackporte patch in 5.12.6, en Patchstack publiceerde op 5 mei zijn analyse met een voorbeeldverzoek. Akamai zag vanaf 6 mei veel scan- en aanvalsactiviteit die woord voor woord het voorbeeld van Patchstack overnam, op sites uit alle sectoren. Akamai zegt niet of er sites zijn gecompromitteerd, en Patchstack meldde op 16 mei geen concrete pogingen bij zijn klanten te hebben gezien.

2024: de shortcode van ACF en het escapen van uitvoer

De shortcode [acf] was van 2022 tot 2024 het zwakke punt. In januari 2024 toonden Francesco Carlucci en Wordfence aan dat een bijdrager zonder het recht unfiltered_html kwaadaardige HTML in metadata kon opslaan en via deze shortcode kon tonen (CVE-2023-6701, gemeld op 12 december 2023, gepatcht in 6.2.5 op 16 januari 2024). In mei liet CVE-2024-4565 zien dat dezelfde shortcode de velden van elk bericht toonde zonder de rechten te controleren. De uitgever ging verder dan de patch: de shortcode is sinds 6.3.0 standaard uitgeschakeld op nieuwe installaties, en voor 6.2.7 werd aangekondigd dat the_field() gevaarlijke HTML verwijdert.

2026: de openbare formulieren in het vizier

De drie kwetsbaarheden van 2026 hebben iets gemeen: ze zijn gericht op de openbare formulieren van ACF en vereisen geen account. Met CVE-2026-4812, gemeld door Fernando Mecozzi en op 14 april door Wordfence gepubliceerd, kon je via de AJAX-verzoeken van de velden Relatie of Object informatie over concepten en privé-inhoud verkrijgen, met omzeiling van de ingestelde beperkingen. De patch, in 6.7.1, was al op 3 maart verschenen. Eind mei publiceerde Sarawut Poolkhet twee kwetsbaarheden die in 6.8.2 (26 mei) zijn gepatcht: met de ene kon je elk veld van het aan het formulier gekoppelde bericht wijzigen, zelfs een niet-getoond veld, met de andere de titel en inhoud ervan overschrijven (CVE-2026-8382). Ze zijn allemaal beoordeeld met 5,3, maar raken zonder authenticatie de vertrouwelijkheid of de integriteit van de inhoud.

Oktober 2024: ACF overgenomen door WordPress.org

Deze episode vermengt beveiliging en een juridisch conflict. Op 25 september 2024 kondigt Matt Mullenweg op WordPress.org aan dat WP Engine, met wie hij in een geschil verwikkeld is, niet langer gratis toegang heeft tot de middelen van de site. Het ACF-team kan niet meer in de directory publiceren en zet een eigen updatekanaal op.

Op 7 oktober publiceert ACF versie 6.3.8, die een kwetsbaarheid dicht die het beveiligingsteam van Automattic had gemeld (CVE-2024-9529): een beheerder kon PHP-functies laten uitvoeren via de callbackfuncties van met ACF aangemaakte inhoudstypen en taxonomieën, met name door het importeren van instellingen. De uitgever beschrijft dit als een "onwaarschijnlijk" scenario tussen twee beheerders; Patchstack geeft het een lage prioriteit, "weinig kans op misbruik". ACF zegt een kopie van de patch aan het beveiligingsteam van WordPress.org te hebben bezorgd, dat die als 6.3.6.1 publiceerde.

Op 12 oktober kondigt WordPress.org namens zijn beveiligingsteam aan dat het punt 18 van de directoryregels inroept om een fork van ACF te maken met de naam Secure Custom Fields (SCF), volgens WordPress.org om een beveiligingsprobleem op te lossen en de commerciële prikkels te verwijderen. Sites die automatische updates van WordPress.org ontvangen, worden naar SCF overgezet. De tekst spreekt van een "zeldzame en ongebruikelijke" situatie die door de rechtszaken van WP Engine is ontstaan. Het ACF-team antwoordt dezelfde dag dat nog nooit een actief ontwikkelde plugin zonder toestemming van de maker is afgenomen, noemt deze code "niet goedgekeurd" en vraagt zijn gebruikers versie 6.3.8 van zijn eigen site te downloaden.

Drie dagen later werd dezelfde stored XSS, voorbehouden aan beheerders, in beide branches gepatcht (CVE-2024-49593, ACF 6.3.9 en SCF 6.3.6.3): een fork erft ook de kwetsbaarheden van de oorspronkelijke code. Op 10 december 2024 beval een federale rechtbank in Californië voorlopig om WP Engine de toegang tot WordPress.org en de controle over de pluginpagina van ACF terug te geven; Automattic ziet daarin een maatregel om de status quo te behouden en zet de procedure voort. Half december kwam de pluginpagina terug bij WP Engine, terwijl SCF onder zijn eigen naam doorgaat, gepubliceerd door WordPress.org.

Voor een site-eigenaar is de les niet om een kamp te kiezen, maar om te weten waar je updates vandaan komen: in oktober 2024 kon een automatische update een plugin door een andere vervangen. Controleer of je ACF of SCF gebruikt, en of dat kanaal je de patches wel levert. Dit risico van het distributiekanaal wordt uitgewerkt in ons artikel over supply-chain-aanvallen.

De overstap van ACF naar Secure Custom Fields, gepresenteerd door WP Minute op 12 oktober 2024 (in het Engels).

Wat deze geschiedenis laat zien

Grafiek van de kwetsbaarheden in ACF met een CVE per jaar volgens het CVE-register: 1 gemiddelde in 2020, 1 hoge en 2 gemiddelde in 2021, 1 hoge, 1 gemiddelde en 1 lage in 2022, 2 hoge en 1 gemiddelde in 2023, 5 gemiddelde in 2024, 1 lage in 2025, 2 gemiddelde in 2026 tot 4 juli
18 CVE's in zes en een half jaar, geen enkele kritiek, met een piek in 2024.
  • Geen kritieke kwetsbaarheid, maar wel kwetsbaarheden zonder account: acht van de negentien kwetsbaarheden vereisen geen account van de aanvaller, via een vervalste link of, vier keer, via een openbaar formulier.
  • Toegangscontrole komt steeds terug: lezen van gegevens, velden of privé-inhoud in 2021, 2022, 2024 en 2026. Elke nieuwe manier om velden te tonen (shortcode, AJAX, formulier) moest achteraf worden afgeschermd.
  • Tussenliggende rollen tellen mee: vier kwetsbaarheden vereisen alleen een Bijdrager-account. Beperk die accounts tot het strikt noodzakelijke (zie ons artikel over rollen en minimale rechten).
  • De patches komen snel: drie dagen voor de bestandsupload in 2022, twee dagen voor de XSS van 2023. In april 2026 ging de patch zes weken aan het advies vooraf.

Om ACF in het geheel te plaatsen, raadpleeg je onze tijdlijn van de kwetsbaarheden in de WordPress-core en onze analyse van de kwetsbaarheden in plugins in cijfers.

Jezelf beschermen

  • Werk bij: elke versie vanaf 6.8.2 dicht alle kwetsbaarheden uit de tabel.
  • Schakel automatische updates in voor ACF (automatische updates van plugins).
  • Controleer je openbare formulieren: als je acf_form() gebruikt, beperk dan de getoonde velden met de optie fields en verwijder velden die niet meer worden gebruikt. Laat de shortcode uitgeschakeld als je thema hem niet gebruikt.
  • Verwijder overbodige plugins, ook een ACF of SCF die niet meer wordt gebruikt (verlaten plugins).
  • Voeg een applicatiefirewall toe die virtuele patches kan toepassen om de uren na een advies te overbruggen (vergelijking van WAF's), en volg de kwetsbaarheden in je plugins (kwetsbaarheden in plugins bewaken).

WP Masquerade Pro kan je bij dat laatste punt helpen. Het vergelijkt elke dag de versies van je geïnstalleerde plugins en thema's met de openbare database WPVulnerability.net en stuurt je een kwetsbaarheidsmelding per e-mail met de ernst en de gepatchte versie. De klantenzone toont de openstaande updates en de kwetsbare sites (bewaking van je sites). WP Masquerade waarschuwt, het patcht geen plugins en is geen firewall: bijwerken blijft je doorslaggevende handeling. Om je uitrusting aan te vullen, raadpleeg je onze selectie van de beste WordPress-beveiligingsplugins.

Om te onthouden

  • 18 kwetsbaarheden in ACF met een CVE van 1 januari 2020 tot 4 juli 2026, geen enkele kritiek, allemaal gepatcht.
  • Op de XSS CVE-2023-30777 volgden minder dan 48 uur na de patch aanvalspogingen.
  • Aanbevolen minimale versie: 6.8.2; installeer de nieuwste.
  • De openbare formulieren (acf_form()) en de shortcode zijn de gevoelige punten: beperk ze.
  • Controleer sinds oktober 2024 of je ACF of Secure Custom Fields gebruikt, en waar je updates vandaan komen.

Bronnen

  • WordPress.org: plugin Advanced Custom Fields (ACF®) (externe link, opent in een nieuw tabblad)
  • NVD: CVE-2022-2594 (22 augustus 2022) (externe link, opent in een nieuw tabblad)
  • CVE.org: CVE-2023-30777 (10 mei 2023) (externe link, opent in een nieuw tabblad)
  • WordPress.org: WP Engine is banned from WordPress.org (25 september 2024) (externe link, opent in een nieuw tabblad)

Andere geraadpleegde bronnen: andere CVE-registraties, officiële pagina's van de leveranciers, publicaties van beveiligingsonderzoekers, artikelen uit de vakpers, databases van WPScan en Patchstack.

WordPress-beveiliging, zonder ruis

Eén e-mail wanneer het ertoe doet: nieuw waargenomen aanvallen, updates van de plugin en praktische gidsen. Geen spam, afmelden met één klik.

Begin gratis, stap over op Pro wanneer je eraan toe bent

De gratis versie verbergt WordPress al en verplaatst de inlogpagina. Pro voegt aliassen, tweestapsverificatie en bewaking toe.