Er zit een moment in het leven van elke plugin dat u nooit meekrijgt maar dat wel bepaalt of uw site veilig blijft. Een onderzoeker vindt een fout, meldt die bij de maker, de maker brengt een update uit, en enkele dagen later wordt de fout openbaar gemaakt met een omschrijving van hoe hij werkt. Vanaf dat moment weet iedereen het. Ook mensen met andere bedoelingen.

Voor een ondernemer klinkt een WordPress kwetsbaarheid in een plugin abstract. In de praktijk is het heel concreet: tussen het bekend worden van het lek en het installeren van de update ligt een venster waarin uw site aantoonbaar te openen is. Hoe kort dat venster is, bepaalt u zelf. Dit artikel laat zien hoe de keten werkt, welke bronnen er zijn en hoe u het bijhoudt zonder er dagelijks mee bezig te zijn.

Hoe een kwetsbaarheid openbaar wordt

De gebruikelijke gang van zaken is deze. Een beveiligingsonderzoeker of een gespecialiseerd bedrijf vindt een fout in een plugin: bijvoorbeeld een formulier waarmee een bezoeker bestanden kan uploaden zonder controle, of een instelling die zonder rechtencontrole aangepast kan worden. De onderzoeker meldt dat bij de maker en geeft die tijd om het op te lossen, meestal enkele weken.

De maker brengt een nieuwe versie uit. Soms staat er in de release notes precies wat er is opgelost, soms alleen “diverse verbeteringen”. Daarna wordt de kwetsbaarheid opgenomen in openbare databases, met een classificatie en een ernstscore. Bij de meeste plugins volgt dan een korte periode waarin scanners het internet aflopen op zoek naar sites die de update nog niet hebben.

Belangrijk om te snappen: die scanners kijken niet of ú interessant bent. Ze kijken of uw site een verouderde versie draait. Een tandartspraktijk in Drenthe en een grote webshop worden op precies dezelfde manier gevonden. Er is geen “wij zijn te klein om doelwit te zijn”.

Waar die informatie te vinden is

De bronnen die wij dagelijks volgen zijn openbaar. U kunt ze zelf ook raadplegen:

  • Gespecialiseerde kwetsbaarheidsdatabases voor WordPress. Er zijn er meerdere die plugin- en themakwetsbaarheden verzamelen, met per melding de getroffen versies, de ernst en of er al misbruik is gezien. Een aantal biedt gratis dagelijkse meldingen per e-mail.
  • Het WordPress-pluginregister zelf. Wordt een plugin gesloten wegens een beveiligingsprobleem, dan verdwijnt de downloadpagina. Dat is een sterk signaal dat vaak vóór de officiële melding komt.
  • De changelog van de plugin. Formuleringen als “security fix”, “hardening” of “sanitized input” betekenen dat er iets is opgelost dat misbruikt kon worden.
  • De officiële beveiligingsberichten van WordPress zelf, voor kwetsbaarheden in de kern. Die zijn zeldzamer maar treffen dan wel iedereen tegelijk.
  • Meldingen van beveiligingsplugins die zelf een database bijhouden en u waarschuwen als een van uw plugins erin staat.

Zet u dit voor uzelf op, dan is het belangrijkste dat u weet welke plugins u draait. Zonder een actuele lijst zijn alle meldingen ruis.

Waarom ernstscores niet het hele verhaal zijn

Elke melding krijgt een score van 0 tot 10. Het is verleidelijk om alleen op de hoge scores te reageren, maar dat is te grof. Drie dingen wegen in de praktijk zwaarder:

Is de fout te misbruiken zonder in te loggen? Een kwetsbaarheid die alleen werkt voor iemand die al beheerder is, is minder urgent dan een die vanaf de openbare kant werkt. Die laatste categorie verdient dezelfde dag aandacht, ook bij een gemiddelde score.

Hoe populair is de plugin? Een lek in een plugin met een miljoen installaties trekt binnen uren geautomatiseerde aanvallen. Een lek in een plugin met driehonderd installaties zelden.

Is er al misbruik gezien? Zodra een kwetsbaarheid actief wordt uitgebuit, verschuift het van “we plannen het in” naar “vanavond nog”.

Dat afwegen is het werk. De meldingen binnenkrijgen is makkelijk; bepalen wat ertoe doet, kost tijd. Van de tientallen meldingen per week raken er meestal maar een of twee de sites die wij beheren.

Wat u doet als er iets in uw lijstje staat

  1. Controleer welke versie u draait. In het pluginoverzicht staat het versienummer. Vergelijk dat met de versies die volgens de melding kwetsbaar zijn.
  2. Maak een back-up voordat u iets bijwerkt. Altijd, ook bij een spoedgeval; juist dan.
  3. Werk bij. Bij een kritiek lek in een populaire plugin is dat geen kwestie van “in de volgende onderhoudsronde”. Test het op een staging-omgeving als de site complex is, en zet het daarna live.
  4. Is er geen update? Dat gebeurt: soms wordt een plugin niet meer onderhouden. Dan deactiveert en verwijdert u hem, en zoekt u een alternatief. Deactiveren alleen is niet genoeg, want de bestanden blijven staan en blijven soms bereikbaar.
  5. Controleer achteraf. Was uw site langere tijd kwetsbaar, dan is bijwerken niet hetzelfde als schoon zijn. Kijk of er onbekende beheerdersaccounts of gewijzigde bestanden zijn.

Kunt u een kritieke update niet meteen uitvoeren, bijvoorbeeld omdat er maatwerk aan hangt, dan is een firewall vóór de site een tijdelijke buffer. Hij blokkeert de bekende aanvalspatronen terwijl u de update voorbereidt. Hoe zo’n filter precies werkt, leggen wij uit in het artikel over de web application firewall.

Hoe wij het praktisch inrichten

Voor elke site die wij beheren houden wij een actuele lijst bij van WordPress-versie, thema, plugins en versienummers. Meldingen uit meerdere databases komen dagelijks binnen en worden automatisch tegen die lijsten gelegd. Wat geen enkele site raakt, verdwijnt. Wat wel raakt, krijgt een van drie labels: vandaag, deze week, of meenemen in de reguliere ronde.

Bij “vandaag” wordt eerst een back-up gemaakt, dan getest op een staging-omgeving en dan uitgerold. Doordat het technische team op afstand werkt met een tijdsverschil, is zo’n update vaak al doorgevoerd voordat de Nederlandse werkdag begint. Dat is geen bijzondere prestatie, het is een kwestie van indeling.

Het onderdeel dat het meeste oplevert is saai: het bijhouden van de lijst. Een plugin die er stilletjes bij komt omdat iemand iets probeerde, staat nergens geregistreerd en wordt dus ook niet gevolgd. Daarom hoort een periodieke opruimronde erbij, waarin wat niemand meer gebruikt eruit gaat.

Zelf doen of uitbesteden

Heeft u één site met een handvol plugins en kijkt u elke week even, dan is dit heel goed zelf te doen. Meld u aan voor een dagelijkse mailing, houd uw pluginlijst bij en werk snel bij. De grootste valkuil is niet het gebrek aan kennis maar het gebrek aan regelmaat: het gaat mis in de drukke maanden.

Heeft u een webshop, meerdere sites of maatwerk waarbij een update iets kan breken, dan wordt het een taak die aandacht en een testomgeving vraagt. Bij ons hoort het volgen van kwetsbaarheden bij de beveiligingsdienstverlening, met een maandrapport waarin staat wat er is bijgewerkt en waarom. U hoeft de meldingen dan niet te lezen, maar u kunt wel teruglezen wat er is gebeurd.

Wat u ook kiest, begin met dit: open uw pluginoverzicht en kijk hoeveel plugins er meer dan een jaar geen update hebben gehad. Dat getal zegt meer over uw risico dan welke score in een database dan ook.