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

Aanvallers misbruiken kritiek uploadlek in Elementor Pro
Nieuws
4 min

3 sep 12:22

Aanvallers misbruiken kritiek uploadlek in Elementor Pro

Een kritiek uploadlek in Elementor Pro wordt sinds 19 augustus actief misbruikt op WordPress-sites. Wordfence blokkeerde ruim 190.000 pogingen. Versie 4.2.2 dicht het gat, maar de changelog van Elementor verraadt die urgentie nergens.

Ruim 5.400 gehackte bedrijfssites serveren een nep-CAPTCHA vanaf de blockchain
Nieuws
4 min

5 sep 18:09

Ruim 5.400 gehackte bedrijfssites serveren een nep-CAPTCHA vanaf de blockchain

Netskope telde ruim 5.400 gehackte WordPress- en PrestaShop-sites die hun bezoekers een nep-CAPTCHA voorschotelen. De code staat in een smart contract op een testnet, dus opschonen van je eigen site is de enige uitweg.

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.

Hoveniersbedrijf: onderhoudsrondes plannen met weer, werkbon en klantbewijs
Gids
Uitgebreide gids16 min

24 sep 17:00

Hoveniersbedrijf: onderhoudsrondes plannen met weer, werkbon en klantbewijs

Richt onderhoudscontracten in als een controleerbare keten: plan per seizoen en weersvenster, leg uren, materiaal en foto’s vast, laat de klant bevestigen en factureer pas na een duidelijke vrijgave.

Inkomende e-facturen: UBL, uitzonderingsqueue en menselijke vrijgave
Gids
Uitgebreide gids18 min

21 sep 09:00

Inkomende e-facturen: UBL, uitzonderingsqueue en menselijke vrijgave

Een e-factuur is nog geen boeking. Bewaar de UBL-bron, match op order, ontvangst of verplichting, routeer afwijkingen naar een queue en laat een mens de boekingsvrijgave geven.

Aannemer: zo bouw je per project een compleet consumentendossier
Gids
Uitgebreide gids16 min

18 sep 09:00

Aannemer: zo bouw je per project een compleet consumentendossier

Leg afspraken, wijzigingen, materialen, foto’s, keuringsstukken en opleverpunten vast terwijl het werk loopt. Zo groeit per woning en onderdeel een consumentendossier dat je bij oplevering kunt controleren en compleet overdragen.