ClickCease Identifizieren, entschärfen und verhindern Sie Pufferüberlauf-Angriffe auf Ihre Systeme

Abonnieren Sie unseren beliebten Newsletter

Schließen Sie sich 4.500+ Linux- und Open-Source-Experten an!

2x im Monat. Kein Spam.

Identifizieren, entschärfen und verhindern Sie Pufferüberlauf-Angriffe auf Ihre Systeme

März 21, 2023 - TuxCare PR Team

Pufferüberlaufschwachstellen sind immer noch ein gängiger Weg, über den sich Cyberkriminelle illegal Zugang zu Computersystemen verschaffen. Das Problem wird immer größer, da die Zahl der Pufferüberlaufschwachstellen von Jahr zu Jahr zunimmt.

Es ist auch ein altes Problem. Sie wissen es vielleicht nicht, aber Pufferüberlauf-Angriffe sind einer der der ältesten Angriffsvektoren - Pufferüberläufe wurden erstmals 1972 als Risiko für Sicherheitsverletzungen erkannt.

Angesichts zehntausender bekannter Pufferüberlaufschwachstellen, darunter auch schwerwiegende Fälle wie Heartbleed, müssen Entwickler und Systemadministratoren wissen, wie sie Pufferüberlaufangriffe erkennen, entschärfen und verhindern können.

Lesen Sie weiter, um zu erfahren, was ein Pufferüberlauf-Angriff ist und was Ihr Unternehmen tun kann, um diese Bedrohungen abzuwehren.

 

Was ist ein Pufferüberlauf-Angriff?

 

Zunächst müssen Sie verstehen, was ein Puffer in Bezug auf Computersoftware ist. Puffer sind Speicherbereiche für Daten: temporäre Speicherbereiche, in denen Daten aufbewahrt werden, während ein Programm ausgeführt wird. Puffer sind erforderlich, weil miteinander verbundene Systeme, einschließlich Anwendungen, nicht immer synchronisiert sind.

Mit anderen Worten: Wenn Informationen von einem Punkt zum anderen gesendet werden, ist der Empfänger manchmal noch nicht bereit - und die Informationen müssen irgendwo warten. Hierfür wird ein Puffer verwendet: Puffer unterstützen die Koordination. Das kann daran liegen, dass die beiden Stellen mit unterschiedlichen Geschwindigkeiten oder mit unterschiedlichen Prioritäten arbeiten.

 

Verständnis eines Pufferüberlaufs

 

Da der Computerspeicher endlich ist, muss der Programmierer den Speicherplatz auf eine bestimmte Größe festlegen - einschließlich der Größe eines Puffers. Ein Programmierer wird beispielsweise einen Puffer definieren, um ein 8-Zeichen-Kennwort als 8 Bytes zu speichern. Wenn das Kennwort geschrieben und an den Puffer gesendet wird, geht man davon aus, dass das Kennwort nicht länger als 8 Zeichen ist - und daher in den Puffer passt.

Ein Pufferüberlauf tritt auf, wenn anstelle eines 8-stelligen Kennworts ein 10-stelliges Kennwort an den Puffer gesendet wird. In diesem Fall ist das Computerprogramm gezwungen, die Daten irgendwo aufzubewahren - und infolgedessen werden die überschüssigen Daten in einem anderen Puffer gespeichert. In einigen Fällen können die zusätzlichen zwei Zeichen irgendwo gespeichert werden, wo sie wichtige Daten oder sogar Programmcode überschreiben.

Natürlich sollten Programmierer dies verhindern, indem sie ihren Code so gestalten, dass er auf Eingaben prüft, die die Pufferlänge überschreiten - oder indem sie eine Reihe von anderen Abhilfemaßnahmen einsetzen. Wenn sich der Programmierer jedoch einfach auf die Annahme verlässt, dass die Eingabe immer mit der Puffergröße übereinstimmt, kann eine Pufferüberlaufschwachstelle entstehen - und das könnte zu einem Pufferüberlaufangriff führen.

 

Wie ein Pufferüberlauf-Angriff funktioniert

 

Einfach ausgedrückt, schreibt ein Hacker bei einem Pufferüberlauf-Angriff absichtlich Daten, die Daten, die die Puffergröße überschreiten, in einen Puffer - wodurch ein Pufferüberlauf ausgelöst wird. Die Absicht kann sein, die Anwendung zum Absturz zu bringen oder bösartige Daten (einschließlich ausführbaren Codes) in einen gewünschten Datenspeicher zu schreiben.

Wenn ein Angreifer den Pufferüberlauf richtig koordiniert, kann er beispielsweise bösartigen Code in einen Zielbereich schreiben, der ausführbaren Code enthält - und dann seinen eigenen Code ausführen. In ähnlicher Weise kann der Hacker einen Pufferüberlauf nutzen, um Pufferdaten zu überschreiben und das Verhalten eines Programms zu ändern. 

Es gibt im Wesentlichen zwei Arten von Pufferüberlauf-Angriffen:

  • Angriffe mit Stapelpufferüberlauf sind die häufigste Art von Pufferüberlauf-Angriffen und beinhalten das Überschreiben von Stapelspeicher, der während der Ausführung eines Programms verwendet wird. Indem er überschüssige Daten in den Puffer schreibt, gelingt es dem Hacker fast immer, die Daten im nächsten Puffer zu beschädigen.
  • Heap-Überläufe sind Angriffe, bei denen der Hacker versucht, den einem Programm zugewiesenen Speicherplatz zu überschwemmen, und zwar über das Maß hinaus, das für die aktuell ausgeführten Operationen verwendet wird. Er beschädigt die Daten auf eine Weise, die dazu führt, dass die laufende Anwendung ihre internen Strukturen überschreibt.

Beide Angriffsstrategien können zu kompromittierten Systemen, Datenverlust und Dienstunterbrechungen führen.

 

Welche Risiken birgt ein Pufferüberlauf-Angriff?

 

Pufferüberläufe sind nur einer von vielen Angriffsvektoren, die es gibt, und die Absichten überschneiden sich mit vielen anderen Sicherheitslücken.

Es ist erwähnenswert, dass Hacker auch dann, wenn die Remotecode-Ausführung mit einem Pufferüberlauf-Angriff zu schwierig ist, dennoch Schaden anrichten können, indem sie Pufferüberläufe nutzen, um Anwendungen zum Absturz zu bringen - und einen Denial-of-Service (DoS)-Zustand herbeizuführen, was wiederum zu anderen Konsequenzen führt.

Darüber hinaus kann man argumentieren, dass ein Pufferüberlauf-Angriff oft nur der erste Schritt in einem viel komplexeren Angriffsplan ist - egal, ob das Endziel die Ausführung von Remote-Code, die Ausweitung von Berechtigungen oder etwas anderes ist.

Natürlich haben Pufferüberlauf-Angriffe einzigartige Merkmale, aber wir können im Allgemeinen davon ausgehen, dass Hacker einen Pufferüberlauf-Angriff nutzen, um eines der folgenden Ziele zu erreichen:

  • Störung des Dienstes: Mit einem Pufferüberlauf-Angriff könnte ein Hacker eine Dienstunterbrechung herbeiführen. Es kann relativ einfach sein, eine Pufferüberlaufschwachstelle auszunutzen, um eine Anwendung zum Absturz zu bringen und die von ihr unterstützten Dienste zum Erliegen zu bringen.
  • Unbefugter Zugang: Ein böswilliger Akteur kann eine Pufferüberlaufschwachstelle ausnutzen, um sich unerlaubten Zugriff auf die Computerinfrastruktur zu verschaffen - was die Tür zu einer endlosen Reihe von Kompromittierungen öffnen könnte.
  • Code-Ausführung: Durch einen Pufferüberlauf-Angriff kann ein Angreifer Ihre Systeme nutzen, um Code auszuführen, den der Angreifer zu kriminellen Zwecken geschrieben hat.
  • Datenverlust: Pufferüberlauf-Angriffe können dazu verwendet werden, Daten durch Manipulation des Anwendungsverhaltens abzuschöpfen, Ausgaben umzuleiten und Datenströme illegal zu erfassen.

Im Großen und Ganzen sind die Risiken von Pufferüberlauf-Schwachstellen ähnlich wie bei den meisten anderen Schwachstellen, und sie sind mit Sicherheit genauso ernst.

 

Beispiele für Pufferüberlauf-Schwachstellen aus der Praxis

 

Zu Beginn dieses Artikels haben wir auf die Tatsache hingewiesen, dass Pufferüberlaufschwachstellen erstmals 1972 entdeckt wurden. Zwar gab es bald darauf einige Fälle erfolgreicher Angriffe, doch war die Computerwelt vor rund 50 Jahren noch nicht so weit verbreitet und so gefährdet wie heute.

Das erste wichtige Beispiel für einen weit verbreiteten Pufferüberlauf-Angriff ist der Morris-Wurm. Im Jahr 1988 verbreitete sich dieser Wurm über das neu entstehende Internet und legte in nur zwei Tagen 10 % des damaligen "Internets" lahm. Innerhalb von zwei Jahren befiel dieser Computerwurm 60.000 Computer.

Die vielleicht bekannteste Pufferüberlaufschwachstelle ist Heartbleed. Sie tauchte 2014 als kritische Sicherheitslücke in einer weit verbreiteten Software auf: OpenSSL. Unzählige Internetserver prominenter Unternehmen wie Yahoo verwenden die OpenSSL-Kryptographie-Bibliothek zur Implementierung des TLS-Protokolls (Transport Layer Security).

Auch diese Pufferüberlaufschwachstelle wurde durch einen einfachen Fehler verursacht. Es handelte sich um einen klassischen Mangel an Bound-Checking im Computercode hinter OpenSSL. Natürlich wurde OpenSSL schließlich mit einem Patch behoben aber erst, nachdem die Sicherheitslücke einen weit verbreiteten Alarm - und Schaden - verursacht hatte.

Die Risiken sind nicht auf die technischen Ecken des Internets beschränkt. Auch beliebte Anwendungen sind von Pufferüberlauf-Exploits bedroht: Die beliebte Chat-App WhatsApp leidet unter einer Pufferüberlauf-Schwachstelle, die im Mai 2019 als CVE-2019-3568 gemeldet wurde. In diesem Fall konnten Angreifer die Schwachstelle nutzen, um Schadcode auf dem Mobilgerät eines Nutzers auszuführen, indem sie Pakete gleich zu Beginn eines Sprachanrufs manipulierten.

Einige andere Beispiele sind:

  • Der Stuxnet-Wurm im Jahr 2010: Der Angriff, der auf das iranische Atomprogramm abzielte, nutzte eine Pufferüberlaufschwachstelle im Windows-Betriebssystem aus.
  • Der Sony Pictures-Hack im Jahr 2014: Angreifer nutzten eine Pufferüberlauflücke im Netzwerk des Unternehmens, um sich Zugang zu sensiblen Daten zu verschaffen und weitreichende Störungen zu verursachen.
  • Der WannaCry-Ransomware-Angriff im Mai 2017: Dieser Angriff betraf mehr als 200.000 Computer in 150 Ländern, indem eine Pufferüberlaufschwachstelle in Microsoft Windows ausgenutzt wurde.
  • Die SolarWinds Supply Chain Attacke im Dezember 2020: Angreifer nutzten einen Pufferüberlauf in der Netzwerkmanagement-Software SolarWinds Orion und verschafften sich so Zugang zu den Netzwerken mehrerer Unternehmen.
  • Die Zscaler Zero-Day-Sicherheitslücke im November 2021: Dieser Angriff betraf die Cloud-basierten Sicherheitsdienste von Zscaler, indem eine Pufferüberlauf-Schwachstelle zur Ausführung von beliebigem Code genutzt wurde.

 

Entschärfung und Verhinderung von Pufferüberlauf-Angriffen

 

Die Landschaft der Pufferüberläufe hat sich im Laufe der Zeit ein wenig verändert: In gewisser Weise werden die elementarsten Pufferüberlaufrisiken jetzt automatisch gemindert. Betriebssystem- und Softwarehersteller sowie Programmierer neigen dazu, Praktiken zu implementieren, die Pufferüberläufe einschränken, selbst wenn eine zugrunde liegende Schwachstelle vorhanden ist.

Sowohl die Softwarehersteller als auch die Nutzer ihrer Software müssen sich der Risiken von Pufferüberläufen bewusst sein - und sie entsprechend abmildern. Allerdings können die Benutzer nur sehr wenig tun, um ihre Umgebungen vor Pufferüberlauf-Angriffen zu schützen. Es ist Aufgabe des Anbieters, Software sicher zu programmieren und bei Bedarf schnell zu patchen.

 

Prävention auf der Anbieterseite

 

Für die Vermeidung von Pufferüberlaufschwachstellen sind letztlich die Softwarehersteller verantwortlich. Das Vorhandensein von Möglichkeiten zur Ausnutzung von Pufferbeschränkungen hängt oft von den Eigenschaften der Software.

Es kann so einfach sein, sich der Grenzen der verwendeten Programmiersprache und der damit verbundenen Risiken bewusst zu sein: C und C++ haben keinen eingebauten Schutz gegen Pufferüberläufe, während Java, PERL und C# über einige Sicherheitsmechanismen verfügen. 

Im Folgenden finden Sie einige spezifische Ansätze, die die Anbieter verfolgen können:

  • Achten Sie auf Annahmen: Programmierer können oft von bestimmten Fakten im Zusammenhang mit dem Betrieb einer Anwendung ausgehen, aber Angreifer können diese Annahmen ausnutzen. Stattdessen sollten Programmierer bei der Programmierung darauf achten, dass Annahmen verletzt werden können. Die Überprüfung von Grenzen, bei der überprüft wird, ob eine Eingabe die Puffergröße nicht überschreitet, ist ein wichtiges Beispiel.
  • Adressraum-Layout-Randomisierung (ASLR): Viele Pufferüberlauf-Angriffe beruhen auf der Kenntnis der Lage des Adressraums. Durch die Randomisierung des Layouts des Adressraums ist ein Pufferüberlauf schwieriger zu koordinieren, da sich die Zielposition kontinuierlich und zufällig verschiebt.
  • Ausführung begrenzen: Die Konfiguration von Stapeln als nicht ausführbar bedeutet, dass Angreifer keine Pufferüberläufe nutzen können, um bösartigen Code in einem Stapel auszuführen.
  • Vermeiden Sie Programmierfehler: Gelegenheiten für Pufferüberläufe sind in den meisten Fällen auf einen bestimmten Computercode zurückzuführen. Programmierer müssen sich gewissenhaft verhalten und Fehler vermeiden, die von Angreifern ausgenutzt werden können.

Die oben genannten Punkte können die Risiken von Pufferüberlaufangriffen mindern, aber letztendlich werden zwangsläufig Fehler gemacht.

 

Entschärfung auf der Nutzerseite

 

Bei der Erörterung der Möglichkeiten, die Hersteller nutzen können, um ihre Software gegen Pufferüberlauf-Angriffe zu schützen, haben wir einen wichtigen Punkt ausgelassen: Pufferüberlauf-Schwachstellen werden oft erst entdeckt, wenn die Software bereits veröffentlicht ist.

Dieses Szenario ist nicht ungewöhnlich und spiegelt das wider, was normalerweise bei der Entdeckung von Sicherheitslücken passiert. Es gibt eine einfache Lösung: Der Hersteller veröffentlicht einen Patch, der die Pufferüberlaufschwachstelle schließt, und der Endbenutzer installiert den Patch, um die Schwachstelle zu beheben.

Wenn die Endnutzer motiviert sind, ihre Arbeitslasten gegen Pufferüberlaufschwachstellen zu schützen, ist die regelmäßige, konsequente Anwendung von Patches bei weitem die effektivste Option. Ein wirksames Patching ist jedoch leichter gesagt als getan, da es störend und ressourcenintensiv sein kann.

Automatisiertes, rebootloses Patching durch Tools wie KernelCare hilft - durch die Verringerung des Ressourcenbedarfs und durch die Vermeidung von Serverunterbrechungen. Dennoch gibt es manchmal Pufferüberlauf-Schwachstellen, die nicht bekannt sind, oder es gibt einfach keinen wirksamen Patch. Einige Optionen, die Benutzer nutzen können, sind:

  • Überwachen Sie auf ungewöhnliches Verhalten: Beobachten Sie die Leistung Ihres Servers und Ihres Netzwerks sowie die Protokolle genau, um Aktivitäten von Eindringlingen aufzuspüren, so wie Sie es auch mit jedem anderen Exploit tun würden.
  • Verwalten von Berechtigungen: Angreifer verlassen sich häufig auf eine lockere Verwaltung von Berechtigungen und Privilegien. Stellen Sie sicher, dass Ihre Anwendungen und Ihre Benutzer mit einem Minimum an Zugriffsrechten arbeiten, damit Angreifer keine Möglichkeit zur Eskalation haben.
  • Tools zur Bedrohungsabwehr: Zero-Day-Schwachstellen können schnell ausgenutzt werden, aber automatisierte Tools wie Web Application Firewalls können einige Angriffe stoppen, indem sie auf verdächtige Verhaltensmuster achten und den Datenverkehr von verdächtigen Quellen einfach stoppen.

Abschließend möchten wir darauf hinweisen, dass Endnutzer ihre Arbeitslasten durch eine sorgfältige Auswahl ihrer Betriebssystem- und Softwareanbieter schützen können. Stellen Sie wichtige Fragen: Welchen Ruf hat der Anbieter, wenn es um Softwaresicherheit geht? Gibt der Anbieter schnell Patches heraus, wenn eine Sicherheitslücke entdeckt wird?

Da es sich bei Pufferüberlaufschwachstellen im Wesentlichen um ein Programmierproblem handelt, obliegt es den Anbietern, die Schwachstelle zu beheben, und als Endbenutzer können Sie sich schützen, indem Sie sorgfältig prüfen, mit welchen Anbietern Sie zusammenarbeiten.

 

Die Nachbereitung

Für die Behebung von Pufferüberlaufschwachstellen sind letztlich die Softwarehersteller verantwortlich. Schließlich geht es um den Anwendungscode. Zum Glück reagieren die Anbieter in der Regel mit der Veröffentlichung von Patches, die die Möglichkeiten zur Ausnutzung von Pufferüberläufen beseitigen.

Für Unternehmen ist die schnelle Einführung neuer Patches von entscheidender Bedeutung. Automatisierte Tools wie KernelCare Enterprise helfen, indem sie die Reibungsverluste beim Patchen beseitigen. Dennoch sollten Unternehmen wie bei jeder anderen Cyber-Bedrohung auch umfassendere Maßnahmen zur Cyber-Hygiene ergreifen, um die Risiken von Pufferüberlauf-Schwachstellen - und Schwachstellen im Allgemeinen - zu begrenzen.

Zusammenfassung
Identifizieren, entschärfen und verhindern Sie Pufferüberlauf-Angriffe auf Ihre Systeme
Artikel Name
Identifizieren, entschärfen und verhindern Sie Pufferüberlauf-Angriffe auf Ihre Systeme
Beschreibung
Lesen Sie weiter, um zu erfahren, was im Wesentlichen zwei Arten von Pufferüberlauf-Angriffen sind und was Ihr Unternehmen tun kann, um diese Bedrohungen zu stoppen.
Autor
Name des Herausgebers
TuxCare
Logo des Herausgebers

Möchten Sie das Patchen von Sicherheitslücken ohne Kernel-Neustart, Systemausfallzeiten oder geplante Wartungsfenster automatisieren?

Erfahren Sie mehr über Live-Patching mit TuxCare

Werden Sie ein TuxCare-Gastautor

Los geht's

E-Mail

Beitreten

4,500

Linux & Open Source
Fachleute!

Abonnieren Sie
unseren Newsletter