Skip to content

Commit b59b611

Browse files
committed
Backport fix for #2589 as well as #1279, preparing for 2.6.7.4 micro-patch
1 parent 74aba40 commit b59b611

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

release-notes/VERSION

+4-1
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,15 @@ Project: jackson-databind
44
=== Releases ===
55
------------------------------------------------------------------------
66

7-
2.6.7.4 (not yet released)
7+
2.6.7.4 (25-Oct-2020)
88

99
Backported all CVE fixes up to 2.9.10.6
1010

11+
#1279: Ensure DOM parsing defaults to not expanding external entities
1112
#2469: Block one more gadget type (xalan2)
1213
#2526: Block two more gadget types (ehcache/JNDI - CVE-2019-20330)
14+
#2589: `DOMDeserializer`: setExpandEntityReferences(false) may not prevent external
15+
entity expansion in all cases [CVE-2020-25649]
1316
#2620: Block one more gadget type (xbean-reflect/JNDI - CVE-2020-8840)
1417
#2631: Block one more gadget type (shaded-hikari-config, CVE-2020-9546)
1518
#2634: Block two more gadget types (ibatis-sqlmap, anteros-core; CVE-2020-9547 / CVE-2020-9548)

src/main/java/com/fasterxml/jackson/databind/ext/DOMDeserializer.java

+21
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
import java.io.StringReader;
44

5+
import javax.xml.XMLConstants;
56
import javax.xml.parsers.DocumentBuilderFactory;
7+
import javax.xml.parsers.ParserConfigurationException;
68

79
import org.w3c.dom.Document;
810
import org.w3c.dom.Node;
@@ -25,6 +27,25 @@ public abstract class DOMDeserializer<T> extends FromStringDeserializer<T>
2527
_parserFactory = DocumentBuilderFactory.newInstance();
2628
// yup, only cave men do XML without recognizing namespaces...
2729
_parserFactory.setNamespaceAware(true);
30+
// [databind#1279]: make sure external entities NOT expanded by default
31+
_parserFactory.setExpandEntityReferences(false);
32+
// ... and in general, aim for "safety"
33+
try {
34+
_parserFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
35+
} catch(ParserConfigurationException pce) {
36+
// not much point to do anything; could log but...
37+
} catch (Error e) {
38+
// 14-Jul-2016, tatu: Not sure how or why, but during code coverage runs
39+
// (via Cobertura) we get `java.lang.AbstractMethodError` so... ignore that too
40+
}
41+
42+
// [databind#2589] add two more settings just in case
43+
try {
44+
_parserFactory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
45+
} catch (Throwable t) { } // as per previous one, nothing much to do
46+
try {
47+
_parserFactory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
48+
} catch (Throwable t) { } // as per previous one, nothing much to do
2849
}
2950

3051
protected DOMDeserializer(Class<T> cls) { super(cls); }

0 commit comments

Comments
 (0)