Universiteit Leiden

nl en

Foute code zwerft al vijftien jaar rond: ‘Zo ingewikkeld is beveiliging dus’

Onderzoekers van het LIACS hebben een kwetsbaarheid ontdekt in een stukje code dat al vijftien jaar wereldwijd opduikt in opensourcesoftware. Ze ontwikkelden ook een geautomatiseerde manier om de fout te herstellen. ‘Je kan niet achterover leunen.’

Promovendus Jafar Akhoundali vond de code op Github, een platform waar softwareontwikkelaars hun code maken, opslaan en delen. De eerste versie die hij vond stamt uit 2010. De code is bedoeld voor een fileserver. De kwetsbaarheid stelt kwaadwillenden in staat een zogenoemde path traversal-aanval uit te voeren. Zo kunnen ze bij bestanden en mappen komen waar ze niet bij mogen – bijvoorbeeld wachtwoordbestanden.

Vibe coding

De software bleek populair en verspreidde zich naar andere plekken, zoals het vraag-en-antwoordplatform StackOverflow en naar bekende softwarebedrijven, universiteiten en YouTube-tutorials.

Omdat niemand het wiel opnieuw wil uitvinden, worden veel delen van softwarecode hergebruikt. ‘Mensen denken al snel dat opensourcesoftware veilig is, omdat de hele wereld meekijkt, maar dat is niet het geval’, zegt Akhoundali. De nieuwe trend van vibe coding, software programmeren met behulp van AI, maakt het gevaar van verspreiding van kwetsbare code alleen maar groter.

Large Language Models (LLM) zoals GPT, Claude en Copilot halen hun trainingsinformatie van plekken waar onveilige code staat. Het gevolg is dat ze ook kwetsbare code produceren.

‘Zij werken volgens het principe: rotzooi erin, rotzooi eruit. Dat zagen we ook toen we ze vroegen om dezelfde code te genereren. Zelfs als je ze expliciet vraagt om veilige code te maken, doen ze dat niet altijd. Je weet nooit zeker wat de bron is van je uitkomst en of die klopt, maar een LLM brengt zijn antwoord wel als waarheid. En veel LLM’s zijn vergiftigd met kwetsbare code, waarvan ze denken dat die goed is.’

De goede kant van AI

Tegelijkertijd gebruiken de onderzoekers AI om de gevonden kwetsbaarheden in de software te repareren. ‘We hebben een geautomatiseerde datapijplijn gemaakt, die in zeven stappen de foute code zoekt, analyseert en repareert’, legt Akhoundali uit.

Handmatig de juiste code vinden tussen al die tienduizenden stukjes mogelijk gevaarlijke code, is onbegonnen werk. ‘Onze pijplijn controleert de zoektocht naar de code, voert tests uit, selecteert de kwetsbare projecten, schat het risico in en verstuurt patches, volledig geautomatiseerd.'

In die laatste stap mag AI zich van haar goede kant laten zien. Met behulp van GPT4 worden patches, gerepareerde stukjes code, geschreven en uitgevoerd. Voor de 1756 kwetsbare projecten die het onderzoek op GitHub vond, werden 1600 patches gemaakt. Handmatig zou dat veel te veel tijd kosten.

Bewustwording: bezuinig niet op softwarebeveiliging

In augustus maken de onderzoekers, Jafar Akhoundali, Hamidreza Hamidi, Kristian Rietveld, en Olga Gadyatskaya hun tool beschikbaar voor softwareontwikkelaars. ‘Ik hoop dat hij gebruikt wordt om software beter te maken. Beveiliging is een tweesnijdend zwaard, er zijn natuurlijk altijd slechteriken die er misbruik van willen maken. We hebben inmiddels ons best gedaan om populaire projecten te repareren, dus zelfs als mensen er misbruik van willen maken, zou dat niet moeten kunnen’, aldus Akhoundali.

‘Maar het belangrijkste wat we ermee willen bereiken is misschien wel bewustwording. Het besef dat je niet achterover kunt leunen. Softwarebeveiliging is een ingewikkeld vakgebied. Het is uitgebreid en het kost geld, ervaring en training. Veel kleinere bedrijven stellen het verbeteren van hun beveiliging uit tot ze gehackt worden. Deze code zwerft al vijftien jaar rond en dit is maar één voorbeeld van hoe kleine details een groot risico kunnen vormen.’

Deze website maakt gebruik van cookies.  Meer informatie.