Przepełnienie bufora: tak działa ta potężna luka

Ale czym właściwie jest wada? Przepełnienie bufora ; Jest to problem z bezpieczeństwem pamięci, w którym oprogramowanie/program ignoruje lub nie weryfikuje limitów pamięci. Pamięć programu otrzymuje wtedy więcej danych, niż można przetworzyć w zależności od tego, jak została opracowana. Oprócz awarii programu lub nieoczekiwanej przerwy w działaniu programu, mogą istnieć luki w zabezpieczeniach, które można wykorzystać.

Ciekawostką jest to, że Przepełnienie bufora jest jedną z najczęstszych przyczyn ataków polegających na wykonywaniu dowolnego kodu ze względu na luki w zabezpieczeniach. Również wiele programów opracowanych w klasycznych językach, takich jak C i C++, uważanych jest za dość wrażliwych na tego typu problem.

Kwestia bezpieczeństwa, która pozostaje przez lata

Minęły lata i takie obawy o bezpieczeństwo są prawie tak samo ważne jak wczesne lata. Od początku nie ma żadnego konkretnego wytłumaczenia, które mogłoby nam pokazać, dlaczego po ponad 10 latach jest to ogromny ból głowy dla osób zaangażowanych w tworzenie i/lub utrzymywanie programów podatnych na niepowodzenie.

Kolejnym czynnikiem, który napędza popularność tego typu awarii, jest utrzymująca się popularność internet rzeczy , czyli Internet Rzeczy. Bardziej niż kiedykolwiek możliwe jest, aby instalacja, z której często korzystamy w domu lub w pracy, mogła połączyć się z siecią. Niefortunnym aspektem tego pożądanego trendu jest to, że duża część urządzeń IoT jest kontrolowana przez oprogramowanie układowe bardzo słabej jakości. Ponadto kontrole i egzekwowanie środków bezpieczeństwa są praktycznie zerowe. Wiemy, że jest wielu renomowanych producentów, którzy robią wszystko, aby chronić nie tylko urządzenia, ale także użytkowników. Jednak istnieje również wielu producentów, którzy pomijają bezpieczny aspekt dobrego doświadczenia użytkownika.

Błąd przepełnienia bufora w akcji

Zanim przejdziemy do praktycznego przykładu, ważne jest, aby jasno określić koncepcję regulator (lub bufor). W programowaniu są to lokalizacje pamięci, które należą do programu. Oznacza to, że program ma wiele lokalizacji w pamięci do przechowywania wszystkich danych wygenerowanych w wyniku korzystania z tego programu. Każdy programista powinien o tym pamiętać tampon lub bufory są niezbędne do prawidłowego funkcjonowania każdego tworzonego przez nich programu. Jeśli ten aspekt zostanie zaniedbany, programy będą miały wiele problemów z prawidłowym działaniem lub przestaną działać bezpośrednio.

Więc co się dzieje podczas? Przepełnienie bufora, oznacza to, że wykonywany jest proces, który powoduje, że program wytwarza więcej danych niż pojemność bufora programu. Dlatego dane generowane podczas korzystania z samego programu trafiają do lokalizacji pamięci, które nie są przygotowane do przechowywania tych danych. Następnie udostępniamy niezwykle łatwy w użyciu i zrozumiały film. Zobaczymy, jak zaimplementować nieudaną implementację prostego programu w C.

Na szczęście film wybrał bardzo prosty program: prosty formularz, który prosi o wpisanie swojego imienia na klawiaturze. Pozwala w kilka minut zrozumieć, jak zachowuje się tego typu awaria. Weźmy przykład z tego samego filmu w codziennej sytuacji.

Wyobraź sobie przeglądanie sieci i napotykanie usługi, która przyciągnęła Twoją uwagę. Dlatego decydujesz się zarejestrować i w tym celu musisz wypełnić formularz z kilkoma informacjami. Wystarczy, że wpiszesz swoje imię, nazwisko i adres e-mail.

Nombre:
Apellido:
Correo electrónico:

Następnie wprowadzam swoje dane.

Nombre: Lorena
Apellido: Fernández
Correo electrónico: [email protected]

Jak dotąd wszystko jest w normie. Ale co, jeśli spróbujesz się zarejestrować i umieścić naprawdę duże nazwisko w polu? Na przykład to:

Nombre: Lorenaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Apellido: Fernández
Correo electrónico: [email protected]

Klikasz na Zarejestruj się i nagle formularz wyświetla komunikat o błędzie, który nie jest zrozumiały dla wszystkich. Wiele niezrozumiałych liter i cyfr. Próbujesz uzupełnić dane bezpośrednio, zmieniając zawartość pól, ale nic się nie dzieje. Tylko zamykając witrynę i otwierając ją ponownie, możesz przejść do pustego formularza i zacząć od nowa. Korzystasz więc z przepełnienia bufora.

Brama do innych cyberataków

Oczywiście zdarzają się sytuacje nieco bardziej skomplikowane niż prosty formularz. Podobnie, biorąc pod uwagę zademonstrowaną sytuację, można zrozumieć, że każdy program, aplikacja lub usługa opracowana ze złymi praktykami bezpieczeństwa prowadzi do tego typu awarii.

Pozwala nawet cyberprzestępcom na wykonanie złośliwego kodu, a tym samym na znacznie szerszy zakres ataków. Oznacza to, że jeśli awaria się powiedzie, może nastąpić znacznie więcej ataków. Ataki DDoS Wstrzyknięcie SQL ataki rodzaj wędkarstwo elektroniczne można wykonać w przypadku dostępu do danych osobowych użytkowników, a nawet zdarzeń naruszenia danych.

Jak skutecznie uchronić się przed tą porażką

Jedną z najważniejszych rekomendacji, szczególnie dla programistów, jest przestrzeganie standardów bezpiecznego tworzenia kodu. Ponadto, myśląc o jakimkolwiek oprogramowaniu, musisz edukować się, jak ważne jest, aby bezpieczeństwo stało się jednym z Twoich najważniejszych priorytetów. W zależności od języka, kontekstu i innych aspektów, których używasz, możesz znaleźć kilka przewodników z bardzo szczegółowymi szablonami. Pomogą one nie tylko w bezpiecznym opracowaniu hasła, aby zapobiec przepełnieniu bufora, ale także innym potencjalnym zagrożeniom bezpieczeństwa. Plan OWASP W sekcji 10 najczęstszych opisano główne zagrożenia bezpieczeństwa związane z dowolnym rozwiązaniem w Internecie, zalecamy zapoznanie się z nimi.

Podobnie sugerują wybór języków programowania, które oprócz wydajnej pamięci są bezpieczne. To samo dotyczy wszelkiego rodzaju frameworków i bibliotek, których potrzebujesz. Inne bardziej szczegółowe zalecenia dla programistów to na przykład niezależne od aplikacji komponenty wykonywalne. Po co by to było? Ogranicz wpływ, jaki może wywołać przepełnienie buforu, zakładając, że nie można przechwycić i zatrzymać zdarzenia. Nie mówimy tylko o profilaktyce, ale także o łagodzeniu skutków. Jeśli chodzi o luki, limity są prawie nieograniczone.

Wspomnieliśmy powyżej, że przepełnienie bufora jest trwałym stanem w programach napisanych w językach takich jak C i C++. Na szczęście programiści współpracowali ze sobą w celu opracowania i rozpowszechniania lepszych i bezpieczniejszych praktyk. A przez praktykę rozumiemy rozwój samego oprogramowania. W rezultacie wielu producentów dużych i małych kalibrów przyjęło już takie praktyki w swoim cyklu rozwojowym.

Dodaj komentarz