De 3 farligste sårbarhetene i 2023: - Bruk Rust!

Den farligste har du kanskje aldri hørt om, ettersom det ikke er en klassisk web-sårbarhet, mener ekspert.

Ifølge Martin Ingesen oppstår en "Out-of-Bounds write"-feil når data skrives utenfor det tiltenkte minneområdet. 📸: Kovert
Ifølge Martin Ingesen oppstår en "Out-of-Bounds write"-feil når data skrives utenfor det tiltenkte minneområdet. 📸: Kovert Vis mer

Den amerikanske organisasjonen MITRE, har nylig sluppet sin liste over de 25 farligste sårbarhetene i 2023.

Ifølge organisasjonen ble lista laget gjennom å analysere offentlige sårbarhetsdata fra National Vulnerability Database (NVD). Årets liste er basert på 43.996 innmeldte sårbarheter i 2021 og 2022.

Vi har fått Martin Ingesen, grunnlegger og daglig leder i pentester-selskapet Kovert, til å forklare de tre farligste sårbarhetene på lista - og hvordan du beskytter deg mot dem.

«Den mest moderne løsningen vil være å benytte et minnesikkert språk.»

#1: "Out-of-Bounds Write"

Førstemann ut på lista er en såkalt "Out-of-Bounds Write"-feil - dette skal ifølge lista være den aller farligste.

- Bakgrunnen for at det ikke er feilen vi kanskje hører mest om, er jo fordi denne ikke er en klassisk web-sårbarhet, men mer aktuell for de som utvikler programvare for Windows, Linux og embedded-systemer, sier Ingesen til kode24.

Ifølge ham oppstår når feilen nå data skrives utenfor det tiltenkte minneområdet.

- Dette kan skje når en programmerer ikke tar hensyn til grensene for bufferen, et midlertidig lagringsområde i minnet, noe som fører til at dataene kan overskrive andre viktige data eller kode i minnet.

Bruk minnesikre språk

Ingesen forteller at dette er farlig ettersom det kan føre til endring av data, ustabil oppførsel, eller i verste fall kjøring av vilkårlig "angreperbestemt kode".

- På denne måten kan man kjøre vilkårlig kode i kontekst av programvaren på det underliggende operativsystemet.

Han sier at det finnes flere ulike måter å forhindre at denne typen feil oppstår.

- Den mest moderne løsningen vil være å benytte et minnesikkert språk, som for eksempel Rust, når man utvikler programvare.

Dersom du skriver koden i C eller C++ må du gjøre andre grep:

- Da vil det være viktig å bruke trygge funksjoner for å forhindre at brukerinnsendt data kan overskrive det allokerte minneområdet, sier Ingesen.

#2: "Cross-site Scripting"

Nestemann på lista er såkalt "Cross-site Scripting" (XSS). Ifølge Ingesen er dette en type sårbarhet hvor en angriper kan injisere egen JavaScript-kode inn i nettsider som blir besøkt av andre brukere.

- Dette kan skje når en nettside tillater ukontrollert inndata fra en bruker, som deretter kan vises til andre brukere. Dette er farlig fordi det kan tillate en angriper å stjele sensitiv informasjon som autentiserings-cookies, passord og andre opplysninger, eller til og med utføre handlinger på vegne av den utsatte brukeren.

Ett viktig forsvarsverk mot XSS er å sikre at all brukerinndata nøytraliseres, eller "saniteres", før den vises i en nettside.

- Dette kan oppnås ved å bruke sikre programmeringsmetoder som automatisk ufarliggjør potensielt skadelige karakterer i brukerinput, eller ved å bruke innholdssikkerhetspolicyer (CSP) som begrenser hvilke skript som kan kjøre på nettsiden, sier Ingesen.

#3: "SQL injection"

Tredjemann på lista er "SQL injection", som er en type sårbarhet som oppstår når en angriper kan injisere skadelige SQL-kommandoer gjennom nettstedets inndata.

- Dette er farlig fordi det kan tillate en angriper å manipulere eller få tilgang til dataene i databasen på måter som ikke er tiltenkt av systemets utviklere, inkludert å utlevere, endre eller slette data, forteller Ingesen.

Ifølge ham er den beste måten å forhindre SQL-injeksjon på å aldri tillate direkte brukerinndata i en SQL-spørring.

- Alle moderne programmeringsspråk har i dag støtte for "prepared statements" eller ORM, noe som forhindrer at man lett kan introdusere brukerinndata direkte i SQL-spørringer.