Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2020-10683

CVE-2020-10683: Dom4j XXE Vulnerability

CVE-2020-10683 is an XML External Entity (XXE) vulnerability in Dom4j that allows external DTDs and entities by default. This enables attackers to exploit XXE flaws. This article covers technical details, affected versions, and mitigation.

Published:

CVE-2020-10683 Overview

CVE-2020-10683 is an XML External Entity (XXE) vulnerability affecting dom4j, a widely-used open source Java library for processing XML documents. The library versions before 2.0.3 and 2.1.x before 2.1.3 allow external DTDs and External Entities by default, enabling attackers to conduct XXE attacks against applications that parse untrusted XML input. While OWASP provides documentation showing how to enable secure, non-default behavior, the insecure default configuration poses significant risk to applications that haven't implemented these mitigations.

Critical Impact

This vulnerability enables attackers to read arbitrary files from the server, perform Server-Side Request Forgery (SSRF), conduct denial of service attacks, and potentially achieve remote code execution depending on the application context and parser configuration.

Affected Products

  • dom4j_project dom4j (versions before 2.0.3 and 2.1.x before 2.1.3)
  • oracle agile_plm (versions 9.3.3, 9.3.5)
  • oracle application_testing_suite (version 13.3.0.1)
  • oracle banking_platform
  • oracle business_process_management_suite (versions 12.2.1.3.0, 12.2.1.4.0)
  • oracle communications_application_session_controller
  • oracle fusion_middleware (version 12.2.1.4.0)
  • oracle primavera_p6_enterprise_project_portfolio_management
  • netapp oncommand_api_services
  • netapp snapcenter
  • netapp snapmanager
  • canonical ubuntu_linux (16.04 ESM)
  • opensuse leap (15.1)

Discovery Timeline

  • 2020-05-01 - CVE CVE-2020-10683 published to NVD
  • 2024-11-21 - Last updated in NVD database

Technical Details for CVE-2020-10683

Vulnerability Analysis

The vulnerability exists in dom4j's default XML parser configuration, which does not disable external DTD and external entity processing. When an application uses dom4j to parse XML from untrusted sources without explicitly configuring secure parser settings, attackers can craft malicious XML documents containing external entity declarations. These declarations can reference external resources, including local files on the server or internal network endpoints.

The insecure default configuration affects the SAXReader class, which is commonly used for reading XML documents. By default, the underlying XMLReader does not have security features enabled to prevent XXE attacks. This design choice, while providing flexibility for legitimate use cases requiring external entities, creates a security gap for applications that don't explicitly implement defensive configurations.

Root Cause

The root cause is CWE-611: Improper Restriction of XML External Entity Reference. The dom4j library's SAXHelper class creates XMLReader instances using system defaults without enabling security features that restrict external entity processing. The SAXReader relies on this helper class, inheriting the insecure defaults. Applications must explicitly configure the SAXParserFactory with appropriate security features to prevent XXE attacks, but this is not the default behavior.

Attack Vector

An attacker can exploit this vulnerability by submitting specially crafted XML content to any application endpoint that uses vulnerable dom4j versions to parse XML. The attack is network-based and requires no authentication or user interaction. The malicious XML payload contains DOCTYPE declarations with external entity references that point to sensitive local files (e.g., /etc/passwd, configuration files) or internal network services.

When the vulnerable parser processes this XML, it resolves the external entities, potentially exposing file contents in error messages or application responses, or triggering outbound connections to attacker-controlled servers. In some configurations, XXE can lead to denial of service through entity expansion attacks (billion laughs) or remote code execution if the application processes the parsed data in unsafe ways.

java
// Security patch from src/main/java/org/dom4j/io/SAXHelper.java
// The fix adds SAXParserFactory import to enable secure XML parsing

 import org.xml.sax.XMLReader;
 import org.xml.sax.helpers.XMLReaderFactory;
 
+import javax.xml.parsers.SAXParserFactory;
+
 /**
  * <p>
  * <code>SAXHelper</code> contains some helper methods for working with SAX
  * and XMLReader objects.
  * </p>
- * 
+ *
  * @author <a href="mailto:james.strachan@metastuff.com">James Strachan </a>
  * @version $Revision: 1.18 $
  */

Source: GitHub Commit for dom4j

Detection Methods for CVE-2020-10683

Indicators of Compromise

  • Unusual outbound network connections from XML-processing application servers to external or internal hosts
  • Error logs containing file paths or sensitive system information that may indicate successful file exfiltration attempts
  • Application logs showing XML parsing errors with DOCTYPE or ENTITY declarations from untrusted sources
  • Network traffic containing XML payloads with external entity declarations or DTD references

Detection Strategies

  • Implement network monitoring to detect anomalous outbound connections from application servers that process XML
  • Deploy application-level logging to capture and alert on XML documents containing DOCTYPE or ENTITY declarations
  • Use dependency scanning tools to identify applications using vulnerable dom4j versions (before 2.0.3 or 2.1.x before 2.1.3)
  • Monitor for patterns consistent with XXE exploitation attempts in web application firewall (WAF) logs

Monitoring Recommendations

  • Configure alerts for XML parsing exceptions that include external resource references or file paths
  • Implement egress filtering to detect and block unexpected outbound connections from XML processing components
  • Enable verbose logging on XML parsing operations to capture potential exploitation attempts
  • Regularly audit application dependencies for vulnerable dom4j versions using software composition analysis tools

How to Mitigate CVE-2020-10683

Immediate Actions Required

  • Update dom4j to version 2.0.3 or later (for 2.0.x branch) or version 2.1.3 or later (for 2.1.x branch)
  • Review all applications using dom4j and identify those parsing XML from untrusted sources
  • Apply vendor-specific patches from Oracle, NetApp, and other affected vendors through their respective security advisories
  • Implement secure parser configuration as documented in the OWASP XML External Entity Prevention Cheat Sheet

Patch Information

The dom4j project has released patched versions addressing this vulnerability. Version 2.0.3 and version 2.1.3 include security fixes that add proper configuration options for disabling external entities. The GitHub Release Version 2.1.3 contains the security patches. Oracle has addressed this vulnerability across multiple products through their Critical Patch Updates (CPU) from July 2020 through July 2022, as documented in the Oracle July 2020 CPU Security Alerts and subsequent advisories. NetApp has released security advisory NTAP-20200518-0002 for affected products. Ubuntu users should apply USN-4575-1.

Workarounds

  • Configure SAXReader to explicitly disable external entities by setting appropriate features on the underlying XMLReader
  • Implement input validation to reject XML documents containing DOCTYPE declarations before parsing
  • Use application firewalls to filter incoming XML payloads containing external entity declarations
  • Isolate XML processing components in network segments with restricted outbound connectivity
java
// Secure configuration example for dom4j SAXReader
SAXReader reader = new SAXReader();
reader.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
reader.setFeature("http://xml.org/sax/features/external-general-entities", false);
reader.setFeature("http://xml.org/sax/features/external-parameter-entities", false);

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.