28. marts 2025
Inden du starter
Dette læringsmodul er en del af byggeblokken:
Modulet helt kort
Sikker udvikling er et bredt begreb, som omhandler, hvordan man udvikler software, der ikke indeholder sårbarheder, der kan udnyttes af ondsindede aktører. Vi vil i dette modul beskrive forskellige sårbarhedslister, som kan bruges til at understøtte en sikker udviklingsproces. En sikker udviklingsproces er typisk nødvendig for at opnå bestemte sikkerhedsniveauer i en sikkerhedsstandard (såsom IEC 62443 eller ETSI 303 645).
"Værktøjer til sikker udvikling" af CyPro under licens CC BY-NC-ND
Sårbarhedslister
Sårbarhedslister er lister over konkrete design- og implementationsfejl eller kategorier af disse, der kan udgøre sikkerhedsrisici for produkter og applikationer. Listerne kan hjælpe med at skabe et fælles sprog for, hvad der udgør sikkert design og sikre arbejdsrutiner, når man arbejder med software. Sårbarhedslister er typisk vedligeholdt af frivillige eller non-profit-organisationer og baseres på viden indsamlet fra relevante industrier.
OWASP top 10
OWASP top 10 er en liste over kategorier af de mest udbredte sårbarheder, der findes i webapplikationer i dag. Listen er udviklet af OWASP-organisationen, som er drevet af frivillige fra hele verden.
Virksomheder kan bruge OWASP top 10 til at gøre deres udviklere og kvalitetsafdeling opmærksomme på, hvilke sårbarheder der er de mest hyppige i produktionssoftware, hvilket kan bruges til at prioritere sikkerhedsindsatserne.
Udover at beskrive udbredte sårbarheder, så beskriver listen også forskellige metoder til at undgå eller mitigere dem, hvilket støtter udviklere i at skrive mere sikker software.
MITRE CWE top 25
MITRE CWE top 25 er en liste over de mest farlige softwaresvagheder. Det er listen over de 25 mest udbredte og alvorlige fejl på MITREs samlede liste, som hedder CWE, ’Common Weakness Enumeration’. Den fulde liste indeholder hundredvis af forskellige kategoriserede softwaresvagheder.
Sammenlignet med OWASP top 10 er CWE top 25 mere konkret og samler ikke sårbarheder i brede kategorier. Det gør CWE top 25 til godt indeks over specifikke fejl og betyder, at man kan filtrere listen, så man kun ser fejl, der er relevante for en specifik teknologi, fx et konkret programmeringssprog eller framework.
Ligesom OWASP, beskriver MITRE også mulige løsninger og metoder til at undgå de forskellige softwaresvagheder og giver eksempler og referencer på egentlige forekomster af de givne fejl.
"Anvendelse af sårbarhedslisterne" af CyPro under licens CC BY-NC-ND
Sårbarhedslister og standarder
Standarder såsom IEC 62443 og ETSI 303 645 beskriver konkrete krav, der skal implementeres, for at et produkt kan opnå et givent ‘sikkerhedsniveau’. Ved at have kendskab til gængse sikkerhedsfejl og sårbarheder kan man være på forkant med kravene i sådanne formelle standarder.
Som eksempel har standarden ETSI 303 645 et krav om ikke at bruge universelle standardadgangskoder. Sårbarheder, der relaterer sig til brugen af universelle standardadgangskoder, er både beskrevet på MITREs og OWASPs sårbarhedslister. Desuden beskriver begge ressourcer metoder til at sikre sig mod brugen af dem.
På MITREs sårbarhedsliste ligger ’CWE-798: Use of Hard-coded Credentials’ nummer 22. Den dækker over brugen af standardkodeord (eller andre adgangsgivende data) på tværs af forskellige installationer af samme produkt.
På OWASPs sårbarhedsliste er kategorien ’Idenfication and Authentication Failures’ nummer 7. Den dækker bredt over fejl i identifikations- og autentifikationsmekanismer, fx brugen af standardadgangskoder, som ikke er unikke per installation.
Et andet eksempel er kravet i standarden IEC 62443-4-2 om, at brugere og enheder skal benytte en autorisationsmekanisme. En sådan mekanisme sørger for, at brugere af produktet kun kan gøre, hvad de har bemyndigelse til. Manglende autorisation er også en sårbarhed, der både optræder på OWASPs og MITREs sårbarhedslister.
På MITREs ligger ’CWE-862: Missing Authorization’ nummer 9, og kategorien ‘Broken Access Control’ er nr. 1 på OWASPs top 10.
"Brug af sårbarhedslisterne til statisk analyse" af CyPro under licens CC BY-NC-ND
Sårbarhedslister og statisk analyse
Sårbarhedslister kan bruges som udgangspunkt for statisk analyse af ens software. Analyseværktøjer som Semgrep og CodeQL kan bruges til at finde sårbarheder i kode, der relaterer sig specifikt til enkelte OWASP top 10-kategorier eller konkrete svagheder på MITREs CWE-liste.
Disse værktøjer kan bruges med foruddefinerede regler til at finde forekomster af fejl, men man kan også skrive sine egne ’regler’ og dermed bruge værktøjerne til at opretholde interne kodestandarder.
Værktøjerne kan med fordel køres kontinuerligt eller periodisk under udviklingsprocessen, enten lokalt hos udviklerne eller centralt som en del af en CI-pipeline. Jo hurtigere udviklerne kan informeres om fejl og mangler i deres kode, jo hurtigere kan de udbedre dem.
Næste skridt
Gør jeres udviklere opmærksomme på disse udbredte sårbarheder, specielt hvis I har fokus på at opfylde kravene i en sikkerhedsstandard. Indarbejd desuden automatisk analyse (såsom statisk analyse) af jeres software i jeres udviklingsproces, så fejl bliver fundet, inden produktet bliver sat i produktion.

Indholdselementerne ovenfor er udviklet gennem projektet:
’CyPro – Cybersikker produktion i Danmark’ af Aarhus Universitet, Alexandra Instituttet, DAMRC, UGLA Insights og FORCE Technology støttet af Industriens Fond. Materialet fra projektet er offentliggjort under Creative Commons.