Nulled plugins zijn kopieën van betaalde WordPress-plugins waaruit de licentiecontrole is verwijderd, zodat ze draaien zonder gekochte sleutel, verspreid via externe websites voor niets of voor een paar euro. Voor premium themes bestaat dezelfde markt. Eerst het verrassende deel: ze verspreiden is vaak niet eens illegaal, omdat de meeste WordPress-plugins de GPL-licentie erven, en die staat herdistributie uitdrukkelijk toe. Het gevaarlijke deel is al het andere. Nulled kopieën zijn afgesneden van officiële updates, dus elk beveiligingslek blijft open zolang de site bestaat. Erger nog: de sites die ze verspreiden hebben een sterke prikkel om de code aan te passen, en beveiligingsonderzoekers vinden precies dat, keer op keer: backdoors, verborgen beheerders, geïnjecteerde SEO-spam en dieven van inloggegevens, verpakt in illegale plugins. De WP-VCD-malware, een van de meest verspreide WordPress-infecties ooit gedocumenteerd, verspreidde zich vrijwel volledig langs deze weg. Een nulled plugin komt neer op het draaien van ongecontroleerde code van een anonieme bron, met volledige toegang tot je database, je gebruikers en je reputatie.
Wat betekent nulled?
De term komt uit de warezscene van de jaren negentig, waar nulled stond voor software waar de kopieerbeveiliging uit was gesloopt. Toegepast op WordPress: een premium plugin belt normaal gesproken met een licentiesleutel naar de leverancier voordat updates en support worden vrijgegeven. Bij een nulled kopie is die controle verwijderd of kortgesloten, waardoor de plugin zich gedraagt alsof hij volledig gelicentieerd is. De verspreiding loopt via speciale downloadportalen, forums en marktplaatsen die duizenden premium plugins en themes aanbieden, gratis of als goedkoop abonnement met onbeperkte downloads.
Het loont om twee dingen te scheiden die vaak door elkaar lopen. Er bestaan zogeheten GPL-clubs die ongewijzigde kopieën van GPL-gelicentieerde plugins doorverkopen, wat een juridisch grijs tot wit gebied is waar we hieronder naar kijken. En er zijn nulled distributeurs waarvan de kopieën zijn aangepast, en daar zit de veiligheidsnachtmerrie. Van buitenaf zien die twee er identiek uit, en dat is precies het probleem: je hebt geen enkele manier om te controleren wat er is veranderd.
Zijn nulled plugins legaal? De GPL-vraag eerlijk beantwoord
WordPress valt onder de GNU General Public License, en het officiële standpunt van het project is dat plugins en themes die licentie als afgeleide werken erven. De GPL geeft iedere ontvanger het recht om de code te gebruiken, aan te passen en te herdistribueren, ook commercieel. Dat betekent dat een pure codekopie van de meeste premium plugins legaal mag worden doorgegeven door iedereen die hem heeft verkregen. Dit is geen maas in de wet, het is de expliciete bedoeling van de licentie, en het is de reden dat leveranciers licentiesleutels verkopen voor updates en support in plaats van voor de code zelf.
Er zijn grenzen. Merknamen vallen niet onder de GPL, dus portalen die de merknaam en het logo van een plugin gebruiken om kopieën te verkopen, staan op veel dunner ijs. Meegeleverde bestanden zoals afbeeldingen, lettertypen of bibliotheken van derden kunnen andere licenties dragen. En in sommige producten is de code gesplitst gelicentieerd, met de PHP onder de GPL en de JavaScript of CSS onder een gesloten licentie. Maar de eerlijke samenvatting blijft: het gevaar van nulled plugins was nooit in de eerste plaats juridisch. Het is technisch, en het begint op het moment dat iemand met onbekende motieven de code bewerkt voordat jij hem downloadt.
Waarom nulled plugins gevaarlijk zijn: nooit meer updates
Zelfs een nulled plugin waar niemand aan heeft gesleuteld, heeft een ingebouwde houdbaarheidsdatum. Zonder licentiesleutel kan hij niet praten met de updateserver van de leverancier, dus hij blijft stilletjes hangen op de versie die je hebt gedownload. In een ecosysteem waarin volgens Patchstack elk jaar duizenden nieuwe pluginkwetsbaarheden worden gepubliceerd, is dat een incident in slow motion. Verschijnt er een beveiligingsrelease voor de plugin, dan werkt elke legitieme installatie bij en blijft elke nulled installatie kwetsbaar. Aanvallers weten dat en scannen gericht op oude versies van populaire premium plugins, omdat juist die installaties bovengemiddeld vaak nulled en ongepatcht zijn.
Het updateprobleem stapelt zich stilletjes op: een site met één nulled plugin draait er meestal meerdere, allemaal bevroren op hun downloaddatum, allemaal bekende CVE's aan het verzamelen. Na een jaar of twee is zo'n site geen gehard doelwit meer waar een zeroday voor nodig is. Het is een open deur.
Welke malware verstopt zich in nulled plugins?
Beveiligingsbedrijven ontleden regelmatig geïnfecteerde illegale plugins, en de ladingen volgen bekende patronen:
- Backdoors. Een paar regels versluierde PHP waarmee de aanvaller later willekeurige code kan uitvoeren, lang nadat de plugin er onschuldig uitziet. De plugin verwijderen haalt de backdoor er vaak niet uit, want die heeft zichzelf al elders gekopieerd.
- Verborgen beheerdersaccounts. Code die stilletjes een beheerder aanmaakt of op afroep inloggegevens reset, wat volledige toegang tot het dashboard oplevert.
- SEO-spaminjectie. Links naar gok-, medicijn- of scriptiesites die in je pagina's worden geïnjecteerd, vaak alleen zichtbaar voor crawlers van zoekmachines, zodat de eigenaar ze nooit ziet. Jouw posities betalen de rekening.
- Kwaadaardige doorverwijzingen. Bezoekers worden naar oplichtings- of malwarepagina's gestuurd, soms alleen vanaf mobiele apparaten of uit bepaalde landen, om de ontdekking te vertragen.
- Diefstal van inloggegevens en kaartgegevens. Op WooCommerce-sites kan geïnjecteerde JavaScript betaalformulieren afromen, en buitgemaakte logins voeden de volgende aanvalsgolf.
Het schoolvoorbeeld is de malwarefamilie WP-VCD, die Wordfence documenteerde in een rapport met de treffende titel The Malware You Installed On Your Own Site. WP-VCD verspreidde zich vrijwel uitsluitend via nulled plugins en themes, verstopte zijn backdoor in legitiem ogende bestanden, infecteerde alle andere sites op hetzelfde hostingaccount en verdiende geld met spam en doorverwijzingen. Op het hoogtepunt behoorde het tot de meest voorkomende WordPress-infecties die überhaupt werden gezien, en elk slachtoffer had het zelf geïnstalleerd.
Hoe controleer je of een plugin nulled of geïnfecteerd is?
Neem je een site over of vermoed je dat er ooit een kortere weg is genomen, let dan op deze signalen:
- Onbekende beheerders. Loop elk account met beheerders- of redacteursrechten na. Alles wat je niet kunt thuisbrengen is een alarmsignaal.
- Plugins die nooit updaten. Een premium plugin die al een jaar geen update toont terwijl de changelog van de leverancier gewoon doorloopt, is ofwel nulled ofwel verlaten.
- Spam in de zoekresultaten. Zoek op je domein en kijk of Google pagina's of zoekwoorden toont die je nooit hebt geschreven. Verhulde spam duikt daar het eerst op.
- Gewijzigde of extra bestanden. Een integriteitsscanner markeert PHP-bestanden die afwijken van de originelen van de leverancier of die op plekken staan waar geen enkele plugin hoort te schrijven, zoals wp-content/uploads.
- Versluierde code. Lange base64-strings, aanroepen van eval() en variabelenamen als $wp_v_cd in pluginbestanden verdienen onmiddellijk aandacht.
Bevestig je een infectie, dan is opruimen meer dan de plugin verwijderen, want backdoors blijven zelfstandig bestaan. Zet een schone back-up terug of voer een volledige malwareopruiming uit, en wissel daarna elk wachtwoord en elke salt in wp-config.php.
Veilige alternatieven voor nulled plugins
De ongemakkelijke waarheid is dat nulled plugins een echt probleem oplossen, namelijk budget, op de slechtst denkbare manier. Betere opties, op volgorde van voorkeur:
- Gebruik de gratis versie. Vrijwel elke grote premium plugin heeft een bruikbare gratis kern in de officiële directory, met code die een review heeft doorstaan en updates die vanzelf binnenkomen.
- Kies een gratis concurrent. De officiële directory herbergt ongeveer 60.000 plugins. Voor de meeste betaalde functies bestaat er een degelijk gratis alternatief.
- Koop de licentie. Jaarlijkse licenties voor de meeste plugins kosten minder dan één uur incidentafhandeling. Zo bekeken is het goedkope verzekering, inclusief support.
- Moet je toch een GPL-doorverkoper gebruiken, behandel de code dan als onbetrouwbaar. Vergelijk hem vóór ingebruikname met een kopie waarvan je weet dat die goed is. Kun je dat niet, dan kun je het risico dat je neemt ook niet inschatten.
Hoe helpt InspectWP je plugins eerlijk te houden?
InspectWP herkent de geïnstalleerde plugins en themes van een geanalyseerde WordPress-site inclusief hun versies, markeert versies met bekende kwetsbaarheden en laat zien wanneer een plugin uit de officiële directory is verwijderd, wat vaak het eerste openbare signaal is dat er iets mis mee is. Verouderde premium plugins die over meerdere geplande rapporten heen nooit bewegen, zijn precies het patroon dat een nulled installatie oplevert, dus terugkerende rapporten maken dit faalpatroon zichtbaar in plaats van onzichtbaar. En laat een site die je doorlicht zowel bevroren plugins als spambevindingen in de SEO-checks zien, dan heeft dit artikel je zojuist het waarschijnlijke verhaal achter allebei gegeven.