Co to jest przepełnienie bufora?

Przepełnienie bufora występuje, gdy program próbuje pisać do bufora i wychodzi 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, powodując poważny błąd i potencjalną awarię uruchomionego programu. Główne niebezpieczeństwo przepełnienia bufora wynika z dwóch głównych elementów. Po pierwsze, informacje zapisane poza buforem są rzekomo „utracone”, ponieważ mapa pamięci komputera — jego lista lokalizacji pamięci — nie może tego wyjaśnić. Po drugie, przepełnienie bufora może przypadkowo nadpisać 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ęstszym zastosowaniem bufora jest zwykle odtwarzanie wideo lub audio, w którym komputer podskakuje dodatkowe X sekund materiału lub dźwięku w pamięci, zapewniając, że odtwarzanie nie zostanie przerwane, jeśli coś chwilowo zawiedzie 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 z uruchomionym programem, ale także z innymi programami w systemie.

Zasadniczo program wykroczył poza przydzieloną mu jurysdykcję i wkroczył w przestrzeń innego programu roboczego. Gdy to nastąpi, informacje zapisane poza buforem skutecznie znikną z mapy komputera; innymi słowy, system nie ma już możliwości jego odzyskania. Ponieważ komputer „wie” tylko o wyszukiwaniu zbuforowanych informacji w określonej przestrzeni buforowej przydzielonej w pamięci, nie ma sposobu, aby dowiedzieć się, gdzie się podziały przepełnione informacje.

Oprócz tego przepełnienie bufora może zakłócać działanie innych programów działających na komputerze. Wyobraź sobie, że miejsce w pamięci po obu stronach bufora zostało już przypisane do innych uruchomionych programów. Gdy informacje w buforze wypłyną poza wyznaczony obszar, nadpiszą i uszkodzą wszelkie informacje już przechowywane w tych sekcjach pamięci. Dlatego przepełnienie bufora jest problemem, który może podważyć skuteczność sąsiedniego programu, a także zaszkodzić jego własnemu działaniu.