upper right bubble
ephort logo
contact icon
lower left bubble

Hvordan reduceres sårbarheder i AI-genereret kode?

To studerende har i deres bachelorprojekt, i samarbejde med Ephort, undersøgt hvordan AI-agenter som OpenCode kan introducere sårbarheder i kode - og hvordan risikoen kan reduceres.

Bachelorprojekt af Hasse Gregers Nielsen og Mikkel Kruger Larsen.

AI-agenter i softwareudvikling

AI-agenter kan i dag langt mere end bare at foreslå den næste linje af kode; de kan læse en eksisterende kodebase, planlægge en ny funktion, ændre filer, skrive tests og også gennemgå resultatet bagefter. Det er nærmest ligesom at tilføje ekstra udviklere til teamet.

AI-agenten har altså en central rolle i udviklingsprocessen, og det er derfor vigtigt at kunne regne med, at den kode, agenten skriver, også er sikker. Ikke bare funktionel - men sikker, sådan at systemet forbliver stabilt og ikke bliver hacket.

I samarbejde med Ephort har to studerende, Mikkel og Hasse, i deres bachelorprojekt på IT-sikkerhedsuddannelsen ved UCL undersøgt, hvordan agentbaseret AI kan introducere nye sårbarheder i software, og hvordan risikoen kan reduceres. For at gøre projektet virkelighedsnært, er platformen Eventværk blevet brugt som case. Eventværk er en SaaS-platform til eventhåndtering bygget af Ephort.

Hvad er AI-agenter egentlig?

Hvis AI-agenten får adgang til værktøjer, filer og systemer, kan de derefter selv udføre flere dele af en opgave. I forbindelse med webudvikling kan den eksempelvis undersøge en kodebase, finde relevante filer, udarbejde en plan og implementere ændringerne.

I bachelorprojektet tager Mikkel og Hasse udgangspunkt i OpenCode. Det er en open source-kodningsagent, som kan forbindes med forskellige sprogmodeller. OpenCode har blandt andet en planfunktion, hvor agenten og udvikleren afklarer opgaven, og en build-funktion, hvor agenten får mulighed for at skrive og ændre kode.

Det kan gøre udviklingsarbejdet hurtigere. Men det giver også AI'en et større ansvar, og dermed også flere muligheder for at lave fejl. Vi har tidligere skrevet om, hvordan AI gør softwareudvikling hurtigere, hvor vi også kommer ind på faldgruberne ved at bruge AI. Bachelorprojektet går et spadestik dybere og understøttes af fakta og testresultater i forbindelse med hvilken påvirkning AI har for sikkerheden.

Test af AI-genereret kode på en platform

OpenCode kan i dag rigtig meget og bliver ikke længere kun brugt til små og enkle opgaver. OpenCode bliver også brugt til planlægning, udvikling af hele funktioner, test og code review.

Den måde at arbejde på er stadig ny, og der er derfor i de fleste tilfælde endnu ikke én fast strategi for, hvordan OpenCode bør bruges.

Mikkel og Hasse udførte et kontrolleret eksperiment, hvor OpenCode blev bedt om at udvikle den samme blogfunktion til platformen Eventværk fem gange. Funktionen skulle blandt andet kunne oprette blogindlæg, vise dem i et feed, håndtere kommentarer, uploade billeder og forbinde et blogindlæg med et eksisterende event.

To ud af fem forsøg indeholdt nye sårbarheder ved brug af AI

Resultatet fra forsøget viste, at den samme AI-agent kan få den samme opgave flere gange og levere forskellige løsninger, hvor nogle af løsningerne var mere sikre end andre.

Det gør det vanskeligt at stole på, at en løsning er sikker, selvom de måske kan synes at fungere ved første øjekast. De konkrete udfordringer handlede især om manglende inputvalidering. OpenCode havde sat begrænsninger på nogle af brugernes inputfelter. Eksempelvis kunne der mangle en maksimal længde på indholdet i et blogindlæg eller en kommentar - som var det AI-agenten blev brugt til i casen.

I værste fald kan det påvirke databasen, serverens ressourcer og systemets tilgængelighed. Særligt i komplekse backend-systemer er det vigtigt, at data bliver kontrolleret, inden den behandles og gemmes.

Mikkel og Hasse arbejder med kode på skærmen

Mikkel og Hasse i gang med at gennemgå kode i forbindelse med bachelorprojektet.

Sikkerhed i Laravel kræver mere end automatiske scanninger

Mikkel og Hasse brugte værktøjet SonarQube, som automatisk scanner kode, og som kan bruges som et sikkerhedslag til at opdage mange af de kendte fejl hurtigt og konsekvent.

Dog fandt SonarQubes standardopsætning ikke de centrale sårbarheder i de to forsøg, der blev lavet. Det betyder ikke, at automatiske analyseværktøjer er helt værdiløse, men de kan ikke nødvendigvis altid forstå hele den sammenhæng, som koden indgår i.

Det understreger en vigtig pointe indenfor Laravel-udvikling: Sikkerhed kan ikke blot overlades til ét enkelt værktøj.

Automatiske tests, sikkerhedsscanninger, manuelt code review og udviklerens erfaring bør supplere hinanden. Det samme princip ligger bag vores gratis Laravel-sikkerhedsscanner, som fungerer som et ekstra sikkerhedslag - ikke som en erstatning for en grundig gennemgang.

Udvikling af en AI security-agent som ekstra code review

Som løsning udviklede Mikkel og Hasse en særlig "security-agent" i OpenCode.

Idéen er forholdsvis simpel: den AI-agent, der skriver koden, bør ikke alene være ansvarlig for at vurdere, om dens eget arbejde er sikkert. Derfor får en separat agent til opgave at gennemgå den nye kode med fokus på sikkerhedsproblemer.

Security-agenten fik kun de rettigheder, den havde brug for. Den kunne læse og analysere koden, men ikke selv ændre den, hvilket begrænser agentens handlemuligheder og reducerer risikoen for, at et kontrolværktøj selv introducerer nye ændringer, som kan indeholde nye sårbarheder.

I projektets tests fandt security-agenten den kendte inputvalideringsfejl i otte ud af ti forsøg. Resultaterne var bedst, når agenten fik adgang til Laravel-specifik kontekst gennem Laravel Boost MCP.

Bedre prompts giver bedre og mere sikker kode

Security-agenten er dog kun én del af løsningen. Mikkel og Hasse fandt nemlig også ud af, at udviklerens egne instruktioner/prompts har stor betydning for resultatet. Hvis en opgave bliver beskrevet upræcist, er AI-agenten nødt til selv at "udfylde hullerne" - og det er den ikke altid den bedste til.

Noget der kan være helt indlysende for en erfaren udvikler, er ikke nødvendigvis indlysende for en AI. Derfor er planlægningsfasen stadig vigtig; jo mere komplekst et system er, desto vigtigere er det at definere funktionalitet, begrænsninger, datatyper, brugerroller og sikkerhedskrav, før AI-agenten begynder at skrive kode. Og her spiller faglighed og erfaring en stor rolle - som man skal have øje for. Det betyder også, at hvis en person uden den rette faglighed og erfaring prompter en AI, så er faldgruben, at der ikke bliver taget de nødvendige forbehold - og dermed ender AI-agenten med at komme med resultater, hvor kvaliteten og funktionaliteten af koden ikke er optimal.

Sikker AI-udvikling kræver flere lag

Hos Ephort er vi ikke overrasket over resultatet fra bachelorprojektet - det understøtter blot måden, vi allerede arbejder på med AI. Det er dog altid dejligt at blive bekræftet i sin tese.

Bachelorprojektet konkluderer ikke, at virksomheder bør holde op med at bruge AI i udviklingsarbejdet. Tværtimod kan AI-agenter være stærke værktøjer, der hjælper udviklere med at undersøge kode, skrive første udkast, automatisere gentagne opgaver og komme hurtigere frem til en løsning. Men bachelorprojektet sætter streg under, at AI skal bruges med omtanke - at udvikleres faglighed og kvalitet stadig er afgørende for de resultater, der kommer ud af at bruge AI.

Hurtigere udvikling gør behovet for kvalitetssikring større. Det passer godt med den måde, vi arbejder med cybersikkerhed og kodegennemgang hos Ephort. Ingen enkelt test eller scanner kan garantere, at en digital løsning er sikker. Derfor arbejder vi med flere lag af kontrol og bruger AI som støtte til udviklerens faglighed, og ikke blot som en erstatning for den.

Har I brug for sparring om AI-genereret kode, Laravel-sikkerhed eller kvaliteten i jeres eksisterende løsning, er I velkomne til at kontakte os for en uforpligtende snak.

06. AUG 2026

Få en uforpligtende snak

Mia Valentina Lauridsen

Mia Valentina Lauridsen

Kundeansvarlig

Du er velkommen til at ringe direkte på +45 21 90 71 75 eller skrive en mail på info@ephort.dk

Du kan også udfylde formularen, så kontakter vi dig hurtigst muligt.




Kundeudtalelser

"Det har været et rigtig godt forløb, som har virket enormt effektivt. Tingene har kørt fuldstændig smurt lige efter snoren."

Sofie Grøn, Odense Kommune