• Schwachstellen-Typen

Übersicht der Schwachstellen-Typen und deren Gefahrenpotential

blog-thumb

Der IT-Wachdienst bietet - genau wie ein Wachdienst in der realen Welt - einen Service an, der Ihre “Internet-Liegenschaften” im Blick behält und verhindert, dass Einbrecher leichtes Spiel haben. Dieser Artikel beschreibt die verschiedenen Typen von Schwachstellen.

Schwachstellen-Typen

Neben der generellen Bewertung der Kritikalität, in der man sich in erster Linie auf die Auswirkung einer Scwachstelle auf Vertraulichkein, Integrität und Verfügbarkeit von Daten bezieht, geht dieser Artikel auf die Art und Weise ein, wie die Ausnutzung einer Schwachstelle stattfindet und welche Konsequenzen daraus entstehen. In diesem Artikel werden die Schwachstellen-Typen sehr generell und oberflächlich beschrieben.

Code Execution

Bei dieser Klasse von Schwachstellen, schaffen es Angreifer durch geschickte Manipulaltion der Applikations-Schnittstelle bzw. durch das Einbringen von speziell zu diesem Zweck erzeugten Inhalten, dass das Zielsystem fremden Programmcode ausführt, welcher Angreifern bei Kompromittierung des Systems behilflich ist. Code Execution Schwachstellen wirken sich in den meisten Fällen negativ auf Verfügbarkeit, Vertraulichkeit und Integrität der Daten auf dem Zielsystem aus und gelten somit als hochkritisch.

Bypass

Mittels Schwachstellen dieses Typs sind Angreifer in der Lage implementierte Sicherheitsmaßnahmen zu umgehen. Bekannte Beispiele für Bypass-Schwachstellen sind Authentication-Bypass-Schwachstellen, bei denen ein Anmelde-Prozess umgangen werden kann oder Permission-Bypass-Schwachstellen, bei denen eine Berechtigungsprüfung umgangen werden kann.

Cross-Site-Request-Forgery (CSRF)

CSRF ermöglicht Angreifern den Zugriff auf weitere Systeme mit dem Unterschied, dass der Zugriff auf das weitere System nicht vom System des Angreifers, sondern vom angegriffenen System zu kommen scheint. Das hilft Angreifern zum einen dabei Ihre Identität zu verschleiern, zum anderen ermöglicht dies den indirekten Zugriff auf etwaige Backend-Dienste, die dem Angreifer ansonsten nicht zugängig wären. Die Bewertung der Kritikalität dieser Schwachstellen-Klasse ist immer sehr stark vom Kontext abhängig.

Directory Traversal

Diese Schwachstellen-Klasse trifft auf Software-Schwachstellen zu, die den Angreifern ermöglichen aus einem definierten Server-Kontext auszubrechen. Unter Zuhilfenahme definierter Zeichenketten können Angreifer mit den Zugriffsrechten der fehlerhaften Software in vielen Fällen sensible Daten vom Zielsystem abrufen.

Denial of Service (DoS)

Diese Schwachstellen-Klasse betrifft Schwachstellen und beschreibt die Eigenschaft, dass Angreifer durch Ausnutzung dieser Schwachstelle in der Lage sind, das Zielsystem oder die Ziel-Anwendung temporär oder bis zu einem Neustart zu deaktivieren. Schwachstellen dieser Klasse wirken sich negativ auf die Verfügbarkeit der Daten bzw. Systeme aus.

File Inclusion

Schwachstellen dieses Typs ermöglichen Angreifern durch den Upload von Programmcode (Remote File Inclusion) die Funktion einer Anwendung zu beeinflussen. Wenn Angreifer in der Lage sind die Funktion einer Anwendung durch die Einbindung von Dateien auf dem System selbst zu beeinflussen, so spricht man von Local File Inclusion.

HTTP Response Splitting

Schwachstellen dieser Klasse ermöglichen es den Response-Header von Web-Diensten zu verändern. Auf diese Weise können Angreifer die Besucher von Webseiten z.B. mit Malware angreifen oder sensible Daten abgreifen. Eine Kritikalitätsbewertung der Schwachstellen dieser Klasse ist stark vom jeweiligen Kontext abhängig.

Information Disclosure

Schwachstellen, die dieser Klasse angehören, wirken sich auf die Vertraulichkeit der Daten im Zielsystem aus. Meistens sind die Informationen, die durch derartige Schwachstellen sichtbar werden, hilfreich um weitere Angriffsvektoren auf das Zielsystem zu entdecken.

Memory Corruption

Wird eine Schwachstelle diesen Typs augenutzt, kommt es zu ungeplanten Veränderungen im Speicherbereich der betroffenen Anwendung. Abhängig von den Rahmenbedingungen kann mittels Memory Corruption auch Code Execution oder Denial of Service möglich werden.

Overflow

Bei Overflow Schwachstellen ist es Angreifern möglich mit speziell ausgewählten Eingabe-Werten, die größer sind als der dafür im Programmcode vorgesehene Speicherplatz, die Ausführung der Software zu stören. Bei geschickter Ausnutzung dieses Schwachstellen-Typs ist ebenfalls Code Execution möglich.

Privilege Escalation

Durch Ausnützung von Schwachstellen dieses Typs, erlangen Angreifer höhere Privilegien bzw. Rechte in einer Applikation bzw. in einem Betriebssystem als es ihnen unter normalen Umständen möglich sein soll. Dieser Typ von Schwachstellen wird oft in Verbindung mit anderen Schwachstellen zur kritischen Gefahr für Zielsysteme.

SQL Injection

SQL ist eine für Datenbanken konzipierte, strukturierte Abfrage-Sprache. Schwachstellen des Typs SQL Injection (SQLi) machen es Angreifern möglich, Datenbank-Abfragen durch entsprechend angepasste Eingabe-Werte für die jeweilige Anwendung in Ihrem Sinn zu verändern. Erfolgreiche Ausnutzung dieses Schwachstellen-Typs erlaubt das Auslesen (Information Disclosure), das Verändern der Datenbank-Inhalte und ermöglicht unter Umständen Angriffsvektoren der Typen Code Execution und File Inclusion.

Cross-Site-Scripting

Angreifer können durch Ausnutzung von Schwachstellen dieses Typs Webseiten-Benutzer bzw. deren Browser angreifen. Das Platzieren von Javascript-Code in Links und die fehlerhafte Interpretation seitens der Web-Anwendung führt zum sogenannten reflektierten Cross-Site-Scripting. Ist es Angreifern möglich, maliziöse Javascript-Inhalte beispielsweise in der Applikations-Datenbank zu hinterlegen, so spricht man von persistentem Cross-Site-Scripting.

Zusammenfassung

Betreiber von öffentlich erreichbarer Server-Infrastruktur und Entwickler von Software gehen das Risiko ein, ihre Infrastruktur bzw. die Infrastruktur ihrer Kunden zu gefährden. Die Gefährdung entsteht durch die fehlerhafte Implementierung von Anwendungen. Die gemachten Fehler lassen sich in den meisten Fällen in die hier beschriebenen Typen einteilen.

Um festzustellen, ob Anwendungen auf den eigenen Servern bereits bekannte Schwachstellen aufweisen, sollte ein regelmäßiger Schwachstellen-Scan durchgeführt werden.

Um als Software-Entwickler derartige Fehler in der eigenen Software zu vermeiden, empfiehlt sich die Durchführung einer Applikations-Prüfung, die oft auch als Penetration-Test bezeichnet wird. Im Vergleich zum automatisierten Schwachstellen-Scan ist die größtenteils manuelle Durchführung eines Pentests sehr zeitintensiv.