Woensdag 21 oktober was geen dag om rustig koffie te drinken. Binnen een paar uur werden twee grote kwetsbaarheden bekendgemaakt: één in PHP en één in Node.js. Samen vormen die technieken de basis van een flink deel van de websites, webshops en apps die je dagelijks gebruikt.
Vooral het PHP-lek, inmiddels bekend als PHP2Shell, zorgde voor onrust. Een aanvaller kon op afstand code uitvoeren op een webserver, zonder in te loggen. De details lekten uit voordat er een oplossing beschikbaar was. Daardoor werden al aanvallen waargenomen terwijl iedereen nog op de update wachtte.
Verschillende Nederlandse websites, waaronder die van de Tweede Kamer en het NCSC, gingen uit voorzorg tijdelijk offline.
Diezelfde dag kondigde Node.js tien kwetsbaarheden aan, waarvan vier met een hoge ernst. Zowel PHP als Node.js brachten de benodigde updates pas later op de dag uit.
Weet je wat er in jouw app zit?
Een moderne app bestaat niet alleen uit code die je developers zelf schrijven. Onder de motorkap worden verschillende technologieën gebruikt, zoals programmeertalen, frameworks en serveromgevingen. Daarnaast maken apps gebruik van tientallen tot honderden externe bouwstenen, zoals libraries en open source-pakketten. Die noemen we dependencies.
Dat is logisch en efficiënt: je hoeft niet telkens het wiel opnieuw uit te vinden. Maar het betekent ook dat een lek in een van die onderdelen direct gevolgen kan hebben voor jouw product.
Op zo’n dag is de belangrijkste vraag daarom niet meteen: hoe lossen we dit op? De eerste vraag is: welke van onze applicaties gebruiken dit onderdeel, en welke versie draait daar?
Dat wil je weten vóórdat het nieuws uitbreekt, niet erna.
Altijd inzicht, nu geautomatiseerd en gestandaardiseerd
Bij Coffee IT hielden we al bij welke bouwstenen en versies onze projecten gebruiken. Dat inzicht hebben we nu verder geautomatiseerd en op dezelfde manier ingericht voor al onze projecten.
Daarvoor gebruiken we Renovate, een open source-tool. Elk project krijgt een eigen dependency dashboard met alle benodigde updates. We koppelen dit dashboard aan onze interne tooling. Zo hebben developers, projectmanagers en klanten hetzelfde inzicht in de technische staat van de applicatie en het onderhoud dat nodig is.
Zo werkt dat in de praktijk:

Elke vrijdagochtend een controle
Renovate controleert automatisch alle aangesloten projecten. Per bouwsteen kijkt de tool naar twee zaken:
- Is er een nieuwere versie beschikbaar?
- Is er een bekend beveiligingsprobleem?
Voor bekende kwetsbaarheden raadpleegt Renovate een openbare database.
Web, mobiel en backend
Of het nu gaat om een React-webapp, een app in React Native of Flutter, een native iOS- of Android-app of een backend: voor elke techniek hebben we een vaste set regels ingericht.
Daardoor werkt ieder project volgens dezelfde basisafspraken, terwijl er ruimte blijft voor technische keuzes die bij dat specifieke product horen.
Drie duidelijke sporen
We verdelen updates over drie categorieën:
- Security: beveiligingsupdates krijgen altijd voorrang.
- Routine: kleine onderhoudsupdates worden gebundeld.
- Major: grote updates kunnen onderdelen breken. Die bespreken we daarom eerst maandelijks met het team.
Zo behandelen we niet iedere update hetzelfde. Een beveiligingslek vraagt om snelheid, terwijl een grote versie-upgrade eerst een technische afweging nodig heeft.
Niets gaat automatisch live
Renovate doet voorstellen, maar voert updates niet zelfstandig door. Pas nadat een developer akkoord geeft, wordt een update klaargezet. Daarna doorloopt die onze gebruikelijke tests en code review, net als iedere andere wijziging.
Automatisch doorvoeren staat bewust uit. Een update kan op papier veilig lijken en toch gevolgen hebben voor de werking van een app. Daarom houden onze developers de regie.
Eén centrale plek voor de regels
De afspraken voor updates staan op één centrale plek. Als we iets willen aanpassen, hoeven we dat maar één keer te doen in plaats van afzonderlijk voor tientallen projecten.
Dat maakt de werkwijze niet alleen beter overdraagbaar, maar voorkomt ook dat projecten ongemerkt verschillende onderhoudsregels krijgen.
AI als versneller van onze eigen processen
Dit dashboard laat zien hoe wij AI inzetten. Niet alleen in producten die we voor klanten bouwen, maar ook bij de ontwikkeling van onze eigen tooling.
Daarmee kunnen we delen van ons werk versnellen en automatiseren. Onze developers blijven verantwoordelijk voor de afwegingen en uiteindelijke keuzes. AI ondersteunt het proces, maar neemt de regie niet over.
In ons AI manifest lees je hoe we AI verantwoord inzetten.
Eerlijk over de grenzen
Een leeg overzicht betekent in die gevallen dus niet automatisch dat alles veilig is. Daarom blijft er altijd een developer meekijken en delen we ook waar het inzicht nog onvolledig is.
Dat zagen we ook bij de Node.js-update. Een aantal eerdere Node-versies ontvangt helemaal geen beveiligingsupdates meer, ook niet voor de kwetsbaarheden die deze week bekend werden. Projecten die nog op zo’n versie draaien, moeten overstappen naar een nieuwere versie — ongeacht wat een tool aangeeft.
Die projecten pakken we nu één voor één op.

Nog lang niet klaar - en dat is prima
Het dashboard draait inmiddels bij de eerste projecten. De komende tijd sluiten we steeds meer projecten aan.
Daarnaast koppelen we het dependency dashboard aan ons interne tooling-ecosysteem. Zo zien developers, projectmanagers en klanten op één centrale plek hoe de applicatie er technisch voor staat, welke dependencies verouderd zijn en waar mogelijke beveiligingsrisico’s zitten.
Kwetsbaarheden zoals die van deze week zijn geen uitzondering meer. Ze horen bij software. Het verschil zit in hoe snel je ziet dat je geraakt bent, welke afwegingen je vervolgens maakt en hoe beheerst je een update doorvoert.
Daarom zien wij onderhoud en hosting als een vast onderdeel van ieder project. Niet als iets wat je oppakt wanneer er toevallig tijd over is. Als ontwikkelaar van apps met ISO 27001- en NEN 7510-certificering vinden we dat onze verantwoordelijkheid.
Is jouw app toe aan een APK?
Je auto gaat ieder jaar naar de garage voor een APK. Waarom zou je een app niet periodiek technisch laten controleren?
Misschien twijfel je of jouw app of website geraakt is door de kwetsbaarheden van deze week. Of je weet niet precies welke onderdelen verouderd zijn en welke risico’s dat oplevert.
Met een App APK analyseren onze developers de code, zoeken ze naar kwetsbaarheden en brengen ze verouderde onderdelen in kaart. Je ontvangt een helder rapport met concrete verbeterpunten. Zo weet je waar je staat en kun je onderbouwd bepalen wat eerst moet gebeuren.
Liever eerst je situatie bespreken? Neem vrijblijvend contact op!
.avif)



