Bouw je alles zelf of gebruik je "code-bibliotheken"? Met alle risico's die daarbij horen.

Ingediend door Dirk Hornstra op 15-apr-2024 19:00

Online is veel software "gratis" beschikbaar. Open-source software, waarbij je soms de gegevens van de auteurs moet vermelden. Met verschillende licentie-types, bijvoorbeeld als je zelf een aanpassing maakt, je die aanpassing ook weer "terug moet geven aan de community".

Maar voor het grootste deel gebruiken we de code "as is". Want waarschijnlijk kan geen enkel bedrijf meer "alles" zelf bouwen, omdat het dan qua tijd en kosten ervoor zorgt dat het bedrijf niet meer op tijd en niet meer tegen een "goede prijs" het product kan leveren.

Het risico van het gebruik van "externe code" is dat je nooit exact weet wat die software doet. Want het is mooi dat die codebibliotheek ervoor zorgt dat automatisch thumbnails van je afbeeldingen aangemaakt worden, maar stuurt hij ook stiekem een soort "call home" bericht naar één van de auteurs van de code die daar misbruik van kan maken?

En het is niet alleen dat wij als developers gebruik maken van open-source zaken, ook "grote producten" maken daar gebruik van. Onder andere Linux-distributies. En daar wil ik het hier even over hebben;

 

Mijn collega Jeroen vroeg me: "Heb je het verhaal al gelezen van die backdoor?". Mijn antwoord was: "Nee, wat is er aan de hand dan?". En toen liet hij mij het xz Utils verhaal lezen.

xz Utils is een compressietool. Als ik de oude Github-pagina bekijk dan staat bij de beschrijving dat .xz bestanden gemaakt worden en de resulterende bestanden over het algemeen 30% kleiner zijn dan .GZIP-bestanden. De tool wordt gebruikt bij Linux distributies.

Het is een open-source project. Dat betekent dat iedereen aan het project kan werken en aanpassingen/verbeteringen kan voorstellen. De eigenaar van de repositorie bepaalt of de wijzigingen ingecheckt kunnen/mogen worden en indien OK, voert hij/zij dat door.

Het lijkt erop dat iemand die al een aantal jaar goede code-aanpassingen doorgevoerd heeft nu iets heeft ingebouwd dat, als het op Linux-installaties geïnstalleerd zou zijn, de mogelijkheid zou bieden om van buitenaf computers "over te kunnen nemen". Dat is iets waarvan je nekhaar toch wel redelijk overeind gaat staan.

Op X kun je een Infographic vinden.

Er zal vast wel een onderzoek gestart worden, want is het echt zo dat deze persoon zo geslepen is dat hij/zij de afgelopen jaren bezig is geweest om een goede reputatie op te bouwen en zo deze codewijziging "ongemerkt" heeft toegevoegd? Of was dit niet de intentie, maar is hij/zij door andere partijen "onder druk gezet" om dit te doen? Of heeft iemand het account van deze persoon overgenomen en deze aanpassing ingediend?

Hiermee wordt wel een beetje het closed-source / open-source principe geraakt. Supporters van closed-source zullen nu zeggen: "Het product wordt binnen ons bedrijf ontwikkeld, wij weten wie er aan werken en ook wat ze doen. Dit zal bij ons niet voorkomen.". Want open-source-contributors hebben "geen binding met de eigenaar" en hoewel het een soort "vriendendienst is" om mee te werken aan open-source-projecten weet je niet echt wie aan de andere kant van de lijn zit.

Maar het andere is ook waar. Want als het "closed-source" was geweest, een "bad party" in het bedrijf had dit uitgevoerd, dan was het misschien niet gedetecteerd of pas na lange tijd. Om dat bij open-source de broncode openbaar is, kun je onderzoeken wat er allemaal gebeurt, wat hier dus ook gedaan is.

Linux-distributies zijn allang niet meer "alleen voor de hobbyist". Online omgevingen in de cloud zijn voor een groot deel Linux-based. Dus behalve dat het thuis van belang is dat je jouw netwerk en computers "op orde hebt", dan geldt nog in hogere mate voor jouw online omgeving. Want als je de calculator gebruikt en ziet dat er een bepaald kostenplaatje aan jouw online omgeving hangt, vaak begin je dan te strepen. Dat kan wel weg, dat is niet nodig. Maar let dus wel op dat je essentiële zaken voor security wel behoudt. Want thuis zit je toch ook niet rechtstreeks met je computer aangesloten op je internetmodem. Toch? Als dat wel zo is, dan adviseer ik je om toch eens rond te kijken naar een router, firewalls en alle andere ellende.

Mocht je van mijn generatie zijn, dan weet je nog wat het "Blaster virus" was. Als jouw computer via je 56k6 modem aangesloten was op het Internet en je had nog niet het vereiste ServicePack geïnstalleerd, dan werd je computer opnieuw opgestart. En daarna weer. En daarna weer, via RPC calls.

Mocht je meer over dit incident van xz Utils willen weten, hier een aantal sites met informatie:

 

De moraal van dit verhaal?

  • Blijf kritisch op welke codebibliotheken je gebruikt. Biedt een "betrouwbare partij" de functionaliteit aan, een partij die zich verantwoordelijk voelt voor wat ze online zetten en daarom zeker interne controles uit zal voeren voor wijzigingen geaccepteerd worden? Dat is beter dan mister X die de code aanbiedt.
  • Hou inzicht op welke externe componenten je gebruikt. En ook of daar "vulnerabilities" in zitten die (snel) gepatchts/geüpgrade moeten worden. Zorg dat je via cvedetails dit in de gaten houdt.
  • Zorg dat je monitort "wat je software doet". Als er "ineens onverklaarbare" HTTP-requests "naar buiten" gaan, dan kan dat een indicatie zijn dat er iets in je software zit wat er niet hoort of dingen doet die het niet hoort te doen.