Co to jest przepełnienie bufora stosu?
Przelanie bufora stosu jest tym, co dzieje się, gdy program wprowadza wpis do pamięci komputera, który jest dłuższy niż przydzielona przestrzeń. W niektórych okolicznościach może to uszkodzić inne dane w pamięci, powodując problemy z uruchamianiem komputera. W innych przypadkach przepełnienie bufora stosu może być wykorzystywane przez złośliwą aplikację, aby przejąć kontrolę nad innymi częściami komputera.
Nazwa z przepełnienia bufora stosu pochodzi najpierw ze stosu, która jest skutecznie aktywną listą, w której zorganizowane są dane: termin pochodzi z analogii rozrywania elementów fizycznych. Jedna wersja tego stosu wywołania , to lista, której program komputerowy używa do śledzenia różnych części programu, podprogramów, które działają w dowolnym momencie. Ponieważ stos połączeń działa tymczasowo i musi być dostępny szybko, znajduje się w pamięci komputera, a nie w stałej pamięci, takiej jak dysk twardy.
Ponieważ nowoczesne systemy operacyjne pozwalają na uruchamianie wielu programów, istnieje potrzeba uporządkowania sposobu przydzielania pamięci, w tym stosów połączeń. Odbywa się to wydajnie poprzez przypisanie buforów, przestrzeń w pamięci zaprojektowanej tak, aby była wystarczająco duża, aby poradzić sobie z maksymalną przestrzenią wymaganą przez określony bufor. W większości przypadków część przestrzeni będzie nieużywana, więc działa jako bufor między danymi z różnych aplikacji, pozostawiając miejsce do poradzenia sobie, jeśli nagle wymaga dodatkowej przestrzeni. Jednym ze sposobów wizualizacji byłoby pomyślenia o bibliotece, która przeznaczyła pewną przestrzeń do każdego obszaru tematycznego, upewniając się, że zostawił dodatkowy miejsce na poradzenie sobie, jeśli na przykład wszystkie książki na jeden temat były w bibliotece, a nie jakąkolwiek z nich sprawdzone.
Przepełnienie bufora stosu występuje, gdy program zapisuje dane dotyczące połączeń do bufora w sposób przekraczający przydzieloną przestrzeń. To może się zdarzyć przez pomyłkę, uSually przez błąd w programie. Na przykład, jeśli aplikacja została zaprojektowana tak, aby umożliwić użytkownikowi wpisanie numeru telefonu, ale nie ma ograniczenia liczby znaków, które można wprowadzić, haker może być w stanie korzystać z nieograniczonego pola, aby celowo spowodować przepełnienie bufora stosu. W zależności od sposobu działania systemu operacyjnego może to pozwolić hakerowi na pośrednich dostępu do innej aplikacji lub samego systemu operacyjnego.
Istnieje kilka podejść do łagodzenia się przeciwko skutkom przepełnienia bufora stosu. Jeden jest znany jako randomizacja układu przestrzeni adresowej. To w losowo organizuje najważniejsze obszary danych na komputerze. Chodzi o to, że nawet jeśli haker powoduje lub wykorzystuje przepełnienie bufora stosu, nie będzie w stanie wykorzystać naruszenia w niezawodny sposób.