Billion Laughs Attack erklärt + einfaches Tutorial XML Bombe

XML Bombs Steffen Lippke Hacking Series

Gebe eine Milliarde mal den Text „LOL“ aus und der Server stürzt ab?

Ja, das geht.

Heute zeige ich Dir, wie Du mit XML ein riesiges Datenvolumen erzeugst und wie Du Dich vor solchen Angriffen effektiv schützen lassen kannst.

Was ist die Billion Laughs Attack?

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

Teste die Macht des Angriffs mit dem folgenden Experiment aus

  1. Öffne einen Texteditor mit Zeilenumbruch
  2. Geben die Wörter „LOL LOL“
  3. Wiederhole jetzt folgende Kombination 10 x
    1. Strg + A
    2. Strg + C
    3. Peiltaste nach unten
    4. Strg + V
  4. Was passiert?
  5. Was passiert, wenn Du 10x LOL zu Beginn verwendest?
XML-Bombe in Word nachstellen Billion Laughs Attack
XML

Die Anzahl der Wörter wächst quadratisch an.

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

Ist die Billion Laughs Attack ein Hacking-Angriff?

XML-Bombe gehört zu den DoS Attacken (engl. Denail of Service – Verweigerung des Dienstes). DoS bedeutet für den Internet-Nutzer, dass ein 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 ein natürliches Ereignis einer DoS. Der Server des DWDs ist nicht für einen so großen Traffic ausgelegt. Die Menge an Anfragen der Bundesbürger kann der Server nicht mehr handhaben.

Deutscher Wetterdienst Radioaktivität Webseite Billion Laughs Attack
Deutscher Wetterdienst Radioaktivität Webseite

Denial of Service in der Vergangenheit

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

Am 28. Februar 2018 greifen Hacker die Open-Source Plattform GitHub an: 1,35 Terabyte pro Sekunde an Daten musste der Server verarbeiten. Nach 8 Minuten konnte der Internetdienstleister Akamai den Datenstrom der Hacker unterbinden.

GitHub als Opfer eines Angriffs Billion Laughs Attack
GitHub als Opfer eines Angriffs

XML und Webseiten erklärt

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

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

<?xml version="1.0" encoding="UTF-8"?>
<notiz>
  <sendto>A wonderful person</sendto>
  <from>Steffen Lippke</from>
  <subject>Code or not to code?</subject>
  <body>Write more code</body>
</notiz>

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

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

<!DOCTYPE html PUBLIC
  "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="ar" dir="ltr" xmlns="http://www.w3.org/1999/xhtml">

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.

Die Billion Laughs Attack

So sieht exemplarisch eine Billion Laughs Attack aus. Der String „lol“ gibt der Parser 1 Milliarde mal aus

Easter Egg Google Rekursion - Rekursionen rufen sich selber wieder auf Billion Laughs Attack
Easter Egg Google Rekursion

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

Absicherung – Ausschalten und Begrenzen

Wenn der Server-Admin den Speicher für die Parser begrenzt, können XML-Bombs nicht überhandnehmen. Außerdem ist in vielen Parsern eine Exception integriert, 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.

Alternativen

Eine Alternative zum Parsening-Verbot 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

Kommentare 2

Schreibe einen Kommentar

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


Jeden Monat teile ich mit Mitgliedern
4 neue praxisnahe Tutorials (je 1000+ Wörter).


Trage Deine Mail, damit Du
Deine Coding + Hacking Skills erweitern kannst!

Die Webseite nutzt nur technisch notwendige Cookies.