Wie man Buffer-Overflow-Angriffe abwehrt und Schwachstellen findet
Buffer Overflows sind Sicherheitslücken, die von Cyberkriminellen ausgenutzt werden. Wir zeigen, wie sie funktionieren und sich verhindern lassen.
Sogenannte Buffer-Overflow-Schwachstellen und -Anfälligkeiten können für Unternehmen zu signifikanten Schäden führen. Möglich sind peinliche und kostspielige Datensicherheitsverletzungen. Aber auch der Angriff auf Web-Applikationen und die komplette Kontrolle eines Firmen-Rechners sind denkbar.
In diesem Tipp kümmern wir uns um das Eingemachte von Buffer-Overflow-Angriffen und erklären, wie man diese identifizieren kann. Sie wollen sicherlich vermeiden, dass Cyberkriminelle mittels Buffer-Overflow-Angriffen Web-Applikationen kompromittieren.
Was ist ein Buffer Overflow und wie funktioniert er?
Ein Buffer oder Puffer ist ein temporärer Speicherbereich für Daten. Weist man einem Buffer mehr Daten zu als dieser aufnehmen kann, kommt es zu einem Overflow. Die zusätzlichen Daten fließen also über, was für die Namensgebung verantwortlich ist. Einige der Daten wandern dann in andere Buffer. Dieser Vorgang kann Daten in diesen Puffern überschreiben oder unbrauchbar machen.
Bei einem Buffer-Overflow-Angriff befinden sich in den zusätzlichen Daten manchmal spezielle Anweisungen für Aktionen, die ein böswilliger Hacker oder Cyberkrimineller mit Absicht dort untergebracht hat. Zum Beispiel könnten Befehle übermittelt werden, die bestimmte Dateien zerstören, verändern oder persönliche Daten exponieren.
Böswillige Hacker würden einen Buffer Overflow Exploit verwenden, um ein Programm auszunutzen, das auf die Eingaben eines Anwenders wartet. Es gibt zwei Arten an Buffer Overflows: Stack-basiert und Heap-basiert. Heap-basierte Buffer Overflows sind schwierig auszuführen und kommen daher seltener vor. Sie greifen eine Anwendung an, indem Sie den für ein Programm reservierten Speicher fluten.
Stack-basierte Buffer Overflows findet man hingegen häufiger. Sie nutzen bei Programmen und Applikationen die Komponente aus, die man als Stack kennt. Das ist der Speicherbereich, der die Eingaben der Anwender speichert.
Ein Stack kann nur eine bestimmte Anzahl an Daten aufnehmen. Ist die Input-Zeichenkette länger als der reservierte Speicherplatz, ist das Ergebnis ein Overflow, der wiederum eine Security-Lücke erzeugt. Clevere Cyberkriminelle wollen diese Schwachstellen mit speziellen Befehlen ausnutzen und gezielt einen Overflow erzwingen.
Damit stoßen Sie den Angriff an. Sobald der schädliche Befehl den Overflow ausgelöst hat, muss ein böswilliger Hacker immer noch den Befehl durch das Hinterlegen einer Return-Adresse ausführen, die auf den Befehl zeigt. Ein Buffer-Overflow bringt eine Applikation teilweise zum Absturz. Allerdings versucht sie eine Wiederherstellung mithilfe dieser Return-Adresse. Sie wurde von dem Cyberkriminellen allerdings entsprechend manipuliert und auf den böswilligen Befehl umgeleitet.
Führt der Buffer-Overflow-Angriff den Befehl von der neuen Return-Adresse aus, geht das Programm davon aus, dass es immer noch läuft. Das sich öffnende Kommandozeilen-Fenster besitzt also die gleichen Ausführberechtigungen wie das angegriffene Programm oder die ausgenutzte Applikation. Im schlimmsten Fall könnte der böswillige Hacker die komplette Kontrolle über das Betriebssystem erlangen.
Wie lässt sich verhindern, dass Buffer-Overflows Applikationen ausnutzen können?
Sie wissen nun, wie ein Buffer-Overflow-Angriff funktioniert. Das können Sie für Verteidigungsmaßnahmen anwenden und somit verhindern, dass jemand Ihr System infiltriert und sich die Kontrolle über die Applikationen ergaunert. Nachfolgend finden Sie diverse Methoden, wie Sie die Verteidigung stärken und Buffer Overflows vermeiden können:
- Verwenden Sie nach Möglichkeit keine gemeinsam genutzten Bibliotheken, die von der Programmiersprache verwendet werden und somit von Natur aus unsicher sind. Sie sind in der Regel ein begehrtes Ziel von böswilligen Hackern während eines Angriffs. Findet ein Cyberkrimineller eine Schwachstelle in einer Bibliothek, dann existiert diese auch in allen Applikationen, die dieselbe Bibliothek verwenden. Somit hat ein Angreifer möglicherweise eine reiche Auswahl, welche Applikation er angreifen möchte.
- Anwender-Input filtern: Filtern Sie potenziell gefährlichen HTML-Code und Zeichen, die Probleme mit der Datenbank verursachen könnten. Bei ASP-Code sind zum Beispiel der Apostroph, das Anführungszeichen und das kaufmännische Und reservierte Symbole. Diese dürfen nicht im Input eines Anwenders vorkommen, da sie die Applikation zum Absturz bringen würden. Entsprechende Filter helfen, diese Zeichen zu ersetzen. So vermeiden Sie Komplikationen und Probleme.
- Das Testen der Applikationen: Stellen Sie sicher, dass alle Anwendungen vor einem produktiven Einsatz ausgiebig getestet werden. Versuchen Sie in jede Applikation einzubrechen. Nur so garantieren Sie sicheres Coding. Sollte die Applikation abstürzen, gibt es an dieser Stelle ganz klar ein Problem. Dieses müssen Sie reparieren, bevor böswillige Hacker den Missstand für sich ausnutzen können.
Folgen Sie SearchSecurity.de auch auf Twitter, Google+ und Facebook!