Package afhankelijkheden: de verborgen killer

Het gebruiken van externe packages in je applicaties om het leven makkelijker te maken is iets wat we allemaal doen, maar waar we vaak de gevaren niet goed van voor ogen hebben. Het grote voordeel van open source code uit de community zou moeten zijn dat we op het werk van anderen kunnen leunen én erop kunnen vertrouwen dat andere mensen de code op veiligheid controleren. Zoals deze week in het volgende artikel weer eens werd bewezen, is dit helaas een utopisch waanbeeld:

In dit geval betreft het NPM-packages die gebruikt worden voor het maken van Discord bots. (Discord is een populair communicatie platform wat tegenwoordig ook vaak door bedrijven wordt gebruikt. Het is gebruikelijk om binnen het platform “bots” te gebruiken die onder andere geautomatiseerde berichten kunnen versturen). Deze worden in groten getale geschreven door de community in talen als Python en JavaScript (Node.JS). Hierbij wordt, net zoals in bijna alle applicaties tegenwoordig, gebruik gemaakt van externe packages.

 

Het gevaar zit in de handigheid

 

Omdat het zo makkelijk is om een package te zoeken die de functionaliteit biedt die je zelf niet kan of wil schrijven, stoppen we veel te veel vertrouwen in onze engelen uit de community. Alhoewel er ontelbare goed te gebruiken packages te vinden zijn die geen verder gevaar vormen, is de toenemende hoeveelheid kwaadaardige code zeker iets om maatregelen tegen te nemen.

 

Het lijkt onmogelijk om alle externe packages te controleren

 

En dat is het ook! Daarom is dit iets wat geautomatiseerd moet worden. Wanneer je gebruik maakt van een CI-capable code repository, is het ongelooflijk makkelijk om dit in te stellen. Neem als voorbeeld GitLab. Binnen het platform is het mogelijk om ‘Dependency Scanning‘ in te schakelen. Je krijgt dan automatisch een rapport over de veiligheidsstatus van alle packages gebruikt in je applicatie. Het is dan nog maar een kleine moeite om uit te zoeken welke package versie niet kwetsbaar is (of welk alternatief er gebruikt kan worden). Zo maak je van een verborgen killer, een beheerst risico.

Geïnteresseerd in hulp bij het realiseren van een veiligere applicatie? Kijk op: salt-security.com/appsec-engineering

Thomas van den Nieuwenhoff

Thomas van den Nieuwenhoff

Security Blogger voor SALT Cyber Security en student HBO-ICT Infrastructure Design & Security op Windesheim.