Wat is hoop spuiten?
Heap-spray is een hacktechniek die wordt gebruikt om kwetsbaarheden in computersoftware te misbruiken. Het dient om controle over een programma te krijgen door gebruik te maken van een deel van zijn geheugen. Zodra een deel van het geheugen wordt bestuurd door de hackcode, kan de hacker de uitvoering van de code overnemen door een bufferoverloop in het heapgebied van het geheugen te implementeren. De meest voorkomende toepassing voor heap-spray is het hacken van webbrowsers zoals Internet Explorer®.
Een "heap" is een dynamisch geheugenblok dat de computer toewijst aan een bepaald programma, zo genoemd omdat de computer een virtuele geheugenstapel aan het programma wijdt. Dit kan worden gezien als opslagruimte in een kast of bureau. Deze hoop geheugen behoort tot het programma totdat de software of de verzamelcode van het besturingssysteem deze vrijgeeft. De verzamelcode is gewoon een failsafe-apparaat dat geheugen terugwint als het programma crasht of de software zelf het geheugen niet vrijgeeft nadat het gebruik is beëindigd.
Bij het sproeien van heap probeert een hacker de geheugenheap te "besproeien" met een specifiek gedeelte code. Het doel is om de code op een specifieke positie in de geheugenhoop van het programma te plaatsen, zoals een koevoet tegen de rand van een deurkozijn drukken om de deur open te drukken. Nadat de informatie door middel van warmspuiten in de geheugenhoop is vastgeklemd, kan de hacker de heap of de gehele geheugenbuffer overlopen, waardoor fouten in het systeem ontstaan. Zodra er fouten optreden, kan de hacker hiervan profiteren om zijn eigen code op het systeem uit te voeren.
Heap-spray werkt door de dynamische toewijzing van geheugen in het systeem. Het computerprogramma "bezit" in wezen voorlopig het hele stuk geheugen, zodat de hacker de relatieve locatie in het geheugen al kent die de computer aan het programma heeft toegewezen. Daarom heeft de hacker weinig specificiteit nodig om zijn code in de scheuren te stoppen; hij kan de code blindelings bespuiten, wetende dat het geheugenblok er altijd zal zijn zolang het programma blijft draaien. Dit kan worden vergeleken met proberen een slot te kiezen terwijl je geblinddoekt bent; de taak wordt bijna onmogelijk als het slot beweegt, maar zolang het op één vaste locatie blijft - net als de hoop geheugen in het systeem - wordt de taak mogelijk.