JavaScript-bugs in overvloed in Node.js-ecosysteem – automatisch gevonden – Naked Security

Hier is een interessant artikel van de recente USENIX-conferentie in 2022: Mining Node.js Kwetsbaarheden via Object Dependence Graph en Query.

We gaan hier een beetje vals spelen door niet in te gaan op het kernonderzoek dat door de auteurs van het artikel is gepresenteerd en het uit te leggen (enige wiskunde en kennis van operationele semantische notatie is wenselijk bij het lezen), wat een methode is voor de statische analyse van de broncode die ze ODGEN noemen, een afkorting voor Grafiekgenerator voor objectafhankelijkheid.

In plaats daarvan willen we ons concentreren op de implicaties van wat ze konden ontdekken in het Node Package Manager (NPM) JavaScript-ecosysteem, grotendeels automatisch, door hun ODGEN-tools in het echte leven te gebruiken.

Een belangrijk feit hier is, zoals we hierboven vermeldden, dat hun tools bedoeld zijn voor wat bekend staat als: statische analyse.

Dat is waar je de broncode wilt controleren op waarschijnlijke (of daadwerkelijke) coderingsblunders en beveiligingslekken zonder deze daadwerkelijk uit te voeren.

Testen door het uit te voeren is een veel tijdrovender proces dat over het algemeen langer duurt om in te stellen en langer om te doen.

Zoals je je wel kunt voorstellen, zijn de zogenaamde dynamische analyse – daadwerkelijk de software bouwen zodat u deze kunt uitvoeren en op gecontroleerde manieren kunt blootstellen aan echte gegevens – geeft over het algemeen veel grondigere resultaten en is veel waarschijnlijker om mysterieuze en gevaarlijke bugs aan het licht te brengen dan eenvoudig “er zorgvuldig en intuïtief naar te kijken hoe het werkt ”.

Maar dynamische analyse is niet alleen tijdrovend, maar ook moeilijk om goed te doen.

Hiermee bedoelen we echt dat dynamisch softwaretesten is: heel gemakkelijk om slecht te doen, zelfs als je er eeuwen mee bezig bent, want het is gemakkelijk om te eindigen met een indrukwekkend aantal tests die toch niet zo gevarieerd zijn als je dacht, en dat je software vrijwel zeker zal slagen, wat er ook gebeurt. Dynamisch softwaretesten eindigt soms als een leraar die jaar na jaar dezelfde examenvragen stelt, zodat studenten die zich volledig hebben geconcentreerd op het oefenen van ‘oude papers’ het net zo goed doen als studenten die het onderwerp echt onder de knie hebben.