Selbst die unscheinbare Aspekte eines Programms präsentieren können Sicherheitsbedrohungen. Grundlegende Benutzereingaben kann Kurzschluss eines Programms internen Code in vielfältiger Weise. Die Eingabe kann die Funktionsweise der Druckfunktionen des Programms Ablauf der Steuerung durch Überschreiben der Grenzen der Funktion aufzurufen. Oder es kann zu einem Pufferüberlauf Grenzen für sie vom Programmierer eingestellt, um Daten außerhalb der Programmierer dafür vorgesehenen Platz zu beeinflussen. So oder so, betrifft die Eingabe des Benutzers , wie das Programm ausgeführt wird, potenziell bösartige Richtung endet. Format Strings
Formatierung Strings in C und C + + sind Teil der Input-und Output -Funktionen. Der Format-String enthält Daten zur Ausgabe von Daten auf dem Bildschirm. Format -Strings haben zwei Hauptkomponenten. Die erste ist die grundlegende Zeichenfolge zu drucken , mit Zeichen und Interpunktion . Die zweite Komponente enthält Sonderzeichen mit Prozent-Zeichen , die als Platzhalter für variable Daten dienen markiert. Diese Symbole gibt es in der Schnur, und werden bei der Ausgabe von Werten in Variablen ersetzt. Das folgende Beispiel zeigt die grundlegende printf -Anweisung mit einem Format-String :
char x = " c "; int y = 10;
printf (" Printing Zeichen % c und Decimals % d" ; , x, y);
Format String Attacks
Die Unsicherheit der Format-Strings liegt darin, wie die Symbole in der Zeichenfolge verweisen auf andere Teile des Programms eingebettet. Zum Beispiel , kann ein Angreifer die Eingabe von Daten in eine Variable in einer Format-String verwendet injizieren Symbole, die ihr mit anderen Rahmen der Ausführung des Programms zugreifen können. Dabei kann der Angreifer Werte in Variablen außerhalb des Bereichs der Druck- Funktion ändern. Außerdem könnte der Angreifer möglicherweise Zugriff auf Werte im Speicher , die die Position von Funktionen darstellen . Der Angreifer könnte dann ändern Sie diesen Wert zu einer anderen Funktion hinweisen , wodurch sich der Ablauf der Ausführung und im wesentlichen Entführung des Programms.
Eingangspuffern
Eingang Puffer sind Bereiche der Datenspeicherung durch den Programmierer erstellt , um Daten durch den Benutzer eingegeben halten . Meistens behandeln Eingangspuffern Benutzereingaben von Log- in -Namen und Passwörter. Speziell für die Programmiersprache C , die keine nativen String-Handling , existieren Eingangspuffern als Arrays von Zeichen mit einer festgelegten Größe . In diesem Fall ist es dem Programmierer , um Daten für die Eingabe des Benutzers zuzuordnen.
Buffer Overflow
Ein Angreifer könnte die Vorteile der Einschränkungen dieser Puffer nehmen durch Überflutung mit Daten . Im einfachsten Beispiel , bedeutete eine Reihe von Zeichen , um einen Login-Namen halten könnte 20 Platz zugewiesen haben , aber ein Angreifer gibt es mehr als zwanzig Zeichen zu verarbeiten . In diesem Fall überschreiben die zusätzlichen Zeichen Speicherplätze unmittelbar nach der Anordnung. Diese Speicherplätze möglicherweise halten relevanten Daten Programmausführung , wie bedingte Variablen für die Ablaufsteuerung Aussagen oder Hinweise auf Funktionen auf dem Stapel. Wie der Format-String- Angriff , dies im Wesentlichen ermöglicht der Angreifer zu entführen das Programm.