Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Beispielanalyse einer Schwachstelle bezüglich der Einschleusung externer XML-Entitäten

Beispielanalyse einer Schwachstelle bezüglich der Einschleusung externer XML-Entitäten

王林
王林nach vorne
2023-05-11 16:55:122189Durchsuche

1. XML-External-Entity-Injection-Schwachstelle

XML-External-Entity-Injection-Schwachstelle wird oft als XXE-Schwachstelle bezeichnet. XML ist ein weit verbreitetes Datenübertragungsformat und viele Anwendungen enthalten Code zur Verarbeitung von XML-Daten. Standardmäßig verweisen viele veraltete oder falsch konfigurierte XML-Prozessoren auf externe Entitäten.

Wenn ein Angreifer durch anfälligen Code, Abhängigkeiten oder Integrationen ein XML-Dokument hochladen oder schädliche Inhalte zum XML-Dokument hinzufügen kann, kann er einen fehlerhaften XML-Prozessor angreifen. Das Auftreten von XXE-Schwachstellen hat nichts mit der Entwicklungssprache zu tun. Solange die XML-Daten in der Anwendung analysiert werden und die Daten vom Benutzer kontrolliert werden, ist die Anwendung möglicherweise anfällig für XXE-Angriffe. In diesem Artikel wird das Java-Programm als Beispiel verwendet, um die Ursachen und Behebung von XXE-Schwachstellen vorzustellen. Einzelheiten zur XXE-Sicherheitslücke finden Sie unter CWE-611: Unsachgemäße Beschränkung der externen XML-Entitätsreferenz ('XXE') (http://cwe.mitre.org/data/definitions/611.html).

2. XML External Entity Injection

XXE-Schwachstellen können zum Extrahieren von Daten, zum Ausführen von Remote-Server-Anfragen, zum Scannen interner Systeme, zur Durchführung von Denial-of-Service-Angriffen und anderen Angriffen genutzt werden. Die geschäftlichen Auswirkungen hängen in erster Linie von den betroffenen Referrern und den Datenschutzanforderungen ab.

Seit 2018 wurden in CVE insgesamt 92 diesbezügliche Schwachstelleninformationen veröffentlicht. Einige CVEs sind wie folgt:

CVE-2018-8027 Apache Camel 2.20.0 bis 2.20.3 und 2.21.0 Core weist eine XXE-Schwachstelle im XSD-Validierungsprozessor auf.
CVE-2018-13439 Es gibt eine XXE-Schwachstelle in der WXPayUtil-Klasse im WeChat Payment Java SDK.
CVE-2018-1000548 In Umlet mit einer Versionsnummer unter 14.3 besteht eine Sicherheitslücke bezüglich der Injektion externer XML-Entitäten beim Parsen von Dateien, die zu vertraulichen Datenlecks, Denial-of-Service und serverseitiger Anforderungsfälschung führen kann . Dieser Angriff kann über eine speziell gestaltete UXF-Datei durchgeführt werden.
CVE-2018-1364
IBM Content Bavigator 2.0 und 3.0 sind bei der Verarbeitung von XML-Daten anfällig für XML External Entity (XXE)-Angriffe. Ein Remote-Angreifer könnte diese Schwachstelle ausnutzen, um vertrauliche Informationen preiszugeben oder Speicherressourcen zu belegen.

3. Beispielcode

3.1 Fehlercode

Dieser Abschnitt verwendet die Beispielcodequelle als Open-Source-Zahlungs-Java-SDK (https://pay.weixin.qq.com/wiki/doc/api/jsapi .php ?chapter=11_1), Quelldateiname: WXPayUtil.java, Dateipfad: java-sdk-v3srcmainjavacomgithubwxpaysdk.

Beispielanalyse einer Schwachstelle bezüglich der Einschleusung externer XML-Entitäten

Im obigen Code können Sie sehen, dass die Daten über den formalen Parameter xmlToMap in Zeile 25 übergeben werden. Die Daten werden in keiner Weise gefiltert und der XML-Prozessor analysiert die Daten in Zeile 32, ohne Sicherheitseinstellungen vorzunehmen . In tatsächlichen Szenarien werden Parameter strXML 也是受攻击者控制的,这样攻击者可能通过构造恶意的 strXML verwendet, um XXE-Angriffe durchzuführen.

Verwenden Sie 360 ​​​​Code Guard, um den obigen Beispielcode zu erkennen. Sie können den Fehler „Riskante XML-Externentitätsinjektion“ in Zeile 32 der Datei erkennen. Wie in Abbildung 1 dargestellt: Abbildung 1: Riskante XML-Injektion externer Entitäten erkannt um einen sicheren XML-Prozessor zu generieren. Das Wichtigste in der WXPayXmlUtil-Klasse ist Zeile 16, die setFeature verwendet, um DTDS im generierten XML-Prozessor vollständig zu deaktivieren. Wie aus Abbildung 2 ersichtlich ist, hat 360 Code Guard keine Fehler im reparierten Code erkannt. ?? sensible Daten werden serialisiert;

2. Reparieren oder aktualisieren Sie alle XML-Prozessoren und Bibliotheken, die von Anwendungen oder zugrunde liegenden Betriebssystemen verwendet werden. Aktualisieren Sie gleichzeitig SOAP durch Abhängigkeitserkennung auf Version 1.2. Beispielanalyse einer Schwachstelle bezüglich der Einschleusung externer XML-Entitäten

3 Deaktivieren Sie externe XML-Entitäten und DTD-Prozesse in allen XML-Parsern der Anwendung. Weitere Informationen finden Sie im „OWASP-Spickzettel „XXE-Prävention“. 》(https://www.owasp.org/index.php/XML_External_Entity_(XXE)_Prevention_Cheat_Sheet)

Der folgende Code ist ein Beispiel für die Verhinderung von XXE-Schwachstellen bei Verwendung von DocumentBuilderFactory zum Parsen von XML in einer Java-Anwendung:

4. Eingabevalidierung: Verwenden Sie serverseitige Whitelists zur Eingabevalidierung und Filterung, um zu verhindern, dass schädliche Daten in XML-Dokumenten, Headern oder Knoten erscheinen. Beispielanalyse einer Schwachstelle bezüglich der Einschleusung externer XML-Entitäten

5. Überprüfen Sie XML und entdecken Sie XXE-Schwachstellen, indem Sie Abhängigkeiten und Sicherheitskonfigurationen erkennen.

Beispielanalyse einer Schwachstelle bezüglich der Einschleusung externer XML-Entitäten

Das obige ist der detaillierte Inhalt vonBeispielanalyse einer Schwachstelle bezüglich der Einschleusung externer XML-Entitäten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen