Exploit

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von Zero-Day-Exploit)
Wechseln zu: Navigation, Suche

Ein Exploit (englisch to exploit ‚ausnutzen‘) ist in der elektronischen Datenverarbeitung eine systematische Möglichkeit, Schwachstellen auszunutzen, die bei der Entwicklung eines Programms nicht berücksichtigt wurden. Dabei werden mit Hilfe von Programmcodes Sicherheitslücken und Fehlfunktionen von Programmen (oder ganzen Systemen) ausgenutzt, meist um sich Zugang zu Ressourcen zu verschaffen oder in Computersysteme einzudringen, bzw. diese zu beeinträchtigen. Vereinfacht gesagt ist ein Exploit die Brechstange eines Hackers um sich Zugang zu einem Computersystem zu verschaffen.

Allgemeines[Bearbeiten]

Ein Exploit wird oft auch nur zum Aufzeigen einer Sicherheitslücke entwickelt und dokumentiert. Damit soll erreicht werden, dass Softwarehersteller eine Sicherheitslücke schneller erkennen und schließen können. Oft bezeichnet man die reine Beschreibung eines Exploits bereits als Exploit.

Exploits machen sich zum Beispiel die Tatsache zunutze, dass Computer mit Von-Neumann-Architektur, das sind nahezu alle Heim- und Bürorechner, nicht zwischen Programmcode und Nutzdaten unterscheiden. So wird zum Beispiel 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 einen eigenen Code zur Ausführung bringen, der ihm beispielsweise eine Shell mit den Privilegien der ausgenutzten Anwendung liefert.

Exploit Arten[Bearbeiten]

Man bezeichnet Exploits zumeist wie folgt:

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

Aspekt Angriffsart[Bearbeiten]

Lokale Exploits[Bearbeiten]

Lokale Exploits können beim Öffnen an sich scheinbar völlig harmloser Dateien (zum Beispiel Bilddateien) aktiviert werden, sofern die dem Dateityp zugeordnete Anwendung durch fehlerhafte bzw. unsaubere Verarbeitung der Datei eine Sicherheitslücke aufweist. Meistens versucht ein Exploit (beispielsweise in einem PDF-Dokument[1][2][3] oder als Makro in einer Word- oder Excel-Datei) zunächst, Sicherheitslücken in dem Programm auszunutzen, mit dem die Datei eingelesen wurde, um dadurch eine höhere Privilegienstufe zu erreichen und so schädlichen Code in das Betriebssystem zu laden und auszuführen. Die eigentliche Aktion, die der Exploit ausführt, bezeichnet man als Payload (deutsch: Nutzlast). Bei vielen Exploit-Frameworks (etwa Metasploit) kann die Payload separat konfiguriert werden. Sie kann allerdings auch fest im Exploit verankert sein.

Remote-Exploits[Bearbeiten]

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.

Denial of Service-Exploits[Bearbeiten]

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 Privilegien-Eskalation beinhalten.

Command-Execution-Exploits[Bearbeiten]

Command-Execution-Exploits kennzeichnen 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 ebendiesen Rechten gestartet wird.

SQL-Injection-Exploits[Bearbeiten]

SQL-Injection-Exploits sind eine spezielle Art von Exploits und finden sich weitestgehend nur in Bezug auf Webanwendungen, die eine SQL-Datenbank nutzen.[4] 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.

Aspekt Zeitabstand[Bearbeiten]

Zero-Day-Exploit[Bearbeiten]

Zero-Day-Exploit nennt man einen Exploit der eingesetzt wird, bevor es einen Patch als Gegenmaßnahme gibt. Entwickler haben dadurch keine Zeit („null Tage“ englisch zero day), die Software so zu verbessern, dass der Exploit unwirksam wird um so deren Nutzer zu schützen. Entdeckt eine Person eine Sicherheitslücke und meldet sie nicht dem Software-Hersteller, sondern entwickelt stattdessen einen Exploit um diese auszunutzen, so wird die Schwachstelle der Software oft erst lange nach dem ersten Angriff bekannt.[5] Von Hackern werden Zero-Day-Exploits oft lange geheim gehalten, damit sie weiterhin ausgenutzt werden können. Unter der Hand werden Zero-Day-Exploits auch, je nach Komplexität, Umfang und Marktwert des betroffenen Systems unter Hackern gehandelt oder den Herstellerfirmen zu hohen Summen angeboten.[6] Insbesondere seit staatliche Organe sich auch auf offensive Szenarien in einem Cyberwar vorbereiten, tritt auf dem Markt für Zero-Day-Exploits die Situation auf, dass legale staatliche und privatwirtschaftliche Akteure ein Interesse haben, Exploits zu kennen, um einerseits durch die Veröffentlichung von Patches Systeme abzusichern. Gleichzeitig haben dieselben oder im gleichen Auftrag handelnden Akteure das Bestreben, Exploits geheim zu halten, um sie für Angriffe auf feindliche Systeme nutzen zu können.[7]

Ein Angriff über einen Zero-Day-Exploit wird als Zero-Day-Attacke bezeichnet. Zero-Day-Attacken sind gefährlich, weil sie eine neue Sicherheitslücke ausnutzen, bevor für die betroffenen Systeme Patches bereitstehen.

Vorbeugend versuchen Experten mit verschiedenen Testmethoden, Sicherheitslücken im Voraus aufzuspüren und dem Software-Hersteller aufzuzeigen. Dies wird aber in Fachkreisen meist heftig kritisiert, da sich die Tester oftmals nicht im legalen Rahmen bewegen oder gegen Richtlinien von Herstellern verstoßen.[8]

Beispiele[Bearbeiten]

  • Zero-Day-Exploits treten immer häufiger auf, im August 2012 erschien beispielsweise ein Exploit[9], der mit einem (vergleichsweise einfachen) Trick den Security-Manager von Java abschaltete und so beliebige Programme starten konnte.[10][11]
  • Fast alle Windows Versionen waren im Oktober 2014 von einer Zero-Day Lücke betroffen, die bei Bekanntwerden dieser bereits von Angreifern mit einem Exploit ausgenutzt wurde, der eine Schwachstelle in Microsoft Office Dokumente eingebettete OLE-Objekte ausnutzte um Schadcode zur Ausführung zu bringen.[12]
  • Es gab im November 2014 Hinweise darauf, dass der BND Zero-Day-Exploits ankaufen möchte um SSL Verschlüsselungen abzuhören. Voll funktionsfähige Zero-Day-Exploits von noch unbekannten Schwachstellen würden, laut Schätzungen von Insidern, bis zu 100.000 Dollar kosten, wenn sie sich in weit verbreiteter Software, wie Internet Explorer, Flash, Android oder iOS befänden. Es wird vermutet, dass für den Ankauf (unter dem Codenamen "Swop") im Jahr 2015 bis zu 4,5 Millionen € bereit gestellt werden. Dies würde den Schwarzmarkt zusätzlich anheizen und wird deshalb kritisiert.[13] Der Präsidiumsarbeitskreis „Datenschutz und IT-Sicherheit“ der Gesellschaft für Informatik kritisierte weiter, dass das BSI Zero-Day-Exploits zwar sammeln solle, sie aber nicht zu veröffentlichen brauche. Durch die Nichtveröffentlichung wären deutsche Unternehmen und Privatpersonen IT-Angriffen schutzlos ausgeliefert, es drohten Verluste in Unternehmen in Milliarden Euro Höhe.[14]

Gegenmaßnahmen[Bearbeiten]

Es gibt keine technischen Lösungen. Oftmals wird jedoch der Speicherschutz als eine solche genannt, das ist jedoch nicht korrekt, denn eingefrorene Speicher können mit unterschiedlichen Programmen ausgelesen werden. Ebenso kann mittels Intrusion Detection Systemen ein Angriff auf Basis bestehender Funktionalitäten festgestellt oder mittels Intrusion Prevention Systemen auch verhindert werden, jedoch schützt so ein System ebenso wenig gegen das Ausnutzen eines (systematischen, unbekannten) Fehlers in einer Software. Das Grundproblem ist oft unsaubere Programmierung (z.B. durch die Verwendung von hängenden Zeigern) oder, noch schwerer zu entdecken, ein systematischer, meist sehr komplexer Fehler in der Architektur des Programms oder eines ganzen Systems. Die einzige Lösung wäre, die durch Verarbeitungsfehler entstehenden Sicherheitslücken schon bei der Entwicklung zu vermeiden, was bei heutigen Systemen aber praktisch fast nicht möglich ist. Auch Managed Code bietet einen gewissen Schutz; so werden zum Beispiel Pufferüberläufe effektiv verhindert. Dies ist aber, wie vorher schon erwähnt, nur ein Teil zur Lösung der Gesamtproblematik. Komplexe Systeme, die von unterschiedlichen Herstellern und Sublieferanten zusammengefügt werden, bestehen aus vielen Schichten von Hard- und Software und erschweren die Fehlerfindung während der Entwicklung enorm. Hier wird dann meist noch im Betrieb, weit nach der Beta-Phase, die Fehlersuche nach Schwachstellen fortgeführt. Diese hat besonders bei extrem kritischen Systemen, bei denen Menschenleben auf dem Spiel stehen, zu erfolgen, wie z.B. beim Bordcomputer des Space Shuttles.[15]

Siehe auch[Bearbeiten]

Einzelnachweise[Bearbeiten]

  1. Tatort Internet - PDF mit Zeitbombe - Heise Security. Abgerufen am 15. Februar 2013.
  2. PDF Exploit für Adobe Reader. Anonym. Abgerufen am 16. Februar 2013.
  3. Virustotal-Analyse des Exploits. Abgerufen am 16. Februar 2013.
  4. SQL Injection. PHP.net. Abgerufen am 19. August 2011.
  5. Zero-Day-Exploit. In: „Viruslist.com“. Abgerufen am 18. November 2011.
  6. The legitimate vulnerability market (PDF; 289 kB) Independent Security Evaluators, Charles Miller, Ph.D. Abgerufen am 18. November 2011.
  7. Tom Simonite: Welcome to the Malware-Industrial Complex, MIT Technology Review, 13. Februar 2013
  8. Metasploit schreibt Kopfgeld auf Exploits aus. Heise. Abgerufen am 18. November 2011.
  9. http://pastie.org/4594319
  10. http://www.heise.de/security/artikel/Java-0-Day-unter-der-Lupe-1676764.html?view=zoom;zoom=1
  11. "Java 0day analysis (CVE-2012-4681)". In: „Immunity Products“. Abgerufen am 7. Februar 2013.
  12. "Zero-Day-Lücke in Windows". In: „Heise Security“. Abgerufen am 24. Oktober 2014.
  13. "SSL abhören: Kritik an BND-Plänen zu Zero-Day-Exploits". In: „Heise Security“. Abgerufen am 11. November 2014.
  14. "IT-Sicherheitsgesetz schafft Unsicherheit". In: „Gesellschaft für Informatik“. Abgerufen am 19. November 2014.
  15. Sicherheit und Zuverlässigkeit der Computersysteme des Space Shuttles (PDF; 805 kB) Malte Diehl. Abgerufen am 17. November 2011.