Ist unser digitaler Nachlass gefährdet?
Pufferüberlauf-Angriff (auch Buffer-over-flow attack genannt) gefährden unsere digitale Sicherheit und somit unseren digitalen Nachlass. Sie können es kaum verhindern, da bereits in den aktuellen Betriebssystemen Fehler stecken, wie wir bereits berichteten. Eine gute Vorsorge und Überlegung, wie und wo Ihre Daten gespeichert und verwaltet werden, trägt aber enorm zu Steigerung Ihrer Sicherheit bei und somit zum Schutz ihres digitalen Vermögens.
Pufferüberläufe kommen beispielsweise in Passwortmanagern, Betriebssystemen, Officeprodukten, Messangerdienst und Bildbearbeitungsprogrammen vor. Egal ob Sie einen PC, ein Apple-Gerät oder ein Smartphone benutzen. Es ist eine der häufigsten Einbruchsmöglichkeiten in Fremdsystemen und beinahe täglich erhalten Nachrichten, dass wieder ein System betroffen ist.
Was ist ein Pufferüberlauf?
Puffer sind Speicherbereiche, in denen Daten vorübergehend gespeichert werden, während sie von einem Ort zum anderen übertragen werden. Ein Pufferüberlauf tritt auf, wenn die Datenmenge die Speicherkapazität des Speicherpuffers übersteigt. Infolgedessen überschreibt das Programm, das versucht, die Daten in den Puffer zu schreiben, benachbarte Speicherplätze.
Ein Puffer für Anmeldedaten kann beispielsweise so ausgelegt sein, dass er Eingaben von 8 Byte für den Benutzernamen und das Kennwort erwartet. Wenn eine Transaktion eine Eingabe von 10 Byte umfasst (d. h. 2 Byte mehr als erwartet), schreibt das Programm die überschüssigen Daten möglicherweise über die Puffergrenze hinaus.
Pufferüberläufe können alle Arten von Software betreffen. Sie entstehen in der Regel durch fehlerhafte Eingaben oder dadurch, dass nicht genügend Platz für den Puffer zugewiesen wird. Wenn die Transaktion ausführbaren Code überschreibt, kann dies dazu führen, dass sich das Programm unvorhersehbar verhält und falsche Ergebnisse, Speicherzugriffsfehler oder Abstürze erzeugt.
Was ist ein Pufferüberlauf-Angriff?
Angreifer nutzen Pufferüberlaufprobleme aus, indem sie den Speicher einer Anwendung überschreiben. Dadurch wird der Ausführungspfad des Programms geändert und eine Reaktion ausgelöst, die Dateien beschädigt oder private Informationen preisgibt. So kann ein Angreifer beispielsweise zusätzlichen Code einschleusen und neue Anweisungen an die Anwendung senden, um sich Zugang zu IT-Systemen zu verschaffen.
Wenn Angreifer das Speicherlayout eines Programms kennen, können sie absichtlich Eingaben einspeisen, die der Puffer nicht speichern kann und Bereiche überschreiben, die ausführbaren Code enthalten und diesen durch ihren eigenen Code ersetzen. So kann ein Angreifer beispielsweise einen Zeiger (ein Objekt, das auf einen anderen Bereich im Speicher verweist) überschreiben und auf eine Nutzlast verweisen, um die Kontrolle über das Programm zu erlangen.
Geläufigste Arten von Pufferüberlauf-Angriffen
- Stapelbasierte Pufferüberläufe sind häufiger und nutzen den Stapelspeicher aus, der nur während der Ausführungszeit einer Funktion vorhanden ist (Stack).
- Heap-basierte Angriffe sind schwieriger auszuführen und beinhalten die Überflutung des für ein Programm zugewiesenen Speicherplatzes über den für aktuelle Laufzeitoperationen verwendeten Speicher hinaus (Heap).
Welche Programmiersprachen sind am anfälligsten?
C und C++ sind zwei Sprachen, die sehr anfällig für Pufferüberlauf-Angriffe sind, da sie keine eingebauten Schutzmechanismen gegen das Überschreiben von oder den Zugriff auf Daten in ihrem Speicher haben. Mac OSX, Windows und Linux verwenden alle in C und C++ geschriebenen Code.
Sprachen wie PERL, Java, Javascript und C# verwenden integrierte Sicherheitsmechanismen, die die Wahrscheinlichkeit eines Pufferüberlaufs minimieren.
Wie man Pufferüberläufe verhindert
Entwickler können sich vor Pufferüberlauf-Schwachstellen durch Sicherheitsmaßnahmen in ihrem Code schützen oder indem sie Sprachen verwenden, die einen integrierten Schutz bieten.
Darüber hinaus verfügen moderne Betriebssysteme über einen Laufzeitschutz. Drei gängige Schutzmaßnahmen sind:
- Adressraum-Randomisierung (ASLR): Die Adressraumpositionen von Datenbereichen werden nach dem Zufallsprinzip umgestellt. Pufferüberlauf-Angriffe müssen in der Regel den Ort des ausführbaren Codes kennen, und die Randomisierung des Adressraums macht dies praktisch unmöglich.
- Datenausführungsverhinderung – kennzeichnet bestimmte Speicherbereiche als nicht ausführbar oder ausführbar, wodurch ein Angriff daran gehindert wird, Code in einem nicht ausführbaren Bereich auszuführen.
- Structured Exception Handler Overwrite Protection (SEHOP) – verhindert, dass bösartiger Code Structured Exception Handling (SEH) angreift, ein integriertes System zur Verwaltung von Hardware- und Softwareausnahmen. Damit wird verhindert, dass ein Angreifer die SEH-Überschreibtechnik ausnutzen kann. Auf funktionaler Ebene wird eine SEH-Überschreibung durch einen stapelbasierten Pufferüberlauf erreicht, um einen Ausnahme-Registrierungssatz zu überschreiben, der auf dem Stapel eines Threads gespeichert ist.
Fazit
Sicherheitsmaßnahmen im Code und der Schutz des Betriebssystems sind nicht ausreichend. Wenn ein Unternehmen eine Pufferüberlaufschwachstelle entdeckt, muss es schnell reagieren, um die betroffene Software zu patchen und sicherzustellen, dass die Benutzer der Software auf das Patch zugreifen können.
Achten Sie deshalb immer darauf, dass Ihr System aktualisiert ist und Sie eine funktionsfähige und vollständige Sicherheitskopie Ihrer wertvollen Daten haben. Unser DLH Stick hilft Ihnen dabei und macht es Einbrechern schwer, ihre Daten zu stehlen oder ungewollt zu verändern.
Sollten Sie Fragen haben, so wenden Sie sich bitte gerne an uns.
Wussten Sie schon? Auch bei der Entwicklung des DLH Sticks achten wir auf Pufferüberläufe.