Hver dag oppdager og utnytter hackere over hele verden nye sårbarheter i nettsteder, applikasjoner og til og med systemarkitektur. En vanlig ting i alle elektroniske enheter, gamle eller nye, er at de drives av programmer som er lagret i minnet. Hackere har utnyttet dette og funnet sårbarheter kjent som bufferoverløp.

Selv om det ikke er nytt, har bufferoverløpsangrep og sårbarheter skapt kaos i cyberspace. Her vil vi forklare deg hva bufferoverløpsangrep er og hvordan du kan forhindre dem.

Forstå buffere og systemminne

For å forstå hva et bufferoverløpsangrep er og hvordan det fungerer, må du vite hva en buffer er og hvordan datamaskinens minne fungerer.

Stable og haug minne er to hovedtrekk ved datamaskinens minne. De er datastrukturer som brukes for minneallokering. Selv om de er like, stabel- og heapminne er forskjellige på flere måter.

Stabelen, som bruker Last-in, First-out (LIFO)-konseptet, brukes i RAM (Random Access Memory) for å lagre programkjøringer midlertidig, mens heapen tildeler minne ved hjelp av dynamisk allokering til global variabler. Men den ene tingen de har til felles er en buffer.

Hva er en buffer?

En buffer er et minneområde som brukes til å lagre data, mest sannsynlig i datamaskinens RAM, mens den flyttes fra ett sted til et annet. Disse dataene er vanligvis programmer som må kjøres. Buffere lagres i stabelen eller haugen. De optimerer utførelsen av data.

Hva er et bufferoverløp?

Et bufferoverløp oppstår når bufferen mottar mer data enn lagringskapasiteten. Fordi den ikke er i stand til å behandle den mengden data, flyter den over.

Nå, i en datamaskins minne, rett etter en buffer eller en bufferplass er en returadresse. Denne returadressen kalles faktisk en Extended Instruction Pointer (EIP). Dens funksjon er å peke datamaskinen til et spesifisert program når det er fylt. Når en buffer har mer data enn den kan holde og renner over, renner den over til returadressen.

For å forstå dette, la oss anta at du har en bufferplass som bare kan inneholde fem bokstaver. Så hvis du fyller inn ord som "sukker" eller "fred", kan bufferstrømmen inneholde det. Men når du har et ord som «autentisering», vil det uunngåelig smitte over. Dette fører til en feil eller krasj i systemet. Men hackere kan utnytte denne sårbarheten til å starte et bufferoverløpsangrep.

Hva er et bufferoverløpsangrep og hvordan fungerer det?

Bufferoverløpsangrep skjer når hackeren tar kontroll over returadressen eller EIP. Når angriperen vet størrelsen på et systems minne, kan de med vilje skrive data inn i systemet bare for å flyte over det. Deretter sørger de for at EIP eller returadressen er skrevet for å peke på et program som kan gi dem tilgang til systemet eller avsløre sensitiv informasjon som er lagret på systemet.

Angriperen kan til og med skrive noen data som inneholder ondsinnet kode og få bufferen til å flyte over. EIP-en skrives deretter for å omdirigere systemet tilbake til den skadelige koden, og den er laget for å kjøre. Deretter får hackeren kontroll over systemet.

Det er fem hovedtrinn i bufferoverløpsangrep:

  1. Spiking
  2. Fuzzing
  3. Finne offset
  4. Overskriver EIP eller returadresse
  5. Utnytter sårbarheten

Spiking er det første trinnet. Her finner hackerne den delen av programmets minne som er sårbar for bufferoverflyt. Så kommer fuzzing, som ligner på spiking, men her sender hackeren karakterer til programmet for å se om det kan brytes. Når den har lykkes, fortsetter angriperen for å finne forskyvningen, som er der bufferen fløt over. Dette gjøres for å vite størrelsen på bufferen og returadressen. Deretter setter hackeren inn en ondsinnet skallkode og kontrollerer systemet.

Hva er typene bufferoverløpsangrep?

Det er to hovedtyper bufferoverløpsangrep: stackbaserte og heapbaserte angrep.

1. Stakkbaserte bufferoverløpsangrep

Stakkbaserte bufferoverløpsangrep er den mest populære typen bufferoverløpsangrep. De oppstår når systemets stabelminne overkjøres og utnyttes. Det er også kjent som stack smashing.

2. Heap-baserte bufferoverløpsangrep

Denne typen stackoverflyt er ikke veldig vanlig, da den er vanskelig å implementere og utnytte. Det oppstår når minnet som er allokert til et program renner over. I januar 2021 oppdaget Google en heap-basert bufferoverflyt sårbarhet i V8-komponenten av Chrome.

Hvordan kan du forhindre bufferoverløpsangrep?

Bufferoverløpsangrep kan dempes ved å bruke OS-kjøringsbeskyttelse, sikre programmeringsspråk, randomisering av adresseromslayout og å sikre overordnede forsvarlige sikkerhetstiltak.

1. Bruker OS Runtime Protection

Runtime-beskyttelse er også kjent som runtime array bounds checking. Dette sikrer at hvert program som kjøres er innenfor bufferplassen eller minnet som er tilgjengelig. Og den sjekker alle data som er skrevet inn i systemets minne. Dette gjør det vanskelig for hackere å overskrive data inn i systemet og utnytte sårbarheten.

2. Bruk av sikre programmeringsspråk

Programmeringsspråk som C og C++ implementerer ikke kontroll av runtime array bounds fordi det krever ekstra kode for å sjekke hvert program som er skrevet inn i systemet og senker det. Derfor er de mer utsatt for bufferoverløpsangrep. Å bruke sikrere språk som C#, Java og Python er bedre fordi de har lavere risiko for bufferoverløpsangrep.

3. Bruk randomisering av adresseromsoppsett (ASLR)

Dette sikkerhetstiltaket tildeler tilfeldig adressene til programmer og funksjoner i et systems minne til forskjellige dataområder. Det gjør det vanskelig for en angriper å navigere gjennom sensitive funksjoner i minnet.

4. Sørg for strenge sikkerhetsregler

Dette innebærer å holde systemet oppdatert regelmessig, validere alle data som er skrevet inn i systemet, og tildele minst mulig privilegier til brukere. Med de riktige sikkerhetspolicyene på plass, bør du ikke bekymre deg for et bufferoverløpsangrep.

Å holde sikkerheten stram er avgjørende for å bekjempe bufferoverløpsangrep

I følge et populært ordtak innen sikkerhet, "så lenge et system brukes av mennesker, eksisterer det en sårbarhet," som er sant og uunngåelig. Imidlertid kan man alltid redusere sjansene for angrep ved å sørge for at riktige sikkerhetstiltak er på plass og overholdes strengt.

Husk at hackere stadig finner nye måter å utnytte sårbarheter som denne. Derfor er det opp til deg å ligge i forkant av dem ved å holde øye med de siste fremskrittene innen cybersikkerhet.