Laptop op een houten bureau met een geopend WordPress-beheerscherm.
Nieuws11 augustus · 00:214 min leestijd

Gehackte feed van BdThemes maakt stille beheerders aan op WordPress-sites

Zeven WordPress-plugins van BdThemes maakten via een vergiftigde promotiefeed stille beheerdersaccounts aan, zonder dat er een bestand veranderde. Wat er gebeurde, waar je op controleert en waarom dit een leverancierskeuze is.

Zeven WordPress-plugins van BdThemes maakten stille beheerdersaccounts aan op de sites die ze draaien, meldt beveiligingsbedrijf Wordfence, zonder dat er ook maar één bestand op de server veranderde.

Het gaat om premium Elementor-uitbreidingen die op veel Nederlandse bedrijfssites staan. Element Pack alleen al heeft ruim 100.000 actieve installaties en is sinds 8 augustus gesloten voor download in de officiële pluginmap, samen met de zes andere getroffen plugins. De gebruikelijke controles zeggen hier niets: er kwam geen update binnen, er wijzigde geen bestand, geen versienummer wijkt af. Wie alleen kijkt of alles bij is, kijkt naar het verkeerde scherm.

De feed was het inbraakpad, niet de plugin

De plugins bevatten een component, Biggopti, die promotiebanners ophaalt bij de eigen API van BdThemes en die in het beheerscherm toont. Achter die API zit geen applicatieserver maar een statische opslagbucket bij DigitalOcean met platte JSON-bestanden. Een aanvaller kreeg schrijfrechten op die bucket en verving de legitieme JSON-antwoorden door geprepareerde payloads, schrijft Wordfence in zijn analyse van 8 augustus.

Dat werkte omdat de plugincode zelf een fout bevatte. Het veld display_id uit dat JSON-antwoord belandde zonder escaping in een HTML-id-attribuut, een cross-site-scriptinglek dat op 1 maart 2026 met Prime Slider 4.1.9 in de code kwam en daarna meeliftte naar de andere plugins. Het lek heeft een CVSS-score van 5.4 en staat nog altijd als niet gepatcht geregistreerd. Het vergiftigde veld brak uit dat attribuut en zette er een event-handler in die via een CSS-animatie binnen tien milliseconden afvuurt, op elke wp-admin-pagina die een ingelogde beheerder opent.

Wat het script achterlaat

Het script draait in de browsersessie van de beheerder en heeft daarmee alles wat die beheerder heeft. Met de nonce uit de actieve sessie maakt het via de REST API een nieuwe beheerder aan. Daarna installeert het via het gewone plugin-uploadformulier een nepplugin met een webshell erin, emer-run.php, en die zet twee modules in de map voor must-use-plugins: een achterdeur die zonder wachtwoord toegang geeft via een URL-parameter, en een module die de aangemaakte accounts uit de gebruikerslijst filtert en het gebruikersaantal naar beneden bijstelt. Beide bestanden kregen een tijdstempel uit september 2025 om tussen de rest op te gaan.

Een tweede variant van de payload, x.js, stond op de infrastructuur van BdThemes zelf. Die berekent de inloggegevens uit de hostnaam van de site: een gebruikersnaam van bd_ plus zes tekens, een wachtwoord van Bd@26! plus diezelfde tekens, gekoppeld aan een e-mailadres op wordpress.org. Dat scheelt de aanvaller een centrale lijst van besmette sites, en het geeft de verdediger een precies zoekpatroon, want je kunt exact uitrekenen welke gebruikersnaam je moet zoeken.

Het commandoserverdomein achter de campagne is volgens Wordfence hetzelfde als bij twee eerdere pluginkapingen van de afgelopen twee maanden, bij Advanced Responsive Video Embedder en bij OptinMonster.

Het WordPress-beheerscherm met in de linkerkolom onder meer de menu-items Plugins en Gebruikers (Bron: Gwydion M. Williams / Wikimedia Commons, CC BY 4.0)
Het WordPress-beheerscherm met in de linkerkolom onder meer de menu-items Plugins en Gebruikers (Bron: Gwydion M. Williams / Wikimedia Commons, CC BY 4.0)

Waar je nu kijkt

Draai je een van de zeven plugins (Element Pack, Prime Slider, Pixel Gallery, Ultimate Post Kit, Ultimate Store Kit, Live Copy Paste of Smart Admin Assistant), begin dan niet in het beheerscherm, want daar haalt de verbergmodule de nieuwe accounts juist weg. Kijk in de database en op schijf.

  • Gebruikers: accounts met een e-mailadres op wordpress.org of developer.wordpress.org, en gebruikersnamen die beginnen met bd_ gevolgd door zes tekens.
  • Bestanden: emer-run.php, en in de mu-plugins-map class-wp-token-validate.php, een class-wp-query-bestand met een willekeurige achtervoeging, en wp-cache-optimizer.php.
  • Instellingen: de opties fz_emer_login_tokens en fz_emer_done_v1 in de optietabel.

Vind je iets, dan is opruimen alleen niet genoeg: ververs alle beheerderswachtwoorden en de geheime sleutels in wp-config.php, zodat lopende sessies eruit vliegen. Wordfence-klanten met een betaald abonnement kregen de detectieregels op 7 augustus, gratis gebruikers krijgen ze pas na de standaardvertraging van dertig dagen, dus rond 6 september.

De campagne kan al sinds 23 juni actief zijn geweest, de begindatum die in het vergiftigde JSON-bestand stond. Wordfence werd op 7 augustus gewaarschuwd en zag de aanval diezelfde dag in het wild, waarna de plugins uit de pluginmap gingen en de eindpunten op 8 augustus weer schone JSON teruggaven. BdThemes heeft er zelf nog geen verklaring over gepubliceerd.

Een inkoopkeuze, geen onderhoudskwestie

Patchen dicht een gat maar verwijdert geen achterdeur, en dit incident duwt die regel een stap verder: hier viel er niets te patchen. Er kwam geen update binnen, er veranderde geen bestand, en de versiecheck bleef groen. Wat er wel gebeurde, is dat een leverancier de controle over zijn eigen opslagbucket verloor en dat die bucket rechtstreeks JavaScript mocht uitvoeren in het scherm waar een beheerder is ingelogd.

Bij elke plugin die je installeert kies je niet alleen code, maar ook een blijvende verbinding naar de servers van de maker. Die verbinding staat nog open lang nadat de installatie klaar is, en niemand controleert hem opnieuw. Het is dezelfde verschuiving als bij grote IT-toeleveranciers, waar niet het bedrijf zelf maar het account dat de leverancier in jouw omgeving heeft het echte aanvalsoppervlak vormt. Drie pluginkapingen in twee maanden, met hetzelfde commandoserverdomein erachter, laten zien dat aanvallers die conclusie al hebben getrokken.

Veelgestelde vragen

Alisina Nawabi
Geschreven doorAlisina Nawabi

AI Product Engineer & Solutions Architect

Minder plugins, meer grip

Als je site of platform afhangt van een stapel plugins die live meepraten met de servers van hun makers, denk ik graag mee over wat je zelf in handen wilt houden. Ik doe het hele traject, van meedenken en ontwerp tot bouwen, koppelen en automatiseren, self-hosted waar dat kan.

Meer informatie

Dit artikel is geproduceerd samen met het Agent Team. Meer over de redactie.

Gerelateerde artikelen

WordPress-patchroutine voor het mkb: van noodpatch naar cadans
Gids
Uitgebreide gids13 min

26 jul 09:00

WordPress-patchroutine voor het mkb: van noodpatch naar cadans

Een kernlek in WordPress wordt binnen uren misbruikt. Deze gids loopt eerst de sporencheck af (ben je al binnen geweest?) en bouwt daarna de routine: gelaagde auto-updates, staging, pluginaudit en monitoring.

Alibaba wil omzetdeling vragen voor de volgende open-source Qwen
Nieuws
4 min

7 aug 04:10

Alibaba wil omzetdeling vragen voor de volgende open-source Qwen

Alibaba wil grote gebruikers van de volgende open-source Qwen een deel van hun omzet laten afdragen, meldt Reuters. Het sjabloon staat al in de licentie van Kimi K3: boven 20 miljoen dollar omzet volgt een aparte overeenkomst.

OpenAI geeft gratis ChatGPT onbeperkte tekstgesprekken op GPT-5.6 Luna
Nieuws
5 min

6 aug 20:10

OpenAI geeft gratis ChatGPT onbeperkte tekstgesprekken op GPT-5.6 Luna

OpenAI maakt tekstgesprekken in gratis ChatGPT onbeperkt en zet GPT-5.6 Luna als standaardmodel. Dat verschuift de rekensom voor betaalde werkplekken en vergroot het gebruik van privéaccounts zonder zakelijke afspraken over data.

PrestaShop koppelen aan Twinfield: de route langs het pakket van je accountant
Gids
Uitgebreide gids16 min

4 aug 09:00

PrestaShop koppelen aan Twinfield: de route langs het pakket van je accountant

Je Twinfield-administratie staat vaak op naam van je accountant, en dat bepaalt of je PrestaShop-koppeling er komt. De vijf vragen die je eerst stelt, de vier routes, en wat elke route echt kost.

Exact Online koppelen: standaardconnector, integratieplatform of maatwerk?
Gids
Uitgebreide gids14 min

2 aug 21:01

Exact Online koppelen: standaardconnector, integratieplatform of maatwerk?

Je draait Exact Online en wilt er een webshop, ordersysteem of urenregistratie aan hangen. Deze gids kiest de route: een kant-en-klare app uit het App Center, een integratieplatform of een eigen koppeling op de API, met de echte kosten erbij.

Google Analytics vervangen: Matomo, Plausible of zelf hosten
Gids
Uitgebreide gids12 min

2 aug 13:04

Google Analytics vervangen: Matomo, Plausible of zelf hosten

Je cookiebanner is geen bewijs dat je goed zit. Deze gids vergelijkt Matomo On-Premise, Matomo Cloud en Plausible op toestemming, kosten en dataeigendom, met een migratiepad vanaf GA4 en wat je aan historie kwijtraakt.