Wie Pufferüberläufe & Überläufe zu verhindern.

March 22

Pufferüberläufe beenden verhindern hilft Programmabstürzen und Hacker Freigabe von bösartigem Code, der ein Computersystem gefährden können. Ein Buffer Overflow ist, wenn ein Programm von Daten in einem Puffer, häufig ein String oder ein Array schreiben ist und überschreitet die Länge des Puffers, Schreiben von Code in den angrenzenden Speicher. Pufferüberläufe zu verhindern wird erreicht, indem mithilfe von Programmierbibliotheken, die Puffer-Schutz unterstützen, dass ausführbare Raum Schutz und Programmiersprachen, die Überprüfung von Grenzen haben die Wahl.

Anweisungen

1 Wählen Sie eine Programmiersprache, die integrierte Kontrollen, die Daten außerhalb der Begrenzungen eines Puffers schreiben zu verhindern hat. Sprachen wie C und C++ fehlen eingebaute Grenze zu überprüfen. NET Framework und Java-Umgebungen Kraft Abgrenzungsüberprüfung. Interpretierte Sprachen haben Schutz vor Pufferüberläufen.

2 Wählen Sie Bibliotheken und Funktionen, die Pufferverwaltung und Überprüfung von Grenzen haben. Die häufig verwendete C Funktionen "Strcpy", "Scanf" und "ruft" sind besonders anfällig für Pufferüberläufe. Sicherere Alternativen gehören die "Strncpy" und "Strncat" Funktionen, die Daten von mehr als die angegebene Länge zu verwerfen. Weiterhin muss darauf geachtet werden, die richtige Puffergröße angeben. Ein Beispiel für eine sicherere Alternative zu den C-String-Bibliothek ist der kostenlos herunterladbaren "die bessere String Library".

3 Installieren Sie ausführbare Raum Schutz Add-ons um Pufferüberläufe zu vermeiden. Code aus dem Stapel oder Heap ausführen versucht wird eine Ausnahme. Schutz von ausführbaren Raum nutzt die "No eXecute" (NX Bit) Speicherbereiche als nicht ausführbar kennzeichnen. Beispiele für ausführbare Raum Schutz Pakete für Unix OpenWall, Exec-Shield und Pax. Windows Add-ons sind StackDefender und BufferShield. Seit Windows XP Service Pack 2 bietet Windows Data Execution Prevention (DEP), Bereitstellung von einigen Schutz vor Pufferüberläufen.