Every CVE Search/ Get API key

CVE-2019-17638

Eclipse Jetty XmlParser allows arbitrary DOCTYPE declarations

9.4 CriticalPublic exploitFix available

In Eclipse Jetty, versions 9.4.27.v20200227 to 9.4.29.v20200521, in case of too large response headers, Jetty throws an exception to produce an HTTP 431 error. When this happens, the ByteBuffer containing the HTTP response headers is released back to the ByteBufferPool twice. Because of this double release, two threads can acquire the same ByteBuffer from the pool and while thread1 is about to use the ByteBuffer to write response1 data, thread2 fills the ByteBuffer with other data. Thread1 then proceeds to write the buffer that now contains different data. This results in client1, which issued request1 seeing data from another request or response which could contain sensitive data belonging to client2 (HTTP session ids, authentication credentials, etc.). If the Jetty version cannot be upgraded, the vulnerability can be significantly reduced by configuring a responseHeaderSize significantly larger than the requestHeaderSize (12KB responseHeaderSize and 8KB requestHeaderSize).

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
Low
Privileges needed
None
User interaction
None

What an attacker can affect

Confidentiality
High
Integrity
High
Availability
Low

Exploit likelihood

11.1%Up 7.7 points since Apr 14, 2021
90%50%10%1%

What each source reports

NVD Score used 9.4

In Eclipse Jetty, versions 9.4.27.v20200227 to 9.4.29.v20200521, in case of too large response headers, Jetty throws an exception to produce an HTTP 431 error. When this happens, the ByteBuffer containing the HTTP response headers is released back to the ByteBufferPool twice. Because of this double release, two threads can acquire the same ByteBuffer from the pool and while thread1 is about to use the ByteBuffer to write response1 data, thread2 fills the ByteBuffer with other data. Thread1 then proceeds to write the buffer that now contains different data. This results in client1, which issued request1 seeing data from another request or response which could contain sensitive data belonging to client2 (HTTP session ids, authentication credentials, etc.). If the Jetty version cannot be upgraded, the vulnerability can be significantly reduced by configuring a responseHeaderSize significantly larger than the requestHeaderSize (12KB responseHeaderSize and 8KB requestHeaderSize).

Record
CVE-2019-17638
CVSS 3.1
9.4 CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:L
CVSS 2.0
7.5 HighAV:N/AC:L/Au:N/C:P/I:P/A:P
Weakness
CWE-672, CWE-675
Updated
2026-11-02
CVE List No score

In Eclipse Jetty, versions 9.4.27.v20200227 to 9.4.29.v20200521, in case of too large response headers, Jetty throws an exception to produce an HTTP 431 error. When this happens, the ByteBuffer containing the HTTP response headers is released back to the ByteBufferPool twice. Because of this double release, two threads can acquire the same ByteBuffer from the pool and while thread1 is about to use the ByteBuffer to write response1 data, thread2 fills the ByteBuffer with other data. Thread1 then proceeds to write the buffer that now contains different data. This results in client1, which issued request1 seeing data from another request or response which could contain sensitive data belonging to client2 (HTTP session ids, authentication credentials, etc.). If the Jetty version cannot be upgraded, the vulnerability can be significantly reduced by configuring a responseHeaderSize significantly larger than the requestHeaderSize (12KB responseHeaderSize and 8KB requestHeaderSize).

Record
CVE-2019-17638
Weakness
CWE-672, CWE-675
Updated
2026-11-02
EUVDEUVD-2020-0652 No score

In Eclipse Jetty, versions 9.4.27.v20200227 to 9.4.29.v20200521, in case of too large response headers, Jetty throws an exception to produce an HTTP 431 error. When this happens, the ByteBuffer containing the HTTP response headers is released back to the ByteBufferPool twice. Because of this double release, two threads can acquire the same ByteBuffer from the pool and while thread1 is about to use the ByteBuffer to write response1 data, thread2 fills the ByteBuffer with other data. Thread1 then proceeds to write the buffer that now contains different data. This results in client1, which issued request1 seeing data from another request or response which could contain sensitive data belonging to client2 (HTTP session ids, authentication credentials, etc.). If the Jetty version cannot be upgraded, the vulnerability can be significantly reduced by configuring a responseHeaderSize significantly larger than the requestHeaderSize (12KB responseHeaderSize and 8KB requestHeaderSize).

Record
EUVD-2020-0652
Updated
2026-11-03
GitHub AdvisoriesGHSA-58qw-p7qm-5rvh 3.9

Eclipse Jetty XmlParser allows arbitrary DOCTYPE declarations

From the reporter

XmlParser is vulnerable to XML external entity (XXE) vulnerability. XmlParser is being used when parsing Jetty’s xml configuration files. An attacker might exploit this vulnerability in order to achieve SSRF or cause a denial of service. One possible scenario is importing a (remote) malicious WAR into a Jetty’s server, while the WAR includes a malicious web.xml.

Impact

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 malicious web application and potentially hostile web applications should only be run on an isolated virtualisation.

Thus this is not considered a vulnerability of the Jetty server itself, as any such usage of the jetty XmlParser is equally vulnerable as a 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 local files if the XML results are accessible remotely.

Patches

Ability to configure the SAXParserFactory to fit the needs of your particular XML parser implementation have been merged as part of PR #10067

Workarounds

Don't use Jetty's XmlParser to parse data from users.

Record
GHSA-58qw-p7qm-5rvh
CVSS 3.1
3.9 LowCVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:L/I:L/A:L
Weakness
CWE-611
Updated
2026-11-02
GitHub AdvisoriesGHSA-x3rh-m7vp-35f2 9.4

Operation on a Resource after Expiration or Release in Jetty Server

In Eclipse Jetty, versions 9.4.27.v20200227 to 9.4.29.v20200521, in case of too large response headers, Jetty throws an exception to produce an HTTP 431 error. When this happens, the ByteBuffer containing the HTTP response headers is released back to the ByteBufferPool twice. Because of this double release, two threads can acquire the same ByteBuffer from the pool and while thread1 is about to use the ByteBuffer to write response1 data, thread2 fills the ByteBuffer with response2 data. Thread1 then proceeds to write the buffer that now contains response2 data. This results in client1, which issued request1 and expects responses, to see response2 which could contain sensitive data belonging to client2 (HTTP session ids, authentication credentials, etc.).

Record
GHSA-x3rh-m7vp-35f2
CVSS 3.1
9.4 CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:L
Weakness
CWE-672, CWE-675
Updated
2026-11-02
OSV 9.4

In Eclipse Jetty, versions 9.4.27.v20200227 to 9.4.29.v20200521, in case of too large response headers, Jetty throws an exception to produce an HTTP 431 error. When this happens, the ByteBuffer containing the HTTP response headers is released back to the ByteBufferPool twice. Because of this double release, two threads can acquire the same ByteBuffer from the pool and while thread1 is about to use the ByteBuffer to write response1 data, thread2 fills the ByteBuffer with other data. Thread1 then proceeds to write the buffer that now contains different data. This results in client1, which issued request1 seeing data from another request or response which could contain sensitive data belonging to client2 (HTTP session ids, authentication credentials, etc.). If the Jetty version cannot be upgraded, the vulnerability can be significantly reduced by configuring a responseHeaderSize significantly larger than the requestHeaderSize (12KB responseHeaderSize and 8KB requestHeaderSize).

Record
CVE-2019-17638
CVSS 3.1
9.4 CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:L
Updated
2026-11-02
Show 8 moreShow less
OSVDEBIAN-CVE-2019-17638 9.4

In Eclipse Jetty, versions 9.4.27.v20200227 to 9.4.29.v20200521, in case of too large response headers, Jetty throws an exception to produce an HTTP 431 error. When this happens, the ByteBuffer containing the HTTP response headers is released back to the ByteBufferPool twice. Because of this double release, two threads can acquire the same ByteBuffer from the pool and while thread1 is about to use the ByteBuffer to write response1 data, thread2 fills the ByteBuffer with other data. Thread1 then proceeds to write the buffer that now contains different data. This results in client1, which issued request1 seeing data from another request or response which could contain sensitive data belonging to client2 (HTTP session ids, authentication credentials, etc.). If the Jetty version cannot be upgraded, the vulnerability can be significantly reduced by configuring a responseHeaderSize significantly larger than the requestHeaderSize (12KB responseHeaderSize and 8KB requestHeaderSize).

Record
DEBIAN-CVE-2019-17638
CVSS 3.1
9.4 CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:L
Updated
2026-11-02
OSVGHSA-58qw-p7qm-5rvh 3.9

Eclipse Jetty XmlParser allows arbitrary DOCTYPE declarations

From the reporter

XmlParser is vulnerable to XML external entity (XXE) vulnerability. XmlParser is being used when parsing Jetty’s xml configuration files. An attacker might exploit this vulnerability in order to achieve SSRF or cause a denial of service. One possible scenario is importing a (remote) malicious WAR into a Jetty’s server, while the WAR includes a malicious web.xml.

Impact

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 malicious web application and potentially hostile web applications should only be run on an isolated virtualisation.

Thus this is not considered a vulnerability of the Jetty server itself, as any such usage of the jetty XmlParser is equally vulnerable as a 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 local files if the XML results are accessible remotely.

Patches

Ability to configure the SAXParserFactory to fit the needs of your particular XML parser implementation have been merged as part of PR #10067

Workarounds

Don't use Jetty's XmlParser to parse data from users.

Record
GHSA-58qw-p7qm-5rvh
CVSS 3.1
3.9 LowCVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:L/I:L/A:L
Weakness
CWE-611
Updated
2026-11-02
OSVGHSA-x3rh-m7vp-35f2 9.4

Operation on a Resource after Expiration or Release in Jetty Server

In Eclipse Jetty, versions 9.4.27.v20200227 to 9.4.29.v20200521, in case of too large response headers, Jetty throws an exception to produce an HTTP 431 error. When this happens, the ByteBuffer containing the HTTP response headers is released back to the ByteBufferPool twice. Because of this double release, two threads can acquire the same ByteBuffer from the pool and while thread1 is about to use the ByteBuffer to write response1 data, thread2 fills the ByteBuffer with response2 data. Thread1 then proceeds to write the buffer that now contains response2 data. This results in client1, which issued request1 and expects responses, to see response2 which could contain sensitive data belonging to client2 (HTTP session ids, authentication credentials, etc.).

Record
GHSA-x3rh-m7vp-35f2
CVSS 3.1
9.4 CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:L
Weakness
CWE-672, CWE-675
Updated
2026-11-02
OSVRHSA-2020:3808 8.0

Red Hat Security Advisory: OpenShift Container Platform 4.3.38 jenkins and openshift security update

Record
RHSA-2020:3808
CVSS 3.1
8.0 HighCVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H
Updated
2026-11-02
OSVRHSA-2020:3841 7.7

Red Hat Security Advisory: OpenShift Container Platform 4.5.13 jenkins security update

Record
RHSA-2020:3841
CVSS 3.1
7.7 HighCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:L
Updated
2026-11-02
OSVRHSA-2020:4223 7.7

Red Hat Security Advisory: OpenShift Container Platform 3.11.306 jenkins security update

Record
RHSA-2020:4223
CVSS 3.1
7.7 HighCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:L
Updated
2026-11-02
OSVUBUNTU-CVE-2019-17638 9.4

In Eclipse Jetty, versions 9.4.27.v20200227 to 9.4.29.v20200521, in case of too large response headers, Jetty throws an exception to produce an HTTP 431 error. When this happens, the ByteBuffer containing the HTTP response headers is released back to the ByteBufferPool twice. Because of this double release, two threads can acquire the same ByteBuffer from the pool and while thread1 is about to use the ByteBuffer to write response1 data, thread2 fills the ByteBuffer with other data. Thread1 then proceeds to write the buffer that now contains different data. This results in client1, which issued request1 seeing data from another request or response which could contain sensitive data belonging to client2 (HTTP session ids, authentication credentials, etc.). If the Jetty version cannot be upgraded, the vulnerability can be significantly reduced by configuring a responseHeaderSize significantly larger than the requestHeaderSize (12KB responseHeaderSize and 8KB requestHeaderSize).

Record
UBUNTU-CVE-2019-17638
CVSS 3.1
9.4 CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:L
Updated
2026-11-02
OSVCLSA-2026-1780361408 No score

TuxCare security update for org.eclipse.jetty (12 CVEs)

TuxCare rebuilt 4 org.eclipse.jetty packages to address 12 CVEs. Fixed in 9.2.16.v20160414-tuxcare.1.

Record
CLSA-2026-1780361408
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
org.eclipse.jetty:jetty-xml
Maven
11.0.0-alpha0 to 11.0.15
11.0.16
org.eclipse.jetty:jetty-xml
Maven
10.0.0-alpha0 to 10.0.15
10.0.16
org.eclipse.jetty:jetty-xml
Maven
12.0.0.alpha0 to 12.0.0.beta4
12.0.0
org.eclipse.jetty:jetty-xml
Maven
through 9.4.51
9.4.52.v20230823
org.eclipse.jetty:jetty-server
Maven
9.4.27 to 9.4.30.v20200610
9.4.30.v20200611
org.eclipse.jetty:jetty-server
TuxCare:Maven
9.2.16.v20160414 up to 9.2.16.v20160414-tuxcare.1
9.2.16.v20160414-tuxcare.1
org.eclipse.jetty:jetty-servlets
TuxCare:Maven
9.2.16.v20160414 up to 9.2.16.v20160414-tuxcare.1
9.2.16.v20160414-tuxcare.1
org.eclipse.jetty:jetty-webapp
TuxCare:Maven
9.2.16.v20160414 up to 9.2.16.v20160414-tuxcare.1
9.2.16.v20160414-tuxcare.1
org.eclipse.jetty:jetty-xml
TuxCare:Maven
9.2.16.v20160414 up to 9.2.16.v20160414-tuxcare.1
9.2.16.v20160414-tuxcare.1
jetty9
Debian:12
before 9.4.31-1
9.4.31-1
Show 12 moreShow less
Affected packages
PackageAffectedFixed
jetty9
Debian:13
before 9.4.31-1
9.4.31-1
jetty9
Debian:14
before 9.4.31-1
9.4.31-1
org.eclipse.jetty:jetty-xml
Maven
10.0.0-alpha0 up to 10.0.16, plus listed versions
10.0.010.0.0.alpha110.0.0.alpha210.0.0.beta010.0.0.beta1
Show 17 moreShow less
10.0.0.beta210.0.0.beta310.0.110.0.1010.0.1110.0.1210.0.1310.0.1410.0.1510.0.210.0.310.0.410.0.510.0.610.0.710.0.810.0.9
10.0.16
org.eclipse.jetty:jetty-xml
Maven
11.0.0-alpha0 up to 11.0.16, plus listed versions
11.0.011.0.0.beta111.0.0.beta211.0.0.beta311.0.1
Show 14 moreShow less
11.0.1011.0.1111.0.1211.0.1311.0.1411.0.1511.0.211.0.311.0.411.0.511.0.611.0.711.0.811.0.9
11.0.16
org.eclipse.jetty:jetty-xml
Maven
12.0.0.alpha0 up to 12.0.0, plus listed versions
12.0.0.alpha112.0.0.alpha212.0.0.alpha312.0.0.beta012.0.0.beta112.0.0.beta212.0.0.beta312.0.0.beta4
12.0.0
org.eclipse.jetty:jetty-xml
Maven
before 9.4.52.v20230823, plus listed versions
7.0.0.M07.0.0.M17.0.0.M27.0.0.M37.0.0.M4
Show 45 moreShow less
7.0.0.RC07.0.0.RC17.0.0.RC27.0.0.RC37.0.0.RC47.0.0.RC57.0.0.RC67.0.0.v200910057.0.1.v200911257.0.2.RC07.0.2.v201003317.1.0.RC07.1.0.RC17.1.0.v201005057.1.1.v201005177.1.2.v201005237.1.3.v201005267.1.4.v201006107.1.5.v201007057.1.6.v201007157.2.0.RC07.2.0.v201010207.2.1.v201011117.2.2.v201012057.3.0.v201102037.3.1.v201103077.4.0.RC07.4.0.v201104147.4.1.v201105137.4.2.v201105267.4.3.v201107017.4.4.v201107077.4.5.v201107257.5.0.RC07.5.0.RC17.5.0.RC27.5.0.v201109017.5.1.v201109087.5.2.v201110067.5.3.v201110117.5.4.v201110247.6.0.RC07.6.0.RC17.6.0.RC27.6.0.RC3
9.4.52.v20230823
org.eclipse.jetty:jetty-server
Maven
9.4.27 up to 9.4.30.v20200611, plus listed versions
9.4.27.v202002279.4.28.v202004089.4.29.v20200521
9.4.30.v20200611
jenkins
Red Hat:openshift:4.3::el7
before 0:2.235.5.1600415514-1.el7
0:2.235.5.1600415514-1.el7
openshift
Red Hat:openshift:4.3::el8
before 0:4.3.37-202009120213.p0.git.0.dffefe4.el8
0:4.3.37-202009120213.p0.git.0.dffefe4.el8
openshift-hyperkube
Red Hat:openshift:4.3::el8
before 0:4.3.37-202009120213.p0.git.0.dffefe4.el8
0:4.3.37-202009120213.p0.git.0.dffefe4.el8
jenkins
Red Hat:openshift:4.5::el7
before 0:2.235.5.1600414805-1.el7
0:2.235.5.1600414805-1.el7
jenkins
Red Hat:openshift:3.11::el7
before 0:2.235.5.1600415953-1.el7
0:2.235.5.1600415953-1.el7

Public exploits

Links only. Every CVE stores no exploit code.

Public exploits
SourceLinkDate
PoC in GitHubforse01/CVE-2019-17638-Jetty2021-02-04

History

History
RecordedChangedSources
affected
aliases, productsEUVD
first indexedCVE List, GitHub Advisories, NVD, OSV, PoC in GitHub

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2019-17638 is a critical vulnerability (CVSS 9.4) in Eclipse Jetty, published July 9, 2020. Public exploit code exists. EPSS puts the chance of exploitation in the next 30 days at 11.1%, the 95th percentile. Fixed in org.eclipse.jetty:jetty-xml 11.0.16.

References

Show 85 moreShow less
This page doesn't list everything

Left out here: 249 versions. The JSON record has them.

MoveEnter Open