Hver dag opdager og udnytter hackere over hele kloden nye sårbarheder i websteder, applikationer og endda systemarkitektur. En fælles ting i alle elektroniske enheder, gamle som nye, er, at de køres af programmer, der er gemt i hukommelsen. Hackere har udnyttet dette og fundet sårbarheder kendt som bufferoverløb.
Selvom det ikke er nyt, har bufferoverløbsangreb og sårbarheder skabt kaos i cyberspace. Her vil vi forklare dig, hvad bufferoverløbsangreb er, og hvordan du kan forhindre dem.
Forståelse af buffere og systemhukommelse
For at forstå, hvad et bufferoverløbsangreb er, og hvordan det virker, skal du vide, hvad en buffer er, og hvordan en computers hukommelse fungerer.
Stak og heap hukommelse er to hovedtræk i en computers hukommelse. De er datastrukturer, der bruges til hukommelsesallokering. Selvom de ligner hinanden, stak- og heap-hukommelse er forskellige på flere måder.
Stakken, som bruger Last-in, First-out (LIFO) konceptet, bruges i RAM (Random Access Memory) til at gemmer programudførelser midlertidigt, mens heapen tildeler hukommelse ved hjælp af dynamisk allokering til global variabler. Men den ene ting, de har til fælles, er en buffer.
Hvad er en buffer?
En buffer er et hukommelsesområde, der bruges til at gemme data, højst sandsynligt i en computers RAM, mens det flyttes fra et sted til et andet. Disse data er normalt programmer, der skal udføres. Buffere opbevares i stakken eller dyngen. De optimerer eksekveringen af data.
Hvad er et bufferoverløb?
Et bufferoverløb opstår, når bufferen modtager flere data end dens lagerkapacitet. Fordi den ikke er i stand til at behandle den mængde data, flyder den over.
Nu, i en computers hukommelse, er der lige efter en buffer eller et bufferrum en returadresse. Denne returadresse kaldes faktisk en Extended Instruction Pointer (EIP). Dens funktion er at pege computeren til et specificeret program, når det er udfyldt. Når en buffer har flere data, end den kan indeholde, og den flyder over, flyder den over i returadressen.
For at forstå dette, lad os antage, at du har et bufferrum, der kun kan indeholde fem bogstaver. Så hvis du udfylder ord som "sukker" eller "fred", kan bufferstrømmen indeholde det. Men når du har et ord som "godkendelse", vil det uundgåeligt smitte af på. Dette fører til en fejl eller nedbrud i systemet. Men hackere kan udnytte denne sårbarhed til at starte et bufferoverløbsangreb.
Hvad er et bufferoverløbsangreb, og hvordan virker det?
Bufferoverløbsangreb sker, når hackeren tager kontrol over returadressen eller EIP. Når angriberen kender størrelsen af et systems hukommelse, kan de med vilje skrive data ind i det system bare for at overfylde det. Så sørger de for, at EIP eller returadressen er skrevet for at pege på et program, der kan give dem adgang til systemet eller afsløre følsomme oplysninger, der er gemt på systemet.
Angriberen kan endda skrive nogle data, der indeholder ondsindet kode og få bufferen til at flyde over. EIP'en skrives derefter for at omdirigere systemet tilbage til den ondsindede kode, og den bliver lavet til at køre. Derefter får hackeren kontrol over systemet.
Der er fem hovedtrin i bufferoverløbsangreb:
- Spiking
- Fuzzing
- At finde offset
- Overskrivning af EIP eller returadresse
- Udnyttelse af sårbarheden
Spiking er det første skridt. Her finder hackerne den del af programmets hukommelse, der er sårbar over for bufferoverløb. Så kommer fuzzing, som ligner spiking, men her sender hackeren karakterer til programmet for at se, om det kan brydes. Når det er lykkedes, fortsætter angriberen med at finde offset, hvor bufferen flød over. Dette gøres for at kende størrelsen af bufferen og returadressen. Derefter indsætter hackeren en ondsindet shell-kode og styrer systemet.
Hvad er typerne af bufferoverløbsangreb?
Der er to hovedtyper af bufferoverløbsangreb: stak-baserede og heap-baserede angreb.
1. Stakbaserede bufferoverløbsangreb
Stakbaserede bufferoverløbsangreb er den mest populære type bufferoverløbsangreb. De opstår, når systemets stakhukommelse overskrides og udnyttes. Det er også kendt som stack smashing.
2. Heap-baserede bufferoverløbsangreb
Denne type stack overflow er ikke særlig almindelig, da den er svær at implementere og udnytte. Det opstår, når den hukommelse, der er allokeret til et program, løber over. I januar 2021 opdagede Google et heap-baseret bufferoverløb sårbarhed i V8-komponenten af Chrome.
Hvordan kan du forhindre bufferoverløbsangreb?
Bufferoverløbsangreb kan afbødes ved at bruge OS runtime-beskyttelse, sikre programmeringssprog, randomisering af adresserumslayout og sikring af overordnede korrekte sikkerhedsforanstaltninger.
1. Brug af OS Runtime Protection
Runtime beskyttelse er også kendt som runtime array bounds checking. Dette sikrer, at hvert program, der køres, er inden for den tilgængelige bufferplads eller hukommelse. Og den kontrollerer alle data, der er skrevet ind i systemets hukommelse. Dette gør det svært for hackere at overskrive data ind i systemet og udnytte sårbarheden.
2. Brug af sikre programmeringssprog
Programmeringssprog som C og C++ implementerer ikke kontrol af runtime array bounds, fordi det kræver ekstra kode for at kontrollere hvert program, der er skrevet ind i systemet, og sænker det. Derfor er de mere modtagelige for bufferoverløbsangreb. Brug af mere sikre sprog som C#, Java og Python er bedre, fordi de har en lavere risiko for bufferoverløbsangreb.
3. Brug Address Space Layout Randomization (ASLR)
Denne sikkerhedsforanstaltning tildeler tilfældigt adresserne på programmer og funktioner i et systems hukommelse til forskellige dataområder. Det gør det svært for en angriber at navigere gennem følsomme funktioner i hukommelsen.
4. Sørg for strenge sikkerhedspolitikker
Dette involverer at holde systemet opdateret regelmæssigt, validere alle data, der er skrevet ind i systemet, og tildele de mindste privilegier til brugerne. Med de korrekte sikkerhedspolitikker på plads, skal du ikke bekymre dig om et bufferoverløbsangreb.
At holde din sikkerhed stram er afgørende for at bekæmpe bufferoverløbsangreb
Ifølge et populært ordsprog inden for sikkerhed, "så længe et system bruges af mennesker, eksisterer der en sårbarhed", hvilket er sandt og uundgåeligt. Man kan dog altid reducere chancerne for angreb ved at sikre, at de rigtige sikkerhedsforanstaltninger er på plads og nøje overholdes.
Husk, at hackere konstant finder nye måder at udnytte sårbarheder som denne. Derfor er det op til dig at være på forkant med dem ved at holde øje med de seneste fremskridt inden for cybersikkerhed.