Wie Du einen Server mit Daten sprengst [XML-Bombe]

XML Bombs Steffen Lippke Hacking Series

Kannst Du eine Bombe bauen, sodass ein Server vor Daten platzt?

Ja, das geht: XML-Bomben.

Heute zeigt ich Dir, wie Du mit etwas Code ein riesiges Datenvolum erzeugst und wie Du dich vor solchen Angriffen effektiv schützen lassen kannst.

Aufgabe: Viele (unnütze Daten) erschaffen

Um was geht’s? – XML Bomben

Eine XML-Bombe (oder auch: Entitätsexpansion) bewirkt eine rekursive (wiederholende) Generierung von XML-Daten.

Beispiel: Stell Dir vor Du schreibst ein Wort: „Hallo“ genau 2 mal!

  1. Tippe dieses Wörter in Word ein
  2. Wiederhole jetzt folgende Kombination 10 x
    1. Strg + A
    2. Strg + C
    3. Peiltaste nach unten
    4. Strg + V
XML-Bombe in Word nachstellen
XML-Bombe in Word nachstellen

Die Anzahl der Wörter wächst quadratisch. Bei der 100 facher Abfolge der Tastenkombis, hast Du auf einmal 2 hoch 100 Hallos im Dokument

So oft Hallo sagst Du nicht in Deinem Leben
So oft Hallo sagst Du nicht in Deinem Leben

Knappe Einordnung

XML-Bombe gehört zu den DoS Attacken (engl. Denail of Service – Verweigerung des Dienstes). DoS bedeutet für den Internet-Nuter, dass eine Internet-Service nicht erreichbar ist, der erreichbar sein sollte.

Wenn z. B. 1.000.000 Internet-Nutzer auf ein DWD Webseite (gleichzeitig) zugreifen, weil in Fukushima das einen Super-GAU stattfand, dann erliegt die Webseite durch einen „normaler Grund“ einer DoS. Der Server des DWDs ist nicht für einen so großen Traffic ausgelegt. Die Menge an Anfragen zwingt den Server zum Abschalten.

Deutscher Wetterdienst Radioaktivität Webseite
Deutscher Wetterdienst Radioaktivität Webseite

DAS. Sagen die Medien.

Ein bekanntes Beispiel aus der Vergangenheit war am 21. Oktober 2016 die Attacke auf Twitter, Netflix und Spotify. Die Gruppe Aerotos bekannte sich dazu den Internetdienstleister Dyn gehackt zu haben. Die Dienst war nicht verfügbar und viele Nuzter gingen leer aus.

Am 28. Februar 2018 greifen Hacker die Open-Source Plattform GitHub an: 1,35 Terabit pro Sekunde an Daten musste der Server verarbeiten (Das sind keine normalen Datenmengen). Nach 8 Minuten konnte der Internetdienstleister Akamai den Datenstrom der Hacker unterbinden.

GitHub als Opfer eines Angriffs
GitHub als Opfer eines Angriffs

 

Grundlagen: Abkürzungen des Webs

Web einfach erklärt

Bevor wir zu der XML-Bombe kommen, klären wir im ersten Schritt die Grundlagen:

XML – „Extensible Markup Language“ (deutsch: Erweiterbare Auszeichnungsprache) stellt Daten strukturiert dar. Das W3C standardisierte XML als ein Datenaustauschformat für Webseiten.

XML – Parser –  Der XML-Prozessor verarbeitet die XML Datei.

11 Kostenlose Exklusive App Dev Tipps

Deine Mail für Zugang zu praxisnahe App Entwicklung Tipps zu erhalten

DTD – „Dokumenten-Typ-Definitonen“ benennen den Typ eines Dokuments. Der Typ eines Dokuments sollte immer angegeben sein, sodass ein Parser die Syntax vom diesem Dokument überprüfen kann. Der Kopf eine „korrekten“ HTML Webseite enthält immer ein <!DOCTYPE html>.

SGML – „Standard Generalized Markup Language” (deutsch: Genormte Verallgemeinerte Auszeichnungssprache) schafft den Rahmen für Auszeichnungssprachen wie XML.

Tags – Etikett, Auszeichner, Schildchen – dieses schwer zu übersetzende Wort beschreibt eine Auszeichungsmarkierung, die immer mit größer / kleiner- Zeichen gekapselt ist: <ELEMENT> Hier seht Text </ELEMENT>

Attribute – Wenn HTML-Tags deutsche Nomen wären sind, sind die Attribute von Tags die deutschen Adjektive: Attribute beschreiben den Tag näher.

Hack IT: 1 Millonen Lacher [für Hacker]

Mienensuche

So sieht exemplarisch eine XML – Bombe aus. Der String „lol“ gibt der Parser 1 Milliarde mal aus

Easter Egg Google Rekursion - Rekursionen rufen sich selber wieder auf
Easter Egg Google Rekursion – Rekursionen rufen sich selber wieder auf

Natürlich kann der Hacker die Bombe noch um weitere Rekursionen erweitern und somit den Server überlasten:

Sicherung: Kein Parsen, keine Bomben.

Wenn der Serveradmin den Speicher für die Parser begrenzt, können XML-Bombs nicht überhandnehmen. Außerdem ist in vielen Parsern eine Exception integiert, die genau eine solche Rekursion erkennt und verhindern kann.

Viele Browser wie Chrome und Firefox halten XML-Bomben standardmäßig an: „Rekursive Entitätsexpansion gefunden“.

Der Webseiten-Hoster kann das Parsen von inline DTDs ganz unterbinden. Wenn er diese nicht braucht, ist das die beste Lösung.

Eine Alternative zum Nicht-Parsen ist das asynchrone Parsen von großen XML-Dateien. Das hat zum Vorteil, dass der Webserver bei großen XML-Dateien nicht nur mit dem Parsen ausgelastet ist. Dieses Vorgehen verbessert die Skalierbarkeit und Geschwindigkeit des Servers.

 

Credits

Icons made by Gregor Cresnar from www.flaticon.com is licensed by CC 3.0 BY  – Icons made by dDara from www.flaticon.com is licensed by CC 3.0 BY – Icons made by Icomoon from www.flaticon.com is licensed by CC 3.0 BY –Icons made by Those Icons from www.flaticon.com is licensed by CC 3.0 BY Icons made by Freepik from www.flaticon.com is licensed by CC 3.0 BY Icons made by Smashicons from www.flaticon.com is licensed by CC 3.0 BY

Sichere Dir den kompletten
Fundamental Ionic Course

Die kostenlosen Tutorials sind ein Ausschnitt
aus dem Fudamental Ionic Course by Steffen Lippke.

Schon 4832 erfolgreiche Absolventen

  • Code Downloads + umfangreiche Lösungen + Dateien für Grundlagen zum Coden
  • Visuelle Beschreibungen mit HD+ Screenshots und Hilfen
  • Steffen's Clean Code - Erweiterung - Verbesserungs - Tipps
 

100 h Kurslänge | 100 % Geld-Zurück-Garantie | Live-Support

 
1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.