Integer Overflow

Auch bekannt als:Ganzzahlüberlauf · Integer Wraparound

Integer Overflow: Rechenergebnis überschreitet den Wertebereich des Datentyps und springt auf einen falschen Wert um. Der Fehler ist für sich harmlos, wird aber gefährlich, sobald das Ergebnis eine Längen- oder Grenzprüfung speist.

Funktionsweise und Einordnung

Ganzzahlen haben eine feste Breite. Überschreitet ein Ergebnis den darstellbaren Bereich, wird bei vorzeichenlosen Typen modulo gerechnet, bei vorzeichenbehafteten ist das Verhalten in C undefiniert. Typisch ist die Größenberechnung vor einer Allokation: anzahl * groesse läuft über, das Ergebnis wird klein, der Puffer wird zu knapp allokiert — und der anschließende Kopiervorgang schreibt darüber hinaus. Verwandt sind Vorzeichenfehler, bei denen ein negativer Wert als sehr große vorzeichenlose Länge interpretiert wird.

Bedeutung in der Praxis

Der Befund liegt fast nie im Überlauf selbst, sondern in der nachgelagerten Wirkung: ein zu kleiner Puffer, eine übersprungene Grenzprüfung, ein falscher Schleifenzähler. Abhilfe schaffen überlaufgeprüfte Arithmetik, Prüfungen vor statt nach der Rechnung, ausreichend breite Typen für Größenangaben und statische Analyse. In der Bewertung sollte immer der Pfad vom fehlerhaften Wert bis zur sicherheitsrelevanten Entscheidung nachgezeichnet werden.

Verwandte Begriffe

  • Memory CorruptionMemory CorruptionUnbeabsichtigte oder gezielte Veränderung von Speicherstrukturen mit Sicherheitsfolgen.: Unbeabsichtigte oder gezielte Veränderung von Speicherstrukturen mit Sicherheitsfolgen.
  • Buffer OverflowBuffer OverflowSchreiben über die Grenze eines Speicherpuffers hinaus, wodurch benachbarte Daten überschrieben werden.: Schreiben über die Grenze eines Speicherpuffers hinaus, wodurch benachbarte Daten überschrieben werden.
  • Input ValidationInput ValidationPrüfung von Eingabedaten auf Format, Länge, Typ, Wertebereich und Zulässigkeit.: Prüfung von Eingabedaten auf Format, Länge, Typ, Wertebereich und Zulässigkeit.
  • Secure CodingSecure CodingProgrammierpraktiken zur Vermeidung typischer Schwachstellen und Fehlkonfigurationen.: Programmierpraktiken zur Vermeidung typischer Schwachstellen und Fehlkonfigurationen.