Inhoudsopgave:
Definitie - Wat betekent Stack Smashing?
Stack smashing is een vorm van kwetsbaarheid waarbij de stack van een computertoepassing of besturingssysteem gedwongen wordt te overstromen. Dit kan ertoe leiden dat het programma / systeem wordt ondermijnd en gecrasht.
Een stapel, een first-in last-out circuit, is een vorm van buffer met tussentijdse resultaten van bewerkingen erin. Om het eenvoudiger te maken, stapelt het smashen meer gegevens in een stapel dan zijn opslagcapaciteit. Bekwame hackers kunnen opzettelijk buitensporige gegevens in de stapel invoeren. De overmatige gegevens kunnen worden opgeslagen in andere stapelvariabelen, inclusief het functie-retouradres. Wanneer de functie terugkeert, springt deze naar de kwaadaardige code op de stapel, die het hele systeem kan beschadigen. De aangrenzende gegevens op de stapel worden beïnvloed en dwingen het programma te crashen.
Techopedia legt Stack Smashing uit
Als het programma dat wordt getroffen door stackmashing gegevens van niet-vertrouwde netwerken accepteert en met speciale rechten wordt uitgevoerd, is er sprake van een beveiligingsprobleem. Als de buffer gegevens bevat die zijn verstrekt door een niet-vertrouwde gebruiker, kan de stapel worden beschadigd door uitvoerbare code in het programma te injecteren, waardoor onbevoegde toegang tot een computer wordt verkregen. Een aanvaller kan ook besturingsstroominformatie overschrijven die in de stapel is opgeslagen.
Omdat het smashing van de stack is uitgegroeid tot een zeer ernstige kwetsbaarheid, worden bepaalde technologieën geïmplementeerd om de ramp met de stack smashing te overwinnen. Stapelbufferoverloopbeveiliging wijzigt de organisatie van gegevens in het stapelframe van een functieaanroep met kanariewaarden. Deze waarden geven bij vernietiging aan dat een daaraan voorafgaande buffer in het geheugen is overgelopen. Canarische waarden bewaken bufferoverlopen en worden tussen de besturingsgegevens en de buffer op de stapel geplaatst. Dit zorgt ervoor dat een bufferoverloop eerst de kanarie corrumpeert. Een mislukte verificatie van kanariegegevens betekent een overloop in de stapel. De drie soorten kanarie zijn Random, Terminator en Random XOR.
De terminatorkanarie is gebaseerd op het feit dat stack buffer overflow-aanval afhankelijk is van stringbewerkingen die eindigen op terminators. Willekeurige kanaries worden willekeurig gegenereerd vanuit een entropie die daemon verzamelt, waardoor aanvallers geen waarden kunnen weten. Willekeurige kanaries worden gegenereerd bij de initialisatie van het programma en opgeslagen in globale variabelen. Willekeurige XOR-kanaries zijn willekeurige dragers die XOR worden gecodeerd met behulp van besturingsgegevens. Het is vergelijkbaar met willekeurige kanaries, behalve dat de "read from stack-methode" om de kanarie te krijgen complex is. De hacker heeft de kanarie, het algoritme en de besturingsgegevens nodig om de originele kanarie te produceren. Ze beschermen tegen aanvallen met overvolle buffers in een structuur in wijzers om de aanwijzer te wijzigen en naar een stukje besturingsgegevens te wijzen.
