Każdego dnia hakerzy na całym świecie odkrywają i wykorzystują nowe luki w zabezpieczeniach witryn internetowych, aplikacji, a nawet architektury systemu. Jedną wspólną cechą wszystkich urządzeń elektronicznych, starych lub nowych, jest to, że są one uruchamiane przez programy przechowywane w pamięci. Hakerzy wykorzystali to i znaleźli luki znane jako przepełnienie bufora.

Chociaż nie jest to nowe, ataki i luki w zabezpieczeniach związane z przepełnieniem bufora sieją spustoszenie w cyberprzestrzeni. Tutaj wyjaśnimy Ci, czym są ataki przepełnienia bufora i jak możesz im zapobiec.

Zrozumienie buforów i pamięci systemowej

Aby zrozumieć, czym jest atak przepełnienia bufora i jak działa, musisz wiedzieć, czym jest bufor i jak działa pamięć komputera.

Pamięć stosu i sterty to dwie główne cechy pamięci komputera. Są to struktury danych używane do alokacji pamięci. Chociaż są podobne, pamięć stosu i sterty różni się na wiele sposobów.

Stos, który wykorzystuje koncepcję Last-in, First-out (LIFO), jest używany w pamięci RAM (pamięć o dostępie swobodnym) do przechowuj tymczasowo wykonania programu, podczas gdy sterta przypisuje pamięć za pomocą dynamicznej alokacji do global zmienne. Ale ich wspólną cechą jest bufor.

instagram viewer

Co to jest bufor?

Bufor to obszar pamięci używany do przechowywania danych, najprawdopodobniej w pamięci RAM komputera, podczas przenoszenia z jednego miejsca do drugiego. Dane te to zwykle programy, które należy wykonać. Bufory są przechowywane w stosie lub stercie. Optymalizują wykonywanie danych.

Co to jest przepełnienie bufora?

Przepełnienie bufora występuje, gdy bufor otrzymuje więcej danych niż wynosi jego pojemność. Ponieważ nie jest w stanie przetworzyć takiej ilości danych, przepełnia się.

Teraz w pamięci komputera, zaraz po buforze lub przestrzeni buforowej jest adres zwrotny. Ten adres zwrotny jest w rzeczywistości nazywany rozszerzonym wskaźnikiem instrukcji (EIP). Jego funkcją jest wskazywanie komputerowi określonego programu po wypełnieniu. Kiedy bufor ma więcej danych niż może pomieścić i przepełnia się, przepełnia się na adres powrotu.

Aby to zrozumieć, załóżmy, że masz przestrzeń buforową, która może pomieścić tylko pięć liter. Więc jeśli wypełnisz słowa takie jak „cukier” lub „pokój”, przepływ bufora może je zawierać. Ale kiedy masz słowo takie jak „uwierzytelnianie”, nieuchronnie się rozleje. Prowadzi to do błędu lub awarii systemu. Jednak hakerzy mogą wykorzystać tę lukę, aby rozpocząć atak przepełnienia bufora.

Co to jest atak przepełnienia bufora i jak to działa?

Ataki przepełnienia bufora mają miejsce, gdy haker przejmuje kontrolę nad adresem zwrotnym lub EIP. Gdy atakujący zna rozmiar pamięci systemu, może celowo zapisać dane w tym systemie, aby go przepełnić. Następnie upewniają się, że adres EIP lub adres zwrotny jest zapisany w celu wskazania programu, który może dać im dostęp do systemu lub ujawnić poufne informacje przechowywane w systemie.

Atakujący może nawet napisać pewne dane zawierające złośliwy kod i spowodować przepełnienie bufora. EIP jest następnie pisany, aby przekierować system z powrotem do złośliwego kodu, i jest uruchamiany. Następnie haker przejmuje kontrolę nad systemem.

W atakach na przepełnienie bufora jest pięć głównych etapów:

  1. Kolce
  2. Fuzzing
  3. Znalezienie przesunięcia
  4. Nadpisywanie EIP lub adresu zwrotnego
  5. Wykorzystywanie podatności

Kolce to pierwszy krok. Tutaj hakerzy znajdują część pamięci programu, która jest podatna na przepełnienie bufora. Potem przychodzi fuzzing, który jest podobny do skoku, ale tutaj haker wysyła znaki do programu, aby sprawdzić, czy można go złamać. Po pomyślnym zakończeniu atakujący przystępuje do znajdowania przesunięcia, czyli miejsca, w którym nastąpiło przepełnienie bufora. Ma to na celu poznanie rozmiaru bufora i adresu zwrotnego. Następnie haker wstawia złośliwy kod powłoki i kontroluje system.

Jakie są rodzaje ataków przepełnienia bufora?

Istnieją dwa główne typy ataków przepełnienia bufora: ataki oparte na stosie i na stercie.

1. Ataki przepełnienia bufora oparte na stosie

Ataki przepełnienia bufora oparte na stosie są najpopularniejszym rodzajem ataków przepełnienia bufora. Występują, gdy pamięć stosu systemu jest przepełniona i wykorzystywana. Jest również znany jako rozbijanie stosu.

2. Ataki przepełnienia bufora oparte na stercie

Ten rodzaj przepełnienia stosu nie jest zbyt powszechny, ponieważ jest trudny do wdrożenia i wykorzystania. Występuje, gdy pamięć przydzielona do programu przepełnia się. W styczniu 2021 r. Google wykryło przepełnienie bufora oparte na stercie luka w komponencie V8 przeglądarki Chrome.

Jak można zapobiec atakom przepełnienia bufora?

Ataki związane z przepełnieniem bufora można złagodzić za pomocą ochrony środowiska wykonawczego systemu operacyjnego, bezpiecznych języków programowania, randomizacji układu przestrzeni adresowej i zapewnienia ogólnych właściwych środków bezpieczeństwa.

1. Korzystanie z ochrony środowiska wykonawczego systemu operacyjnego

Ochrona w czasie wykonywania jest również nazywana sprawdzaniem granic tablicy w czasie wykonywania. Gwarantuje to, że każdy uruchomiony program znajduje się w dostępnej przestrzeni bufora lub pamięci. I sprawdza wszystkie dane zapisane w pamięci systemu. Utrudnia to hakerom nadpisanie danych w systemie i wykorzystanie luki.

2. Korzystanie z bezpiecznych języków programowania

Języki programowania, takie jak C i C++, nie implementują sprawdzania granic tablicy w czasie wykonywania, ponieważ sprawdzanie każdego programu zapisanego w systemie wymaga dodatkowego kodu i spowalnia go. Dlatego są bardziej podatne na ataki przepełnienia bufora. Korzystanie z bezpieczniejszych języków, takich jak C#, Java i Python, jest lepsze, ponieważ wiążą się z mniejszym ryzykiem ataków przepełnienia bufora.

3. Użyj randomizacji układu przestrzeni adresowej (ASLR)

Ten środek bezpieczeństwa losowo przypisuje adresy programów i funkcji w pamięci systemu do różnych obszarów danych. Utrudnia napastnikowi poruszanie się po wrażliwych funkcjach w pamięci.

4. Zapewnij ścisłe zasady bezpieczeństwa

Wiąże się to z regularną aktualizacją systemu, sprawdzaniem poprawności wszystkich danych zapisanych w systemie i przypisywaniem najmniejszych uprawnień użytkownikom. Dzięki odpowiednim politykom bezpieczeństwa nie powinieneś martwić się atakiem przepełnienia bufora.

Dbanie o bezpieczeństwo jest niezbędne do zwalczania ataków przepełnienia bufora

Zgodnie z popularnym powiedzeniem w bezpieczeństwie „dopóki system jest używany przez ludzi, istnieje luka”, co jest prawdziwe i nieuniknione. Jednak zawsze można zmniejszyć szanse na atak, zapewniając odpowiednie środki bezpieczeństwa i ich ścisłe przestrzeganie.

Pamiętaj, że hakerzy nieustannie znajdują nowe sposoby wykorzystania luk, takich jak ta. Dlatego to od Ciebie zależy, czy będziesz ich wyprzedzać, obserwując najnowsze osiągnięcia w dziedzinie cyberbezpieczeństwa.