1988 überschrieb die erste große Internet - Verbreitung Virus eine kleine , 536 -Byte- Abschnitt des Speichers auf einem einzelnen Computer und innerhalb von vier Tagen mehr als 60.000 Computern weltweit entmündigt. Trotz der Fortschritte in Programmiersprachen , Programmiertechniken und die Sicherheit des Betriebssystems Härten, können böswillige Programmierer noch schaffen Viren und andere Malware mit Pufferüberläufe zum Absturz zu bringen , der Kontrolle oder stehlen Ihre System- Daten . Arten von Memory Beteiligte
Ein Computer Puffer ist ein Teil seiner Erinnerung, die verwendet werden, um vorübergehend halten Daten von einer Anwendung oder dem Betriebssystem benötigt wird. Eine Anwendung mit einem festen oder statischen Puffer als der Stapel , dessen Größe bestimmt wird, wenn das Programm zum ersten Mal erstellt wird , und durch das Betriebssystem zugeordnet , wenn die Anwendung geladen wird. Heap-Speicher ist eine andere Art des Puffers eine Anwendung während er ausgeführt wird . Im Gegensatz zu den statischen Puffer, wird Heap-Speicher erstellt und zerstört , wie es die Anwendung erfordert .
Static Pufferüberläufe
Static Pufferüberlauf auftreten, wenn zu viele Daten an eine vordefinierte geschrieben Teil des Speichers in den Stack der Anwendung . Der Stapel enthält Informationen über die Anwendung und Funktion Funktion Variablen . Objekte auf dem Stapel eine feste oder statische Größe . Wenn mehr Daten auf einen Stapel Artikel als es gemeint ist, zu halten, geschrieben wird, wird die überschüssige Daten in benachbarten Speicherplätzen abgelegt. Die überschüssigen Daten können die Daten bereits dort zu verderben.
Heap Overruns
Heap-Speicher ist der Raum Ihres Betriebssystems gibt die Anwendung zum Erstellen und Speichern von Informationen auf die Fliege . Jedes Heapblocks einen Zeiger auf die physikalische Adresse des Speicherblocks , bevor und nachdem sie. Wie Stacküberläufe , wenn zu viele Daten zu einem vorher zugewiesenen Speicherblock geschrieben ist, schwappt das überschüssige Daten auf den nächsten Block von Speicher und können sich die nächsten und vorherigen Zeiger ändern. Dies kann verwendet werden , um die Anwendung oder Ort Zeiger auf Speicherblöcke abstürzen werden die böswillige Programmierer Zugriff hat.
Arrayindizierung Fehler
Arrays in den meisten Programmiersprachen deklariert wird ein fester Teil des Speichers in der Halde für die Array- Daten vorbelegt. Die C-und C + +-Sprachen richtig zuordnen Arrays aber nicht verhindern, dass die Array-Speicher -Block überschrieben . Wie Haufen Überschreitungen können Teilungsfehler überschreibt oder beschädigt benachbarte Blöcke des Speichers. Moderne Sprachen wie C # und Java für Arrayindizierung Fehler bei der Kompilierung und während der Programmausführung zu überprüfen.