Coders Conquer Security: Share & Learn Series - XXE Injection

Veröffentlicht Aug 01, 2019
von
FALLSTUDIE

Coders Conquer Security: Share & Learn Series - XXE Injection

Veröffentlicht Aug 01, 2019
von
Ressource anzeigen
Ressource anzeigen

Der Angriff "XML External Entity Injection", manchmal einfach als XXE-Injektion abgekürzt, ist relativ neu im Vergleich zu einigen der klassischen Schwachstellen, die auch Jahre nach ihrer Entstehung noch die Runde machen. Aber sie ist in den Hacker-Communities derzeit extrem beliebt und wird mit zunehmenden Erfolgen immer beliebter.

Tatsächlich listet OWASP XXE Injection jetzt als eine der zehn größten Schwachstellen auf, auf die Websites achten und sich aktiv dagegen schützen müssen. Aber keine Sorge, XXE Injection ist nicht mächtiger als andere Exploits, die bei Cyberangriffen eingesetzt werden. Sie ist nur ein bisschen neuer und weniger bekannt. Sie kann verhindert und sogar komplett gestoppt werden.

In dieser Folge lernen wir:

  • Wie Angreifer XXE-Injektionen verwenden
  • Warum die XXE-Injektion gefährlich ist
  • Techniken, die diese Sicherheitslücke verhindern können.

Wie lösen Angreifer eine XXE-Injektion aus?

Die XXE-Injection-Schwachstelle kann auftreten, wenn ein böswilliger Benutzer die Möglichkeit erhält, XML-Code zu übermitteln. Er nutzt diese Fähigkeit, um einen Verweis auf eine externe Entität zu erstellen. Der externe Verweis und der Code sind so konzipiert, dass sie an einem XML-Parser mit Standardeinstellungen oder einem mit schwach konfigurierten Einstellungen vorbeigehen.

Der Angreifer nutzt die Tatsache aus, dass der XML-Standard das Konzept einer Entität als eine Speichereinheit irgendeiner Art definiert, wobei dieser Speicher extern oder intern sein kann. Richtig eingesetzt, kann er XML-Prozessoren den Zugriff auf entfernte Ressourcen ermöglichen. Meistens nutzen Angreifer diese Fähigkeit, um z.B. die interne Struktur einer Website zu sondieren, eine Denial-of-Service-Attacke zu starten, indem sie große Systemprozesse auslösen, die versuchen, auf Remote-Ressourcen zuzugreifen, oder sogar Daten von einem lokalen Host auf einen Remote-Host zu dumpen, den sie kontrollieren ", was es zu einer guten Technik macht, um wichtige Daten wie Passwörter oder persönliche Informationen, die in der XML-Datenbank enthalten sind, zu exfiltrieren.

Der eigentliche Code, der in den Angriff involviert ist, ist oft recht simpel und nutzt lediglich die Funktionalität der Entität aus. Dies könnte einem Hacker beispielsweise den Zugriff auf die Master-Kennwortdatei ermöglichen:

<!ENTITY hackwithxxe SYSTEM file:///etc/password>

Warum ist die XXE-Injektion gefährlich?

Es gibt ein paar Gründe, warum XXE-Injection-Angriffe so gefährlich und auch weit verbreitet sind. Zum einen ist es eine noch wenig bekannte Sicherheitslücke. Und die Gewinne, die ein Angreifer durch das Ausnutzen dieser Schwachstelle erzielen kann, sind beträchtlich. Zum einen kann sie hartnäckigen Angreifern erlauben, langsam alle Pfade in einem internen Netzwerk abzubilden oder sogar Ports zu scannen. Obwohl dies eine gewisse Zeit in Anspruch nehmen kann, besteht fast keine Chance, dass die Aktivitäten eines Hackers von aktiven Verteidigungsmaßnahmen im Zielnetzwerk aufgedeckt werden, da er einfach XML-Code an einen Server sendet, der von dem vertrauenswürdigen XML-Parser freigegeben wird.

Sobald eine Zuordnung erfolgt ist, können Angreifer dieselben XXE-Injection-Techniken verwenden, um beliebige Dateien zu erbeuten, entweder direkt, um Informationen zu stehlen, oder indem sie gültige Benutzeranmeldeinformationen kompromittieren und sie für sekundäre Angriffe verwenden. Schließlich können Angreifer, die einfach nur Lärm machen und böswillig sein wollen, Dinge wie das Auslösen von Denial-of-Service-Angriffen tun, indem sie der Anwendung befehlen, zu versuchen, auf entfernte Ressourcen zuzugreifen, um das System lahmzulegen.  

Beseitigung der XXE-Injection-Schwachstelle

Aufgrund der rapiden Zunahme von XXE-Injection-Attacken gehen viele XML-Parser dazu über, externe Entitäten, manchmal auch DTDs genannt, standardmäßig komplett zu deaktivieren. In diesen Fällen besteht der Schlüssel darin, diese Funktionalität einfach nicht zu aktivieren.

Aber auch bei Parsern, die DTDs zulassen, kann diese Funktionalität deaktiviert werden. Im Allgemeinen wird eine Anweisung wie die folgende benötigt, um sie vollständig zu blockieren, aber sehen Sie in der Dokumentation Ihres lokalen Frameworks nach, um den genauen benötigten Code zu erhalten.

factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);

Gemäß den Sicherheitsprinzipien sollten alle Benutzereingaben mit anwendungsweiten Filtern bereinigt und validiert werden. Vergessen Sie nicht, GET- und POST-Parameter, HTTP-Header und Cookies einzubeziehen. Sie können auch eine Whitelist mit bestimmten DTDs und Befehlen erstellen, die der Parser verarbeiten soll, und alles andere verbieten.

Obwohl Whitelisting und Filterung funktionieren, wird aufgrund der steigenden Anzahl von XXE-Injection-Angriffen dennoch empfohlen, die DTD-Unterstützung komplett zu deaktivieren, wenn die Funktionalität nicht benötigt wird.

Mehr Informationen über XXE Injections

Als weitere Lektüre können Sie einen Blick darauf werfen, was OWASP über XXE-Injection-Angriffe sagt. Sie können Ihr neu erworbenes Verteidigungswissen auch mit der kostenlosen Demo der Secure Code Warrior Plattform testen, die Cybersecurity-Teams zu den ultimativen Cyber-Kriegern ausbildet. Um mehr darüber zu erfahren, wie Sie diese Schwachstelle und andere Bedrohungen abwehren können, besuchen Sie den BlogSecure Code Warrior .

Ressource anzeigen
Ressource anzeigen

Autor

Sie wollen mehr?

Tauchen Sie ein in unsere neuesten Erkenntnisse über sichere Kodierung im Blog.

Unsere umfangreiche Ressourcenbibliothek zielt darauf ab, die menschliche Herangehensweise an eine sichere Weiterbildung im Bereich der Programmierung zu stärken.

Blog ansehen
Sie wollen mehr?

Holen Sie sich die neuesten Forschungsergebnisse zur entwicklergesteuerten Sicherheit

Unsere umfangreiche Ressourcenbibliothek ist voll von hilfreichen Ressourcen, von Whitepapers bis hin zu Webinaren, die Ihnen den Einstieg in die entwicklungsorientierte sichere Programmierung erleichtern. Erforschen Sie sie jetzt.

Ressourcendrehscheibe

Coders Conquer Security: Share & Learn Series - XXE Injection

Veröffentlicht Aug 01, 2019
Unter

Der Angriff "XML External Entity Injection", manchmal einfach als XXE-Injektion abgekürzt, ist relativ neu im Vergleich zu einigen der klassischen Schwachstellen, die auch Jahre nach ihrer Entstehung noch die Runde machen. Aber sie ist in den Hacker-Communities derzeit extrem beliebt und wird mit zunehmenden Erfolgen immer beliebter.

Tatsächlich listet OWASP XXE Injection jetzt als eine der zehn größten Schwachstellen auf, auf die Websites achten und sich aktiv dagegen schützen müssen. Aber keine Sorge, XXE Injection ist nicht mächtiger als andere Exploits, die bei Cyberangriffen eingesetzt werden. Sie ist nur ein bisschen neuer und weniger bekannt. Sie kann verhindert und sogar komplett gestoppt werden.

In dieser Folge lernen wir:

  • Wie Angreifer XXE-Injektionen verwenden
  • Warum die XXE-Injektion gefährlich ist
  • Techniken, die diese Sicherheitslücke verhindern können.

Wie lösen Angreifer eine XXE-Injektion aus?

Die XXE-Injection-Schwachstelle kann auftreten, wenn ein böswilliger Benutzer die Möglichkeit erhält, XML-Code zu übermitteln. Er nutzt diese Fähigkeit, um einen Verweis auf eine externe Entität zu erstellen. Der externe Verweis und der Code sind so konzipiert, dass sie an einem XML-Parser mit Standardeinstellungen oder einem mit schwach konfigurierten Einstellungen vorbeigehen.

Der Angreifer nutzt die Tatsache aus, dass der XML-Standard das Konzept einer Entität als eine Speichereinheit irgendeiner Art definiert, wobei dieser Speicher extern oder intern sein kann. Richtig eingesetzt, kann er XML-Prozessoren den Zugriff auf entfernte Ressourcen ermöglichen. Meistens nutzen Angreifer diese Fähigkeit, um z.B. die interne Struktur einer Website zu sondieren, eine Denial-of-Service-Attacke zu starten, indem sie große Systemprozesse auslösen, die versuchen, auf Remote-Ressourcen zuzugreifen, oder sogar Daten von einem lokalen Host auf einen Remote-Host zu dumpen, den sie kontrollieren ", was es zu einer guten Technik macht, um wichtige Daten wie Passwörter oder persönliche Informationen, die in der XML-Datenbank enthalten sind, zu exfiltrieren.

Der eigentliche Code, der in den Angriff involviert ist, ist oft recht simpel und nutzt lediglich die Funktionalität der Entität aus. Dies könnte einem Hacker beispielsweise den Zugriff auf die Master-Kennwortdatei ermöglichen:

<!ENTITY hackwithxxe SYSTEM file:///etc/password>

Warum ist die XXE-Injektion gefährlich?

Es gibt ein paar Gründe, warum XXE-Injection-Angriffe so gefährlich und auch weit verbreitet sind. Zum einen ist es eine noch wenig bekannte Sicherheitslücke. Und die Gewinne, die ein Angreifer durch das Ausnutzen dieser Schwachstelle erzielen kann, sind beträchtlich. Zum einen kann sie hartnäckigen Angreifern erlauben, langsam alle Pfade in einem internen Netzwerk abzubilden oder sogar Ports zu scannen. Obwohl dies eine gewisse Zeit in Anspruch nehmen kann, besteht fast keine Chance, dass die Aktivitäten eines Hackers von aktiven Verteidigungsmaßnahmen im Zielnetzwerk aufgedeckt werden, da er einfach XML-Code an einen Server sendet, der von dem vertrauenswürdigen XML-Parser freigegeben wird.

Sobald eine Zuordnung erfolgt ist, können Angreifer dieselben XXE-Injection-Techniken verwenden, um beliebige Dateien zu erbeuten, entweder direkt, um Informationen zu stehlen, oder indem sie gültige Benutzeranmeldeinformationen kompromittieren und sie für sekundäre Angriffe verwenden. Schließlich können Angreifer, die einfach nur Lärm machen und böswillig sein wollen, Dinge wie das Auslösen von Denial-of-Service-Angriffen tun, indem sie der Anwendung befehlen, zu versuchen, auf entfernte Ressourcen zuzugreifen, um das System lahmzulegen.  

Beseitigung der XXE-Injection-Schwachstelle

Aufgrund der rapiden Zunahme von XXE-Injection-Attacken gehen viele XML-Parser dazu über, externe Entitäten, manchmal auch DTDs genannt, standardmäßig komplett zu deaktivieren. In diesen Fällen besteht der Schlüssel darin, diese Funktionalität einfach nicht zu aktivieren.

Aber auch bei Parsern, die DTDs zulassen, kann diese Funktionalität deaktiviert werden. Im Allgemeinen wird eine Anweisung wie die folgende benötigt, um sie vollständig zu blockieren, aber sehen Sie in der Dokumentation Ihres lokalen Frameworks nach, um den genauen benötigten Code zu erhalten.

factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);

Gemäß den Sicherheitsprinzipien sollten alle Benutzereingaben mit anwendungsweiten Filtern bereinigt und validiert werden. Vergessen Sie nicht, GET- und POST-Parameter, HTTP-Header und Cookies einzubeziehen. Sie können auch eine Whitelist mit bestimmten DTDs und Befehlen erstellen, die der Parser verarbeiten soll, und alles andere verbieten.

Obwohl Whitelisting und Filterung funktionieren, wird aufgrund der steigenden Anzahl von XXE-Injection-Angriffen dennoch empfohlen, die DTD-Unterstützung komplett zu deaktivieren, wenn die Funktionalität nicht benötigt wird.

Mehr Informationen über XXE Injections

Als weitere Lektüre können Sie einen Blick darauf werfen, was OWASP über XXE-Injection-Angriffe sagt. Sie können Ihr neu erworbenes Verteidigungswissen auch mit der kostenlosen Demo der Secure Code Warrior Plattform testen, die Cybersecurity-Teams zu den ultimativen Cyber-Kriegern ausbildet. Um mehr darüber zu erfahren, wie Sie diese Schwachstelle und andere Bedrohungen abwehren können, besuchen Sie den BlogSecure Code Warrior .

Wir bitten Sie um Ihre Erlaubnis, Ihnen Informationen über unsere Produkte und/oder verwandte Themen der sicheren Codierung zuzusenden. Wir werden Ihre persönlichen Daten immer mit äußerster Sorgfalt behandeln und sie niemals zu Marketingzwecken an andere Unternehmen verkaufen.

Senden
Um das Formular abzuschicken, aktivieren Sie bitte "Analytics"-Cookies. Sie können die Cookies wieder deaktivieren, sobald Sie fertig sind.