Top 25 der Sicherheitslücken: Buffer Overflows als größte Gefahrenquelle

Eine kürzlich veröffentlichte Auswertung von häufigen Softwareschwachstellen liefert eine Übersicht über die 25 gefährlichsten Arten.

Lesezeit: 3 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen 333 Beiträge
Schädel

(Bild: Titima Ongkantong/Shutterstock.com)

Von
  • Alexander Königstein

Das Community-Projekt Common Weakness Enumeration (CWE) hat eine über zwei Jahre reichende Auswertung veröffentlicht, die die gefährlichsten Arten von Softwareschwachstellen dieses Zeitraums zusammenträgt. Eine daraus entstandene "Top 25 der Sicherheitslücken" zeigt unter anderem, dass Speicherfehler in Form von Pufferüberläufe eine der größten Gefahren darstellen.

Die CWE greift für ihre Auswertungen jeweils auf gemeldete Sicherheitslücken aus der National Vulnerability Database (NVD) zurück. Die Gesamtwertung ergibt sich aus der Häufigkeit einer Sicherheitslücke und dem möglichen Schaden.

Mit etwas Vorsprung steht auf Platz 1 der sogenannte Out-of-bounds Write. Bei dieser Variante des Buffer Overflows schreibt die Software Daten vor den Anfang oder über das vorgesehene Ende des Puffers hinaus.

Das Problem taucht zum Beispiel in C auf, wenn für eine IP-Adresse ein Puffer von 64 Bytes mit char hostname[64]; vorgesehen ist, aber die Software längere Eingaben nicht verhindert.

Ein Angreifer kann durch einen solchen Buffer Overflow unter Umständen sensible Daten überschreiben oder den weiteren Ablauf des Programms bestimmen.

Auf Platz 2 ist Cross-Site Scripting (XSS) gelandet. XSS-Schwachstellen sind meist weniger kritisch als andere Lücken in der Liste, kommen jedoch so häufig vor, dass sie oben mitspielen. Bei dieser Art von Lücke wird Javascript aus ungeprüften Eingaben im Browser des Angriffsziels ausgeführt.

Die Lücke entsteht, indem eine Webseite nutzergesteuerte Werte direkt in den Quelltext einfügt – zum Beispiel durch das Schreiben von Inhalt in den Quelltext der Seite aus einem GET-Parameter. In PHP ist dieser Code für XSS anfällig: echo '<div>'.$_GET["email"].'</div>'.

Dabei kann ein Angreifer die Eingabe manipulieren, um per Javascript die Cookies aus dem Kontext der Webseite zu lesen und an sich selbst weiterzuleiten.

Auf Platz 3 kletterte der Out-of-bounds-Fehler beim Lesen von Daten. Es handelt sich hier um eine weitere Art eines Speicherfehlers (Lesezugriff), bei der man möglicherweise sensible Daten aus dem Speicher auslesen kann.

Wenn man beispielsweise in C/C++ den Index eines Arrays beeinflussen kann, aber nur überprüft wird, ob der Index kleiner als die maximale Länge ist, kann ein Angreifer mit einem negativen Index möglicherweise sensiblen Speicherinhalt lesen.

Fehlende Authentifizierung für kritische Funktionen ("Missing Authentication for Critical Function") stieg von Platz 24 auf Platz 11. Darunter fallen komplett ungeschützte Funktionen. Bei der "Improper Authentication" auf Platz 14 hingegen ist die Authentifizierung zwar vorhanden, aber fehlerhaft implementiert.

Weitere Schwachstellen kletterten die Liste hinauf. Dazu zählen etwa "Deserialization of Untrusted Data" auf Platz 13, das Deserialisieren von nicht vertrauenswürdigen Daten, ohne zu überprüfen, ob das Ergebnis valide ist. Von Platz 41 auf Platz 19 schaffte es "Incorrect Default Permissions", das umfasst unsichere Dateiberechtigungen wie zum Beispiel "Index of /" Ordnerlisten bei Webservern.

Nicht mehr in den Top 25, aber dennoch wichtig zu vermeiden, sind etwa Code Injection ("Improper Control of Generation of Code") und fehlerhaftes Rechtemanagement ("Improper Privilege Management").

In den Beschreibungen der verschiedenen Schwachstellenarten gibt das CWE-Projekt sowohl Tipps dazu, wie man vorhandene Lücken aufspürt, als auch dazu, wie man ihnen vorbeugen kann. Zum Verhindern von Buffer Overflows empfiehlt das CWE-Projekt vor allem, von vornherein eine speichersichere Programmiersprache zu verwenden.

(ako)