Carsten Eilers Freier Berater und Coach

Man ist gut beraten, wenn man möglichst jeden möglichen Angriff frühzeitig verhindert. Das erspart unter Umständen sehr viel Ärger.

Das alte Wettrennen zwischen Angreifern auf und Verteidigern von Windows-Rechnern geht in eine neue Runde: Auf der DEF CON 23 wurden Angriffe auf den Kontrollfluss von .NET-Anwendungen vorgestellt. Ein gutes Beispiel dafür, dass man beim Absichern seiner Software nie nachlassen darf.

Mitigations, also Maßnahmen zum Erschweren von Angriffen, haben eine lange Geschichte. Immer, wenn eine neue Mitigation bisherige Angriffe so sehr erschwerte, dass die Angreifer nicht mehr oft genug an ihr Ziel kamen, suchten sie nach neuen Wegen dorthin. Die dann ebenfalls mit einer Mitigation blockiert wurden, sodass früher oder später wieder ein neuer Weg gesucht wurde. Und so weiter – ein Ende ist nicht abzusehen.

Mitigations im Schnelldurchlauf

Lange Zeit schleusten Cyberkriminelle ihren Schadcode mit Vorliebe über Pufferüberlaufschwachstellen ein. Anfangs gab es dagegen überhaupt keinen Schutz: Der Pufferüberlauf fand meist auf dem Stack statt, und dabei wurde auch die Rücksprungadresse des aktuellen Unterprogramms überschrieben. Da der gesamte Speicher ausführbar war, musste der Angreifer nur seinen Code einschleusen und die Rücksprungadresse mit einem passenden Wert überschreiben.

Als erster Schutz vor diesen Angriffen wurde die Rücksprungadresse durch einen so genannten Canary geschützt: Ein zufällig erzeugter Wert wurde vor der Rücksprungadresse auf dem Stack gespeichert, und die Rücksprungadresse wurde nur verwendet, wenn der Canary-Wert korrekt war. Dieser Schutz lässt sich unter bestimmten Umständen umgehen, sodass zusätzlich begonnen wurde, alle Speicherbereiche, in denen kein Code gespeichert ist, als „nicht ausführbar“ zu markieren.

Diese „Data Execution Prevention“ (DEP) genannte Mitigation lässt sich ebenfalls umgehen. Die Cyberkriminellen springen einfach zu vorhandenem Code und missbrauchen diesen für ihre Zwecke. Um das zu verhindern, werden Programme und Bibliotheken nun nicht mehr der Reihe nach an feste Adressen geladen, sondern bunt im Speicher verteilt. Diese Mitigation wird als Adress-Space-Layout-Randomization (ASLR) bezeichnet und kann unter Umständen natürlich ebenfalls umgangen werden. Weshalb nicht nur immer wieder neue Mitigations entwickelt, sondern auch die vorhandenen stetig verbessert werden, zum Beispiel in Windows 8 DEP und ASLR.

Unter Windows können die Mitigations übrigens über das Enhanced Mitigation Experience Toolkit (EMET) auch für Anwendungen aktiviert werden, die sie von Haus aus nicht nutzen. Was sehr zu empfehlen ist, denn inzwischen nutzen viele Exploits diese ungeschützten Anwendungen und ihre Bibliotheken als Einfallstor.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Windows Developer 7.16 - "Die Welt der Chatbots"

Alle Infos zum Heft
246931Angriffe auf den Kontrollfluss von .NET-Anwendungen
X
- Gib Deinen Standort ein -
- or -