Vad är Heap Spraying?
Heap spraying är en hackningsteknik som används för att utnyttja sårbarheter i datorprogramvara. Det fungerar för att få kontroll över ett program genom att dra fördel av en del av dess minne. När en del av minnet styrs av hackingkoden kan hackaren ta kontroll över exekveringen av koden genom att implementera ett buffertöverskridning i minnets högarea. Den vanligaste applikationen för högsprutning är att hacking webbläsare som Internet Explorer®.
En "heap" är ett dynamiskt block av minne som datorn tilldelar ett visst program, så att namnet beror på att datorn ägnar en virtuell minne med programmet till programmet. Detta kan tänkas vara som lagringsutrymme i en garderob eller skrivbord. Den här mängden minne tillhör programmet tills antingen programvaran eller operativsystemets insamlingskod släpper den. Samlingskoden är helt enkelt en misslyckad enhet som återställer minnet om programmet kraschar eller själva programvaran inte släpper minnet efter det att det slutar använda.
Vid högsprutning försöker en hacker att "spraya" minneshögen med en specifik del av koden. Målet är att placera koden på ett specifikt läge i programmets minnehög, som att kila en kofot i kanten av en dörrram för att ge hävstång för att tvinga dörren att öppnas. Efter det att informationen har fastnat i minneshögen genom värmesprutning kan hackaren sedan översvämma antingen högen eller hela minnesbufferten, vilket genererar fel i systemet. När fel inträffar kan hackaren dra nytta av dem för att köra sin egen kod på systemet.
Högsprejning fungerar på grund av dynamisk allokering av minne i systemet. Datorprogrammet "äger" i huvudsak hela minnet för tillfället, så hackaren vet redan den relativa platsen i minnet som datorn har tilldelat programmet. Därför behöver hackaren liten specificitet för att kila sin kod i sprickorna; han kan spruta koden blindt och veta att minnesblocket alltid finns där så länge programmet fortsätter att köras. Detta kan jämföras med att försöka välja ett lås medan jag ögonbindel; uppgiften blir nästan omöjlig om låset rör sig, men så länge det förblir på en fast plats - liksom högen av minne i systemet - blir jobbet möjligt.