-
Notifications
You must be signed in to change notification settings - Fork 9
/
CVE-2016-3674.html
187 lines (153 loc) · 8.32 KB
/
CVE-2016-3674.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<!--
Copyright (C) 2005, 2006 Joe Walnes.
Copyright (C) 2006, 2007, 2008, 2021 XStream committers.
All rights reserved.
The software in this package is published under the terms of the BSD
style license a copy of which has been included with this distribution in
the LICENSE.txt file.
Created on 29. January 2005 by Joe Walnes
-->
<head>
<title>XStream - CVE-2016-3674</title>
<link rel="stylesheet" type="text/css" href="style.css"/>
<!-- Google analytics -->
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-110973-2";
urchinTracker();
</script>
</head>
<body>
<div id="banner">
<a href="index.html"><img id="logo" src="logo.gif" alt="XStream"/></a>
</div>
<div id="center" class="Content2Column"> <!-- Content3Column for index -->
<div id="content">
<h1 class="FirstChild">CVE-2016-3674</h1>
<h2 id="vulnerability">Vulnerability</h2>
<p>CVE-2016-3674: XML External Entity (XXE) Vulnerability in XStream.</p>
<h2 id="affected_versions">Affected Versions</h2>
<p>XStream is not vulnerable, if the default XML Pull Parser is used (Xpp3 or kXML2), since these parser types do
not process XML entities at all.</p>
<p>All versions until and including version 1.4.8 are affected, if they use explicitly one of the following parsers:</p>
<ul>
<li>DOM4J</li>
<li>DOM</li>
<li>JDOM</li>
<li>JDOM2</li>
<li>StAX implementation</li>
<li>XOM</li>
</ul>
<p>XStream's HierarchicalStreamDriver implementations will now explicitly turn off the processing of external
entities, but the setting is not respected by all parser implementations. XStream stays therefore vulnerable in
future, if one of the following parser implementations is explicitly used:</p>
<ul>
<li>DOM implementation from Java 5 runtime and below</li>
<li>StAX implementation from Java 6 runtime and below</li>
<li>StAX implementation from BEA (old reference implementation)</li>
<li>XOM</li>
</ul>
<p>See <a href="faq.html#Security_XXEVulnerability">FAQ</a> for a matrix explaining some parser behavior.</p>
<h2 id="description">Description</h2>
<p>XStream supports a lot of different XML parsers. Some of those can also process external entities which was
enabled by default. An attacker could therefore provide manipulated XML as input to access data on the file
system, see <a href="https://www.owasp.org/index.php/XML_External_Entity_%28XXE%29_Processing">XXE Vulnerability</a>.</p>
<h2 id="reproduction">Steps to Reproduce</h2>
<p>An attacker might use external general or parameter entities:</p>
<div class="Source XML"><pre><?xml version="1.0">
<!DOCTYPE root [
<!ELEMENT string (#PCDATA)>
<!ENTITY content SYSTEM "file:/etc/passwd">
]><string>&content;</string>
</pre></div>
<div class="Source XML"><pre><?xml version="1.0">
<!DOCTYPE root [
<!ELEMENT string (#PCDATA)>
<!ENTITY content SYSTEM "file:/etc/passwd">
%content;
]><string>test</string>
</pre></div>
<p>Use one of the XML documents above, initialize XStream with a vulnerable parser and unmarshal the XML:</p>
<div class="Source Java"><pre>XStream xstream = new XStream();
String s = (String)xstream.fromXML(xml);
</pre></div>
<h2 id="impact">Impact</h2>
<p>The vulnerability may allow a remote attacker to retrieve the content of arbitrary files with known locations in
a local file system if the Java process has read access.</p>
<h2 id="workarounds">Workaround</h2>
<p>Use one of the XML Pull Parser implementations.</p>
<h2 id="credits">Credits</h2>
<p>The vulnerability was discovered and reported by Alexander Klink.</p>
<br/>
</div>
</div>
<div class="SidePanel" id="left">
<div class="MenuGroup">
<h1>Software</h1>
<ul>
<li><a href="index.html">About XStream</a></li>
<li><a href="news.html">News</a></li>
<li><a href="changes.html">Change History</a></li>
<li><a href="security.html">Security Aspects</a></li>
<li><a href="versioning.html">About Versioning</a></li>
</ul>
</div>
<div class="MenuGroup">
<h1>Evaluating XStream</h1>
<ul>
<li><a href="tutorial.html">Two Minute Tutorial</a></li>
<li><a href="license.html">License</a></li>
<li><a href="download.html">Download</a></li>
<li><a href="references.html">References</a></li>
<li><a href="benchmarks.html">Benchmarks</a></li>
<li><a href="https://www.openhub.net/p/xstream">Code Statistics</a></li>
</ul>
</div>
<div class="MenuGroup">
<h1>Using XStream</h1>
<ul>
<li><a href="architecture.html">Architecture Overview</a></li>
<li><a href="graphs.html">Object references</a></li>
<li><a href="manual-tweaking-output.html">Tweaking the Output</a></li>
<li><a href="converters.html">Converters</a></li>
<li><a href="faq.html">Frequently Asked Questions</a></li>
<li><a href="mailing-lists.html">Mailing Lists</a></li>
<li><a href="issues.html">Reporting Issues</a></li>
</ul>
</div>
<div class="MenuGroup">
<h1>Javadoc</h1>
<ul>
<li><a href="javadoc/index.html">XStream Core</a></li>
<li><a href="hibernate-javadoc/index.html">Hibernate Extensions</a></li>
<li><a href="jmh-javadoc/index.html">JMH Module</a></li>
</ul>
</div>
<div class="MenuGroup">
<h1>Tutorials</h1>
<ul>
<li><a href="tutorial.html">Two Minute Tutorial</a></li>
<li><a href="alias-tutorial.html">Alias Tutorial</a></li>
<li><a href="annotations-tutorial.html">Annotations Tutorial</a></li>
<li><a href="converter-tutorial.html">Converter Tutorial</a></li>
<li><a href="objectstream.html">Object Streams Tutorial</a></li>
<li><a href="persistence-tutorial.html">Persistence API Tutorial</a></li>
<li><a href="json-tutorial.html">JSON Tutorial</a></li>
<li><a href="http://www.studytrails.com/java/xml/xstream/xstream-introduction.jsp">StudyTrails</a></li>
</ul>
</div>
<div class="MenuGroup">
<h1>Developing XStream</h1>
<ul>
<li><a href="how-to-contribute.html">How to Contribute</a></li>
<li><a href="team.html">Development Team</a></li>
<li><a href="repository.html">Source Repository</a></li>
<li><a href="https://travis-ci.org/x-stream/xstream/branches">Continuous Integration</a></li>
</ul>
</div>
</div>
</body>
</html>