Arten von Puffer-Überlauf-Attacken

August 3

Arten von Puffer-Überlauf-Attacken

1988 überschrieb das erste große Internet-Verbreitung Virus einen kleinen, 536 Byte Abschnitt Speicher auf einem einzelnen Computer und innerhalb von vier Tagen über 60.000 Computern weltweit außer Gefecht gesetzt. Trotz der Fortschritte in Programmiersprachen, Programmiertechniken und Betriebssystem des Verstärkens können böswillige Programmierer weiterhin erstellen, Viren und anderer Malware mit Pufferüberläufen abstürzt, Steuern oder Ihr System Daten stehlen.

Speichertypen beteiligt

Ein Computer-Puffer ist ein Teil des Speichers, der verwendet wird, um Daten von einer Anwendung oder das Betriebssystem vorübergehend zu halten. Eine Anwendung kann einen festen oder statischen Puffer bezeichnet den Stapel, dessen Größe bestimmt wird, wenn das Programm zuerst kompiliert und durch das Betriebssystem zugewiesen wird, wenn die Anwendung geladen wird. Heap-Speicher ist eine andere Art des Puffers, die eine Anwendung verwendet, während es läuft. Im Gegensatz zu den statischen Puffern Heap-Speicher erstellt und zerstört werden, wenn die Anwendung erfordert.

Statische Pufferüberläufe

Statische Pufferüberläufe treten auf, wenn zu viele Daten auf einen vordefinierten Teil des Speichers innerhalb der Anwendung Stapel geschrieben werden. Der Stack enthält Informationen über die Funktion der Anwendung und Funktion Variablen. Elemente des Stapels haben eine feste oder statische Größe. Wenn weitere Daten auf ein Stack-Element geschrieben werden, als es halten soll, werden die Daten in angrenzende Speicherbereiche gespeichert. Die Daten können die Daten bereits es beschädigen.

Heapüberläufe

Heap-Speicher ist der Raum Ihr Betriebssystem gibt die Anwendung zum Erstellen und Speichern von Informationen im laufenden Betrieb. Jeder Heapblock ist einen Zeiger auf die körperliche Adresse des Speicherblocks vor und nach ihm. Wie Stack Überschreitungen, wenn zu viele Daten auf einen zuvor reservierten Speicherblock, der überschüssige Daten Leckagen über zum nächsten geschrieben werden Speicher blockieren und den Block vorherigen und nächsten Zeiger ändern können. Dies kann zum Absturz der Anwendung oder Ort Zeiger auf Speicherblöcke hat der böswillige Programmierer Zugriff auf verwendet werden.

Array-Indizierung-Störungen

Bei Arrays in den meisten Programmiersprachen deklariert werden, wird ein fester Teil der im Heap vorbelegt für das Array Daten. Die Programmiersprachen C und C++ richtig Zuweisen von Arrays aber hindern den Array-Speicherblock nicht überschrieben wird. Wie Heapüberläufe Indizierung Störungen überschreiben und angrenzenden Speicherblöcke beschädigt. Moderne Sprachen wie c# und Java prüfen für Array-Indizierung Fehler zum Zeitpunkt der Kompilierung und während der Programmausführung.