Programmierer erobern die Sicherheit: Serie „Teilen und Lernen“ — XXE Injection

Der XML External Entity Injection-Angriff, manchmal einfach als XXE-Injection abgekürzt, ist relativ neu im Vergleich zu einigen der klassischen Sicherheitslücken, die Jahre nach ihrer Einführung immer noch die Runde machen. Aber er ist derzeit bei Hacker-Communities extrem beliebt und wächst mit zunehmender Erfolgsrate noch mehr.
Tatsächlich listet OWASP die XXE-Injektion jetzt als eine der zehn häufigsten Sicherheitslücken auf, auf die Websites achten und gegen die sie sich aktiv verteidigen müssen. Aber keine Sorge, die XXE-Injektion ist nicht leistungsfähiger als andere Exploits, die bei Cyberangriffen eingesetzt werden. Es ist nur ein bisschen neuer und ein bisschen weniger verstanden. Es kann verhindert und sogar vollständig gestoppt werden.
In dieser Folge werden wir lernen:
- Wie Angreifer XXE-Injektionen verwenden
- Warum die XXE-Injektion gefährlich ist
- Techniken, die diese Sicherheitsanfälligkeit verhindern können.
Wie lösen Angreifer eine XXE-Injektion aus?
Die XXE-Injection-Schwachstelle kann auftreten, wenn einem böswilligen Benutzer die Möglichkeit gegeben wird, XML-Code einzureichen. Sie nutzen diese Fähigkeit, um einen Verweis auf eine externe Entität zu erstellen. Die externe Referenz und der Code sind so konzipiert, dass sie an einem XML-Parser mit Standardeinstellungen oder einem Parser mit schwach konfigurierten Einstellungen vorbeirutschen.
Der Angreifer nutzt die Tatsache aus, dass der XML-Standard das Konzept einer Entität als Speichereinheit eines bestimmten Typs definiert, dieser Speicher jedoch extern oder intern sein kann. Richtig eingesetzt, kann er XML-Prozessoren den Zugriff auf Remote-Ressourcen ermöglichen. In den meisten Fällen nutzen Angreifer diese Fähigkeit, um stattdessen Dinge wie die interne Struktur einer Website zu untersuchen, einen Denial-of-Service-Angriff zu starten, indem sie große Systemprozesse auslösen, die versuchen, auf Remote-Ressourcen zuzugreifen, oder um sogar Daten von einem lokalen Host auf einen von ihnen kontrollierten Remote-Host zu übertragen. "Dies ist eine gute Technik, um wichtige Daten wie Passwörter oder persönliche Informationen in der XML-Datenbank zu extrahieren.
Der eigentliche Code, der an dem Angriff beteiligt ist, ist oft ziemlich simpel und nutzt lediglich die Entitätsfunktionalität aus. Dies könnte beispielsweise einem Hacker den Zugriff auf die Master-Passwortdatei ermöglichen:
<!
Warum ist die XXE-Injektion gefährlich?
Es gibt einige Gründe, warum XXE-Injection-Angriffe so gefährlich und auch häufig sind. Zum einen handelt es sich derzeit um eine weniger bekannte Sicherheitslücke. Und die Gewinne, die ein Angreifer erzielen kann, wenn er sie ausnutzt, sind beträchtlich. Zum einen kann es hartnäckigen Angreifern ermöglichen, langsam alle Pfade in einem internen Netzwerk abzubilden oder sogar Ports zu scannen. Dies kann zwar einige Zeit in Anspruch nehmen, aber es besteht fast keine Chance, dass die Aktivitäten eines Hackers durch aktive Abwehrmaßnahmen im Zielnetzwerk aufgedeckt werden, da er lediglich XML-Code an einen Server sendet, der gerade vom vertrauenswürdigen XML-Parser gelöscht wird.
Sobald die Angreifer die Karten gefunden haben, können sie dieselben XXE-Injection-Techniken verwenden, um alle benötigten Dateien abzufangen. Dabei können sie entweder direkt Informationen stehlen oder 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ösartig sein wollen, Dinge wie Denial-of-Service-Angriffe auslösen und der Anwendung befehlen, auf entfernte Ressourcen zuzugreifen, um das System zum Stillstand zu bringen.
Beseitigung der XXE-Injection-Schwachstelle
Aufgrund der raschen Zunahme von XXE-Injection-Angriffen beginnen viele XML-Parser, externe Entitäten, manchmal DTDs genannt, standardmäßig vollständig zu deaktivieren. Für diese liegt der Schlüssel einfach darin, diese Funktionalität nicht zu aktivieren.
Aber selbst 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 schauen Sie in Ihrer lokalen Framework-Dokumentation nach, um den genauen Code zu erhalten, der benötigt wird.
factory.setFeature (“ http://apache.org/xml/features/disallow-doctype-decl „, wahr);
Gemäß den Sicherheitsprinzipien sollten alle Benutzereingaben mithilfe von 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.
Whitelisting und Filtern funktionieren zwar, aber aufgrund der steigenden Anzahl von XXE-Injection-Angriffen wird dennoch empfohlen, die DTD-Unterstützung vollständig zu deaktivieren, wenn die Funktionalität nicht benötigt wird.
Weitere Informationen zu XXE-Injektionen
Zum weiteren Lesen können Sie sich ansehen, was OWASP dazu sagt XXE-Injektionsangriffe. Sie können Ihr neu gewonnenes Defensivwissen auch auf die Probe stellen mit dem kostenlose Demo der Secure Code Warrior-Plattform, die Cybersicherheitsteams zu ultimativen Cyberkriegern ausbildet. Um mehr über die Beseitigung dieser Sicherheitslücke und eine Galerie mit anderen Bedrohungen zu erfahren, besuchen Sie die Blog von Secure Code Warrior.
Govern AI-driven development before it ships
Measure AI-assisted risk, enforce secure coding policy at commit, and accelerate secure delivery across your SDLC.
Explore more blogs
Lorem ipsum diam quis enim lobortis scelerisque fermentum dui faucibus in ornare quam viverra orci sagittis eu volutpat odio facilisis.
%252520%252520(3).avif)
Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

Security as culture: How Blue Prism cultivates world-class secure developers
Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed

One Culture of Security: How Sage built their security champions program with agile secure code learning
Discover how Sage enhanced security with a flexible, relationship-focused approach, creating 200+ security champions and achieving measurable risk reduction.
%252520(1).avif)
Why most CISOs are navigating AI adoption blindfolded (and how they can remove it)
Today, Secure Code Warrior issued an all-new white paper covering a prescriptive, directional AI adoption model that security leaders can use to identify their adoption stage and make real progress in bringing the AI security risks within their organization under control.
Secure AI-driven development before it ships
See developer risk, enforce policy, and prevent vulnerabilities across your software development lifecycle.

