Welche Risiken bietet XML? – Blogserie – Teil #02
Um herauszufinden welche Systeme für Angriffe, die auf XML basieren, verwundbar sein können, ist es essentiell zu untersuchen, in welchen Szenarien die Technologie XML zum Einsatz kommt. In dem letzten Beitrag dieser Serie haben wir die Grundbegriffe zum Thema XML und Angriffen, wie XXE, erklärt. Im zweiten Teil möchten wir die häufigsten Einsatzzwecke von XML besprechen, um es Ihnen zu ermöglichen potentielle Schwachstellen in Ihren Systemen effektiv erkennen und beheben zu können.
Web APIs und Kommunikation
AJAX und Fetch API
Hinter Asynchronous JavaScript and XML (AJAX) verbirgt sich, ähnlich wie hinter „REST” [3] keine Technologie an sich, sondern ein allgemeines Konzept. AJAX beschreibt wie verschiedene Technologien miteinander genutzt werden können um Webseiten interaktiv zu gestalten. Obwohl der Name die Nutzung von XML impliziert, wird heutzutage meistens JSON [2] für den Datenaustausch genutzt. JSON bietet den Vorteil, dass sich das Format einfacher in JavaScript Objekte – und zurück – (de)serialisieren lässt [1].
Seit 2015 gibt es einen Nachfolger zum Einsatz von AJAX, die Fetch API [4]. Diese ermöglicht sehr ähnliche Funktionalitäten, beruht aber auf einer moderneren Programmiersyntax von JavaScript und ist besser an das übliche Nutzungsverhalten angepasst. Darüber hinaus präferiert die Fetch API JSON als Format für den Datenaustausch und stellt für den Import von JSON einen speziellen API Call zur Verfügung [5]. Dennoch ist es möglich XML als Format für den Datenaustausch über die Fetch API zu nutzen.
Wenn solche Systeme mit XML genutzt werden muss der Server Endpunkte unterstützen, welche Daten im XML Format akzeptieren und weiterverarbeiten. Wie bereits im letzten Post dieser Reihe angeführt listet Shodan – eine Suchmaschine für internetfähige Geräte – aktuell mehr als drei Millionen Geräte, die angeben XML zu verstehen.¹ Eine angreifende Person kann an diese Endpunkte modifizierte XML Anfragen schicken, welche einen Payload für einen der vielen XML-basierten Angriffe enthält.
SOAP Protokoll
SOAP [15] ist ein Protokoll zum Austausch von Daten, welches häufig bei Webservices zum Einsatz kommt. SOAP selbst definiert eine Struktur für die übertragenen Nachrichten im XML Format. Der sogenannte Envelope, den SOAP definiert, kann genutzt werden um arbiträre Anfragen oder Daten an den Empfänger zu senden. Ein Beispiel für einen SOAP Envelope ist in Listing 1 zu sehen.
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body> <m:GetLastTradePriceResponse xmlns:m="Some-URI"> <Price>34.5</Price> </m:GetLastTradePriceResponse> </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
SOAP Envelope – Ein Beispiel [15]. (Listing 1)
Des weiteren dient SOAP häufig als Basis für weitere Protokolle. Unter anderem SAML (siehe nächster Abschnitt) oder auch AS4 [16] – ein Protokoll zum Austausch von Business Dokumenten zwischen Firmen (Business-to-Business). Im Allgemeinen kommt SOAP heutzutage eher im Hintergrund vor, da viele Clientside APIs auf JSON zum Datenaustausch zurückgreifen. Shodan listet fast sieben Millionen Server, die SOAP nutzen, auf.²
SAML Protokoll
Die Security Assertion Markup Language (SAML) [12] definiert ein XML-basiertes Protokoll zur Authentifizierung und Autorisierung von benutzenden Personen. Dabei baut SAML auf der Nutzung von SOAP auf und nutzt ein auf XML-basierendes Format zum Austausch von Daten. Der Einsatz von SAML ist weit verbreitet und das Protokoll wird sowohl von vielen kommerziellen Produkten, als auch vielen Open-Source Lösungen, im Single Sign-On Bereich unterstützt [13].
Listing 2 zeigt ein Beispiel für einen AuthNRequest
. Dabei handelt es sich um die Anfrage eines Service Providers zur Authentifizierung einer benutzenden Person mittels SAML.
<samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" ID="ONELOGIN_809707f0030a5d00620c9d9df97f627afe9dcc24" Version="2.0" ProviderName="SP test" IssueInstant="2014-07-16T23:52:45Z" Destination="http://idp.example.com/SSOService.php" ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" AssertionConsumerServiceURL="http://sp.example.com/demo1/index.php?acs"> <saml:Issuer>http://sp.example.com/demo1/metadata.php</saml:Issuer> <samlp:NameIDPolicy Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress" AllowCreate="true" /> <samlp:RequestedAuthnContext Comparison="exact"> <saml:AuthnContextClassRef> urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport </saml:AuthnContextClassRef> </samlp:RequestedAuthnContext> </samlp:AuthnRequest>
SAML AuthNRequest – Ein Beispiel [14]. (Listing 2)
XML Dateiformate
Microsoft Office und OpenDocument
Die Dateiformate, die Microsofts Office Suite nutzt – also zum Beispiel .docx, .xlsx
oder .pptx
– basieren auf der Open Packaging Conventions (OPC) [7] Spezifikation. Diese definiert ein ZIP Archiv, welches durch mehrere XML Dateien strukturiert wird. Ein Beispiel einer dieser XML Dateien ist in Listing 3 zu sehen. Viele der weiteren Dateitypen, die auf OPC basieren, definieren den Großteil ihres Inhaltes ebenfalls im XML Format.³
<?xml version='1.0' encoding='utf-8'?> <w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"> <w:body> <w:p> <w:pPr> <w:pStyle w:val="Heading 1"/> <w:pageBreakBefore w:val="off"/> </w:pPr> <w:r> <w:bookmarkStart w:id="1" w:name="BookTitle"/> <w:t></w:t> <w:bookmarkEnd w:id="1"/> <w:t>Inet Magazine No. 2</w:t> </w:r> </w:p> ... </w:body> </w:document>
.docx
Datei Beispiel – Beginn einer document.xml
Datei, welche innerhalb einer .docx
Datei das Hauptdokument definiert [8]. (Listing 3)
Die älteren Microsoft Office Dateiformate – .doc
, .xls
, oder .ppt
– nutzen ebenfalls eine ähnliche Struktur wie ein OPC Dokument. Das Hauptdokument wird bei diesen Dateiformaten zwar als Binary-Blob gespeichert, die XML Dokumente zur Beschreibung der Struktur können jedoch für Angriffe über XML anfällig sein.
Auch die OpenDocument Dateiformate (z. B. .odt,.ods,
oder .odp
) bauen auf XML auf. Ähnlich zu den Microsoft Office Dateiformaten basieren diese auf einem ZIP Archiv, welches XML Dateien enthält.
RSS und SVG
RSS [9] und SVG [10] sind beides Dateiformate, die direkt auf XML basieren. Das heißt technisch handelt es sich bei beiden Dateiformaten um XML Dateien mit einer spezifizierten Struktur. Beide Formate kommen häufig im Internet zum Einsatz und werden in verschiedenen externen Anwendung genutzt und verarbeitet. Beispiele für beide Dateitypen sind in Listings 4 und 5 zu sehen.
<?xml version="1.0"?> <rss version="2.0"> <channel> <title>Hackmanit Cyber Security Blog</title> <link>https://www.hackmanit.de/en/blog-en</link> <description>Articles on various IT security related topics.</description> ... <item> <title>How to Secure APIs?</title> <link>https://www.hackmanit.de/en/blog-en/155-how-to-secure-apis</link> <description>APIs can provide critical functionalities and information; hence their security is a crucial aspect...</description> <pubDate>Mon, 11 Jul 2022</pubDate> </item> ... </channel> </rss>
RSS Datei – Ein Beispiel. (Listing 4)
<?xml version="1.0" standalone="yes"?> <parent xmlns="http://example.org" xmlns:svg="http://www.w3.org/2000/svg"> <!-- parent contents here --> <svg:svg width="4cm" height="8cm"> <svg:ellipse cx="2cm" cy="4cm" rx="2cm" ry="1cm" /> </svg:svg> ... </parent>
SVG Datei – Ein Beispiel[11]. (Listing 5)
… und viele mehr
Es gibt noch eine Vielzahl weiterer Dateiformate, die intern XML nutzen [6]. Wenn Sie herausfinden möchten, ob ein Dateiformat, welches bei Ihnen zum Einsatz kommt XML beinhaltet, empfiehlt es sich in einer Datenbank für Dateiformate, wie https://fileinfo.com/, nachzusehen. In diesen Datenbanken finden sich häufig Informationen darüber wie ein Dokument aufgebaut ist und welche Arten von Daten es enthält. Falls dies nicht die gewünschten Ergebnisse liefert, hilft häufig nur eine eigene Recherche, z. B. in der Spezifikation des jeweiligen Dateiformats.
Teil #03 – XXE Angriffe finden in 3 Schritten
Mit diesem Überblick darüber wo – und in welcher Form – man XML finden kann haben Sie ein gutes Basiswissen um XML in der Praxis zu erkennen. Im nächsten Teil dieser Blogserie zum XML Format wird es darum gehen tatsächliche XML Sicherheitslücken zu erkennen. Dies werden wir anhand eines Fallbeispiels zu XXE Angriffen erklären.
Blogserie – Welche Risiken bietet XML? – Alle Teile auf einen Blick
Teil #01 – XML im Überblick
Teil #02 – Wo wird XML in der Praxis eingesetzt?
Teil #03 – XXE Angriffe finden in 3 Schritten
Teil #04 – Sicherheitslücken in SOAP Web Services aufdecken
Folgen Sie uns auf X (Twitter) oder Linkedin und verpassen Sie keinen unserer zukünftigen Blogbeiträge.
Fußnoten
¹ https://www.shodan.io/search?query=%22Content-Type%3A+text%2Fxml%22 sucht nach allen Einträgen, welche den HTTP Header Content-Type: text/xml haben
² https://www.shodan.io/search?query=%22Server%3A+gSOAP%22.
³ Eine der Liste der Dateiformate kann z. B. hier gefunden werden https://en.wikipedia.org/wiki/Open_Packaging_Conventions.
Quellen
[1] https://developer.mozilla.org/en-US/docs/Web/Guide/AJAX
[2] https://www.json.org/json-en.html
[3] https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm
[4] https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API
[5] https://developer.mozilla.org/en-US/docs/Web/API/Response#methods
[6] http://fileformats.archiveteam.org/wiki/Category:XML_based_file_formats
[7] ISO/IEC 29500-2:2021 – Document description and processing languages - Office Open XML file formats - Part 2: Open packaging conventions https://www.iso.org/standard/77818.html
[8] https://telparia.com/fileFormatSamples/document/docx/
[9] https://www.rssboard.org/rss-specification
[10] https://www.w3.org/TR/SVG/
[11] https://www.w3.org/TR/SVG/struct.html
[12] http://docs.oasis-open.org/security/saml/v2.0/sstc-saml-approved-errata-2.0.pdf
[13] https://en.wikipedia.org/wiki/SAML-based_products_and_services
[14] https://www.samltool.com/generic_sso_req.php
[15] http://www.w3.org/TR/SOAP/
[16] http://docs.oasis-open.org/ebxml-msg/ebms/v3.0/profiles/AS4-profile/v1.0/os/AS4-profile-v1.0-os.pdf
Unsere Experten entwickeln die optimale Lösung für Sie
XML Parsing – XML Sicherheit – SOAP
Stehen Sie vor der Entscheidung, wie Sie XML sicher verarbeiten und Ihre Kundendaten optimal schützen können? Oder setzen Sie bereits XML ein und fragen sich, ob Ihre Implementierung sicher ist?
Wir beraten Sie gerne; kontaktieren Sie uns für eine unverbindliche Erstberatung. So stehen wir Ihnen mit folgenden Services und Lösungen zur Seite:
IT-Sicherheitsberatung | Schulungen | Penetrationstests
Zögern Sie nicht und finden Sie mit uns Ihren Weg zu sicheren APIs. Wir freuen uns darauf Sie bei Ihren Projekten zu unterstützen.

Ihr Ansprechpartner für XML-Sicherheit und SOAP
Prof. Dr. Juraj Somorovsky
juraj.somorovsky@hackmanit.de