XML External Entity (XXE) Injection Affecting org.eclipse.jetty:jetty-xml package, versions [,9.4.52.v20230823) [10.0.0.alpha1,10.0.16) [11.0.0-alpha0,11.0.16) [12.0.0.beta0,12.0.0)


0.0
low

Snyk CVSS

    Attack Complexity High
    Privileges Required High

Do your applications use this vulnerable package?

In a few clicks we can analyze your entire application and see what components are vulnerable in your application, and suggest you quick fixes.

Test your applications
  • Snyk ID SNYK-JAVA-ORGECLIPSEJETTY-5769685
  • published 11 Jul 2023
  • disclosed 10 Jul 2023
  • credit Unknown

Introduced: 10 Jul 2023

CVE NOT AVAILABLE CWE-611 Open this link in a new tab

How to fix?

Upgrade org.eclipse.jetty:jetty-xml to version 9.4.52.v20230823, 10.0.16, 11.0.16, 12.0.0 or higher.

Overview

Affected versions of this package are vulnerable to XML External Entity (XXE) Injection via the XmlParser when parsing Jetty’s XML configuration files by importing a (remote) malicious WAR into Jetty’s server. Exploiting this vulnerability is possible when the WAR includes a malicious web.xml.

Note:

There are no circumstances in a normally deployed Jetty server where potentially hostile XML is given to the XmlParser class without the attacker already having arbitrary access to the server. I.e., in order to exploit XmlParser, the attacker would already have the ability to deploy and execute hostile code. Specifically, Jetty has no protection against a malicious web application, and potentially hostile web applications should only be run on isolated virtualization.

Thus this is not considered a vulnerability of the Jetty server itself, as any such usage of the Jetty XmlParser is equally vulnerable as direct usage of the JVM-supplied SAX parser. No CVE will be allocated to this advisory.

However, any direct usage of the XmlParser class by an application may be vulnerable. The impact would greatly depend on how the application uses XmlParser, but it could be a denial of service due to large entity expansion or possibly the revealing of local files if the XML results are accessible remotely.

Workaround

Users unable to upgrade to the fixed version should not use XmlParser to parse data from users.

Details

XXE Injection is a type of attack against an application that parses XML input. XML is a markup language that defines a set of rules for encoding documents in a format that is both human-readable and machine-readable. By default, many XML processors allow specification of an external entity, a URI that is dereferenced and evaluated during XML processing. When an XML document is being parsed, the parser can make a request and include the content at the specified URI inside of the XML document.

Attacks can include disclosing local files, which may contain sensitive data such as passwords or private user data, using file: schemes or relative paths in the system identifier.

For example, below is a sample XML document, containing an XML element- username.

<xml>
<?xml version="1.0" encoding="ISO-8859-1"?>
   <username>John</username>
</xml>

An external XML entity - xxe, is defined using a system identifier and present within a DOCTYPE header. These entities can access local or remote content. For example the below code contains an external XML entity that would fetch the content of /etc/passwd and display it to the user rendered by username.

<xml>
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE foo [
   <!ENTITY xxe SYSTEM "file:///etc/passwd" >]>
   <username>&xxe;</username>
</xml>

Other XXE Injection attacks can access local resources that may not stop returning data, possibly impacting application availability and leading to Denial of Service.