Co to jest przepełnienie bufora?
Przepełnienie bufora występuje, gdy program próbuje zapisać do bufora i wykracza poza jego granice, w wyniku czego program zapisuje informacje do pamięci, która potencjalnie należy do innego programu. Narusza to integralność pamięci w systemie operacyjnym, co powoduje poważny błąd i potencjalną awarię wykonującego się programu. Główne niebezpieczeństwo przepełnienia bufora wynika z dwóch głównych elementów. Po pierwsze, informacje zapisane poza buforem są pozornie „zagubione”, ponieważ mapa pamięci komputera - lista lokalizacji pamięci - nie może tego uwzględnić. Po drugie, przepełnienie bufora może przypadkowo zastąpić informacje przechowywane w pamięci dla innego programu, skutecznie zakłócając również wykonywanie innego programu.
„Bufor” to obszar pamięci używany jako tymczasowe miejsce przechowywania, podczas gdy komputer przesyła informacje z jednego punktu do drugiego. Najczęściej stosowanym buforem jest zwykle odtwarzanie wideo lub audio, gdzie komputer wyświetla dodatkowe X sekund materiału lub dźwięku w pamięci, zapewniając, że odtwarzanie nie zostanie przerwane, jeśli coś chwilowo nie działa w systemie. Bufor istnieje tylko w określonej, z góry określonej lokalizacji w pamięci komputera, podobnie jak kraj istnieje tylko w obrębie linii granicznych narysowanych na mapie. Wyjście poza te wirtualne „linie” powoduje problemy nie tylko dla uruchomionego programu, ale także dla innych programów w systemie.
Zasadniczo program wykroczył poza przypisaną mu jurysdykcję i zaatakował przestrzeń innego działającego programu. Gdy to nastąpi, informacje zapisane poza buforem skutecznie spadną z mapy komputera; innymi słowy, system nie ma już możliwości odzyskania go. Ponieważ komputer „wie” tylko, że może wyszukiwać buforowane informacje w określonym miejscu bufora przydzielonym w pamięci, nie ma sposobu, aby dowiedzieć się, dokąd poszła przepełniona informacja.
Ponadto przepełnienie bufora może zakłócać działanie innych programów działających na komputerze. Wyobraź sobie, że przestrzeń pamięci po obu stronach bufora została już przypisana do innych działających programów. Gdy informacje w buforze upuszczą się poza wyznaczony obszar, zastąpią i uszkodzą wszelkie informacje już zapisane w tych sekcjach pamięci. Dlatego przepełnienie bufora jest problemem, który może podważyć skuteczność sąsiedniego programu, a także spowodować uszkodzenie jego własnej operacji.