Co to jest opryskiwanie sterty?

Rozpylanie sterty to technika hakerska wykorzystywana do wykorzystywania luk w oprogramowaniu komputerowym. Działa w celu uzyskania kontroli nad programem, wykorzystując część jego pamięci. Gdy część pamięci jest kontrolowana przez kod hakerski, haker może przejąć kontrolę nad wykonaniem kodu, implementując przepełnienie bufora w obszarze sterty pamięci. Najczęstszą aplikacją do opryskiwania stosów jest hakowanie przeglądarek internetowych, takich jak Internet Explorer®.

„Kupa” to dynamiczny blok pamięci, który komputer przypisuje do konkretnego programu, nazwany tak, ponieważ komputer dedykuje programowi wirtualny stos pamięci. Można to traktować jak miejsce do przechowywania w szafie lub biurku. Ta sterta pamięci należy do programu, dopóki oprogramowanie lub kod kolekcji systemu operacyjnego go nie zwolni. Kod kolekcji jest po prostu bezpiecznym urządzeniem, które odzyskuje pamięć, jeśli program ulegnie awarii lub samo oprogramowanie nie zwolni pamięci po zakończeniu użytkowania.

Podczas rozpylania stosu haker próbuje „rozpylić” stos pamięci za pomocą określonej części kodu. Celem jest umieszczenie kodu w określonej pozycji w stercie pamięci programu, tak jak wciśnięcie łomu w krawędź futryny, aby zapewnić dźwignię, aby wymusić otwarcie drzwi. Po tym, jak informacje zostaną zaklinowane w stercie pamięci poprzez rozpylanie ciepła, haker może przepełnić stertę lub cały bufor pamięci, generując błędy w systemie. Gdy wystąpią błędy, haker może je wykorzystać do wykonania własnego kodu w systemie.

Rozpylanie sterty działa dzięki dynamicznej alokacji pamięci w systemie. Program komputerowy zasadniczo „posiada” na razie cały fragment pamięci, więc haker zna już względną lokalizację w pamięci, którą komputer przypisał programowi. Dlatego haker potrzebuje niewiele szczegółów, aby wcisnąć swój kod w szczeliny; może spryskać kod na ślepo, wiedząc, że blok pamięci będzie tam zawsze, dopóki program będzie działał. Można to porównać do próby otwarcia zamka z zawiązanymi oczami; zadanie staje się prawie niemożliwe, jeśli zamek się porusza, ale dopóki pozostaje w jednym stałym miejscu — tak jak sterta pamięci w systemie — zadanie staje się możliwe.