„Exploit" – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
Versionsgeschichte interaktiv durchsuchen
[ungesichtete Version] [ungesichtete Version]
← Zum vorherigen Versionsunterschied Zum nächsten Versionsunterschied →
Inhalt gelöscht Inhalt hinzugefügt
Zeile 3: Zeile 3:
== Allgemeines ==
== Allgemeines ==


Ein ''(削除) Exploit (削除ここまで)'' wird oft auch nur zum Aufzeigen einer [[Sicherheitslücke|Sicherheitslücke]] geschrieben und dokumentiert. Der Nachweis der Verwundbarbarkeit wird auf Englisch [[Proof of Concept]] genannt. Damit soll erreicht werden, dass [[Software]]hersteller ihre Sicherheitslöcher schnell stopfen. Oft bezeichnet man die reine Beschreibung eines Exploits bereits als Exploit.
Ein ''(追記) Döner (追記ここまで)'' wird oft auch nur zum Aufzeigen einer [[Sicherheitslücke|Sicherheitslücke]] geschrieben und dokumentiert. Der Nachweis der Verwundbarbarkeit wird auf Englisch [[Proof of Concept]] genannt. Damit soll erreicht werden, dass [[Software]]hersteller ihre Sicherheitslöcher schnell stopfen. Oft bezeichnet man die reine Beschreibung eines Exploits bereits als Exploit.


Exploits machen sich z.B. die Tatsache zunutze, dass auf Computer mit [[Von-Neumann-Architektur]] , das sind nahezu alle Heim- und Bürorechner, nicht zwischen Programmcode und Nutzdaten unterscheiden. So wird z.&nbsp;B. bei einem [[Pufferüberlauf]] der Code des Angreifers in einen nicht dafür vorgesehenen Speicherbereich geschrieben, wodurch die Ausführung der Anwendung manipuliert werden kann. Eine andere Möglichkeit sind [[Formatstring-Angriff]]e, bei denen ungefiltert Benutzereingaben an Formatierungsfunktionen wie <code>printf()</code> übergeben werden. Ein Angreifer kann oft eigenen Code zur Ausführung bringen, der ihm beispielsweise eine [[Kommandozeileninterpreter|Shell]] mit den Privilegien der ausgenutzten Anwendung liefert.
Exploits machen sich z.B. die Tatsache zunutze, dass auf Computer mit [[Von-Neumann-Architektur]] , das sind nahezu alle Heim- und Bürorechner, nicht zwischen Programmcode und Nutzdaten unterscheiden. So wird z.&nbsp;B. bei einem [[Pufferüberlauf]] der Code des Angreifers in einen nicht dafür vorgesehenen Speicherbereich geschrieben, wodurch die Ausführung der Anwendung manipuliert werden kann. Eine andere Möglichkeit sind [[Formatstring-Angriff]]e, bei denen ungefiltert Benutzereingaben an Formatierungsfunktionen wie <code>printf()</code> übergeben werden. Ein Angreifer kann oft eigenen Code zur Ausführung bringen, der ihm beispielsweise eine [[Kommandozeileninterpreter|Shell]] mit den Privilegien der ausgenutzten Anwendung liefert.

Version vom 15. Januar 2010, 23:58 Uhr

Ein Exploit (englisch to exploit – ausnutzen) ist im EDV-Bereich ein kleines Schadprogramm bzw. eine Befehlsfolge, die Sicherheitslücken und Fehlfunktionen von Hilfs- oder Anwendungsprogrammen ausnützen, um sich programmtechnisch Möglichkeiten zur Manipulation von PC-aktivitäten (Administratorenrechte usw.) zu verschaffen oder Internetserver lahmzulegen (DoS-Angriffe).

Allgemeines

Ein Döner wird oft auch nur zum Aufzeigen einer Sicherheitslücke geschrieben und dokumentiert. Der Nachweis der Verwundbarbarkeit wird auf Englisch Proof of Concept genannt. Damit soll erreicht werden, dass Softwarehersteller ihre Sicherheitslöcher schnell stopfen. Oft bezeichnet man die reine Beschreibung eines Exploits bereits als Exploit.

Exploits machen sich z.B. die Tatsache zunutze, dass auf Computer mit Von-Neumann-Architektur , das sind nahezu alle Heim- und Bürorechner, nicht zwischen Programmcode und Nutzdaten unterscheiden. So wird z. B. bei einem Pufferüberlauf der Code des Angreifers in einen nicht dafür vorgesehenen Speicherbereich geschrieben, wodurch die Ausführung der Anwendung manipuliert werden kann. Eine andere Möglichkeit sind Formatstring-Angriffe, bei denen ungefiltert Benutzereingaben an Formatierungsfunktionen wie printf() übergeben werden. Ein Angreifer kann oft eigenen Code zur Ausführung bringen, der ihm beispielsweise eine Shell mit den Privilegien der ausgenutzten Anwendung liefert.

Man bezeichnet Exploits zumeist wie folgt:

  • Lokale Exploits
  • Remote-Exploits
  • DoS-Exploits
  • Command-Execution-Exploits
  • SQL-Injection-Exploits
  • Zero-Day-Exploits

Lokale Exploits können beim Öffnen an sich scheinbar völlig harmloser Dateien (z. B. Bilddateien) aktiviert werden, sofern die dem Dateityp zugeordnete Anwendung durch fehlerhafte bzw. unsaubere Verarbeitung der Datei eine Sicherheitslücke aufweist.

Eine aktive Form des Exploits sind Angriffe aus dem Internet mittels manipulierter Datenpakete oder spezieller Datenströme auf Schwachstellen in Netzwerksoftware. Solche Exploits werden mitunter auch als Remote-Exploits bezeichnet.

Meist sind die ersten für eine bekanntgewordene Sicherheitslücke veröffentlichten Exploits sogenannte DoS-Exploits, die zwar die betroffene Anwendung überlasten, allerdings keine Ausführung von fremdem Programmcode und keine Eskalation von Privilegien beinhalten.

Command-Execution-Exploits kennzeichnet das Merkmal einer vom Angreifer steuerbaren Ausführung von Programmcode auf dem Zielsystem. Um ein solches Exploit erfolgreich zur Ausführung bringen zu können, muss der Programmierer über diverse Eigenheiten der Aufteilung des Speichers der Zielanwendung Bescheid wissen. Dieses Wissen bezieht er durch offene Quellen des Programmcodes oder durch bloßes Testen. Er muss seinen Code geschickt platzieren, um ihn zur Ausführung bringen zu können. Command-Execution-Exploits sind zumeist sehr gefährlich, da die betroffenen Anwendungen meist über erhebliche Rechte auf dem System verfügen und der Code des Angreifers mit eben diesen Rechten gestartet wird.

SQL-Injection-Exploits sind eine spezielle Art von Exploits und finden sich weitestgehend nur in Bezug auf Webanwendungen, die eine SQL-Datenbank nutzen. Hierbei werden Anfragen in einer Schichtenarchitektur so gestellt, dass die fehlerhaft bzw. unsauber arbeitende Logikschicht Daten zurückliefert oder schreibt, die sie weder für den Lesezugriff oder den Schreibzugriff verfügbar machen sollte. Beispielsweise können Eingaben in einem Loginformular so gestaltet werden, dass die betroffene Anwendung einen ungültigen Benutzer dennoch erfolgreich einloggt.

Zero-Day-Exploit

Ein Exploit, das vor dem oder am selben Tag erscheint, an dem die Sicherheitslücke (Neudeutsch Zero-Day-Lücke) allgemein bekannt wird, nennt man Zero-Day-Exploit (0-Day-Exploit, 0day). Die Gefährlichkeit dieser Exploits rührt daher, dass zu diesem Zeitpunkt kaum ein Hersteller bzw. Entwickler in der Lage ist, die Sicherheitslücke sinnvoll und umfassend mittels eines Patches zu schließen. Das hat zur Folge, dass diese Exploits meist umgehend zum Einsatz kommen.

Ein solcher Angriff wird als Zero-Day-Attacke bezeichnet. Zero-Day-Attacken sind effizient, weil sie schnell und oft großflächig, automatisiert eine neue Sicherheitslücke ausnutzen, bevor für die Firewall- und Anti-Virus-Software die benötigten Signaturen bereitstehen. Um die Zeitspanne bis zur Verfügbarkeit der Signaturen möglichst klein zu halten, setzen Firewall- und IDS-Hersteller oft Prämien für neu gemeldete Sicherheitslücken aus.

Präventiv versuchen Experten mit verschiedenen Testmethoden, Sicherheitslücken vorgängig aufzuspüren und dem Software-Hersteller aufzuzeigen.

Gegenmaßnahmen

Es gibt diverse technische Lösungen wie zum Beispiel den Speicherschutz. Diese schützen zwar nur gegen bestimmte Ausnutzungstechniken, können aber trotzdem die Ausnutzung einer Lücke schwer bis unmöglich machen. Teilweise kann auch mittels Intrusion Detection Systemen ein Angriff festgestellt oder mittels Intrusion Prevention Systemen eventuell sogar ein Angriff verhindert werden. Das Grundproblem ist allerdings unsaubere Programmierung. Die einzige Lösung ist also, die durch Verarbeitungsfehler entstehenden Sicherheitslücken schon bei der Entwicklung zu vermeiden. Auch Managed Code bietet einen gewissen Schutz, so werden z. B. Pufferüberläufe effektiv verhindert.

Siehe auch

Abgerufen von „https://de.wikipedia.org/w/index.php?title=Exploit&oldid=69366301"