Veiligheid

Bufferoverloop: zo werkt deze formidabele bron van kwetsbaarheden

Ons dagelijks leven bestaat uit honderden programma's. Er is geen moment in onze tijd dat we er geen toegang toe hebben, of het nu een "traditioneel" programma is (dat moet worden geïnstalleerd) of een webgebaseerd programma. Deze keer gaan we je door alles leiden wat je moet weten over een van de oudste en meest populaire beveiligingslekken. het falen van buffer overloop , ou buffer overloop  , is een van de belangrijkste puzzels voor ontwikkelaars. In de loop der jaren is hij een van de bondgenoten van cybercriminelen geworden om aanvallen uit te voeren die gevaarlijker of gevaarlijker zijn dan deze.

Maar wat is precies een defect van? buffer overloop ? Dit is een geheugenbeveiligingsprobleem waarbij de software/het programma de opslaglimieten niet in overweging neemt of verifieert. Het programmageheugen ontvangt dan meer gegevens dan het daadwerkelijk kan verwerken, afhankelijk van hoe het is ontwikkeld. Naast het veroorzaken van problemen in de werking van het programma of gewoon onverwacht afsluiten, kunnen misbruikbare kwetsbaarheden optreden.

Een interessant feit is dat de buffer overloop  is een van de meest voorkomende redenen waarom aanvallen met willekeurige code mogelijk zijn vanwege kwetsbaarheden. Ook worden veel programma's die zijn ontwikkeld in klassieke talen zoals C en C ++ als behoorlijk gevoelig voor dit soort problemen beschouwd.

Een beveiligingsprobleem dat door de jaren heen blijft bestaan

Jaren zijn verstreken en dit soort veiligheidsproblemen zijn bijna net zo geldig als de eerste jaren. Vanaf het begin is er geen concrete verklaring die ons kan laten zien waarom dit na meer dan 10 jaar een enorme hoofdpijn blijft voor iedereen die betrokken is bij de ontwikkeling en / of het onderhoud van programma's die kwetsbaar zijn voor falen.

Een andere factor die de populariteit van dit type mislukking voedt, is de aanhoudende populariteit van de IoT , dat wil zeggen, het internet der dingen. Meer dan ooit is het mogelijk dat een object dat we veel gebruiken in huis of op onze werkplek, wordt aangesloten op een netwerk. Het ongelukkige aspect van deze welkome trend is dat een groot deel van de IoT-apparaten wordt aangestuurd door firmware van zeer slechte kwaliteit. Daarnaast zijn controles en het toepassen van beveiligingsmaatregelen vrijwel nihil. We weten dat er veel gerenommeerde fabrikanten zijn die hun best doen om niet alleen apparaten, maar ook gebruikers te beschermen. Er zijn echter ook veel fabrikanten die het veilige aspect van een goede gebruikerservaring over het hoofd zien.

Bufferoverloopbug in actie

Voordat we verder gaan met een praktisch voorbeeld, is het belangrijk om duidelijk te zijn over het concept van: buffer (of buffer). Bij het programmeren zijn dit geheugenplaatsen die bij een programma horen. Dat wil zeggen, een programma heeft meerdere geheugenlocaties voor het opslaan van alle gegevens die worden gegenereerd als gevolg van het gebruik van dat programma. Elke ontwikkelaar moet in gedachten houden dat: tampons of buffers zijn essentieel voor de goede werking van elk programma dat ze ontwikkelen. Als dit aspect wordt verwaarloosd, zullen de programma's veel problemen hebben om correct of direct te functioneren, ze werken niet meer.

Dus wat gebeurt er tijdens de buffer overloop,  dat wil zeggen, er wordt een proces uitgevoerd dat ervoor zorgt dat het betrokken programma gegevens genereert in een hoeveelheid die groter is dan wat de buffers van het programma kunnen opslaan. Daarom gaan de gegevens die worden gegenereerd tijdens het gebruik van het programma zelf naar locaties in het geheugen die niet zijn voorbereid om deze gegevens op te slaan. Dan delen we een uiterst handige en gemakkelijk te begrijpen video. We zullen zien hoe de fout wordt geïmplementeerd met een eenvoudig programma dat is ontwikkeld in C-taal.

Gelukkig heeft de video gekozen voor een heel eenvoudig programma: een eenvoudig formulier dat je alleen vraagt ​​om je voor- en achternaam op het toetsenbord in te voeren. Het stelt u in staat om in een paar minuten te begrijpen hoe dit type storing zich gedraagt. Laten we het voorbeeld van diezelfde video verplaatsen naar een alledaagse situatie.

Stel je voor dat je op internet surft en een dienst tegenkomt die je aandacht heeft getrokken. Daarom besluit u zich in te schrijven en hiervoor dient u een formulier in te vullen met enkele gegevens. Ik hoef alleen mijn voornaam, achternaam en e-mailadres op te geven.

Nombre:
Apellido:
Correo electrónico:

Dan vul ik mijn gegevens in.

Nombre: Lorena
Apellido: Fernández
Correo electrónico: [email protected]

Tot nu toe is alles normaal. Maar wat als u zich probeert te abonneren en een heel lange naam in het veld plaatst? Bijvoorbeeld dit:

Nombre: Lorenaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Apellido: Fernández
Correo electrónico: [email protected]

Je klikt op inschrijven  en plotseling geeft het formulier een foutmelding weer die niet voor iedereen begrijpelijk is. Veel letters en cijfers die niet begrepen worden. U probeert de gegevens direct opnieuw in te vullen door de inhoud van de velden te wijzigen, maar er gebeurt niets. Alleen door de website te sluiten en opnieuw te openen, kunt u naar het lege formulier gaan en opnieuw beginnen. Zo maak je misbruik van bufferoverflow.

Toegangspoort tot andere cyberaanvallen

Natuurlijk zijn er situaties die iets ingewikkelder zijn dan een eenvoudige vorm. Evenzo, met de aangetoonde situatie, kan worden begrepen dat elk programma, elke toepassing of service die is ontwikkeld met slechte beveiligingspraktijken tot dit soort fouten leidt.

Het stelt cybercriminelen zelfs in staat om kwaadaardige code uit te voeren en zo een veel groter aanvalsbereik te hebben. Wat betekent dat er veel meer aanvallen kunnen worden uitgevoerd als de mislukking succesvol is. DDoS-aanvallen , SQL-injecties, aanvallen van type dan: Phishing kan worden uitgevoerd als toegang wordt verkregen tot de persoonlijke gegevens van gebruikers en zelfs gegevensinbreuken kunnen worden uitgevoerd.

Hoe u uzelf effectief kunt beschermen tegen deze mislukking?

Een van de belangrijkste aanbevelingen, vooral voor ontwikkelaars, is om de normen te volgen voor het ontwikkelen van veilige code. Bovendien moet u leren hoe belangrijk het is om beveiliging een van de topprioriteiten te maken bij het nadenken over elk type software. Afhankelijk van de taal die je gebruikt, het raamwerk en andere aspecten, kun je verschillende handleidingen vinden met zeer gedetailleerde normen. Ze helpen u niet alleen om veilig code te ontwikkelen om bufferoverloop te voorkomen, maar ook om andere potentiële beveiligingsbedreigingen. Het project OWASP in de Top 10-sectie de belangrijkste beveiligingsrisico's voor elk type weboplossing presenteert, raden we u aan een kijkje te nemen.

Evenzo stellen ze voor om te kiezen voor programmeertalen die niet alleen efficiënt zijn in termen van geheugengebruik, maar ook veilig zijn. Hetzelfde geldt voor elk soort framework en elke bibliotheek die moet worden gebruikt. Andere, meer specifieke aanbevelingen voor ontwikkelaars zijn dat applicaties bijvoorbeeld positie-onafhankelijke uitvoerbare bestanden bevatten. Waar zou het voor zijn? Beperk de impact die een bufferoverloop zou kunnen genereren, ervan uitgaande dat het niet mogelijk was om de gebeurtenis vast te leggen en in te dammen. We hebben het niet alleen over preventie, maar ook over impactmitigatie. Als het gaat om gaten in de beveiliging, zijn de limieten bijna eindeloos.

We gaven hierboven al aan dat buffer overflow een hardnekkige situatie is in programma's die zijn ontwikkeld in talen als C en C++. Gelukkig hebben de ontwikkelaars samen betere en veiligere praktijken ontwikkeld en verspreid. En met praktijken bedoelen we de ontwikkeling van de software zelf. Als gevolg hiervan hebben veel fabrikanten van groot en klein kaliber dergelijke praktijken al toegepast voor hun ontwikkelingscyclus.

Vergelijkbare items

Laat een reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

Terug naar boven knop