Your RSA-2048 keys break in 2030. Find every one of them before attackers do.
☕
☕ Maven
Not in CISA KEV
MEDIUM severity

CVE-2020-27223 — jetty-server

MEDIUMFix: jetty/jetty.project@10e5317

CVE-2020-27223 is a medium-severity (CVSS 5.3) CWE-407 vulnerability in org.eclipse.jetty:jetty-server. 2 public exploit references exist, so weaponization risk is real. A fix is available for org.eclipse.jetty:jetty-server — see the affected versions and patch details below.

DOS vulnerability for Quoted Quality CSV headers

Also known asBIT-nifi-2020-27223BIT-solr-2020-27223BIT-spark-2020-27223GHSA-m394-8rww-3jr7
Published
Updated
Affected
3 pkgs
Patched
3 / 3
Exploits
2 known
Exploitation data as of Oct 9, 2026 · OSV.dev, NVD, FIRST.org (EPSS)

EPSS Exploitation Probability

via FIRST.org ↗
78.0%probability of exploitation in next 30 days
Very High Risk+0.08%
Lower risk than most CVEs100th percentile — riskier than 100% of all scored CVEsHighest risk
12.8%39.6%66.3%93.1%33.8%78.0%Apr 26Aug 26Oct 26

Probability of exploitation in the next 30 days, from FIRST.org EPSS.

How urgent is this, really

CVE-2020-27223 by exploitation likelihood (EPSS) against impact (CVSS). Outside the shaded patch-first corner.

Where this sits among everything scored

Of 385,738 CVEs with a current EPSS score, this one falls in the 50–90% band (highlighted). Counts from FIRST.org, log-scaled.

Real-World Exposure

3 pkgs affected
☕org.eclipse.jetty:jetty-server☕org.eclipse.jetty:jetty-server☕org.eclipse.jetty:jetty-server

Real-time download stats are indexed for npm and PyPI packages. This vulnerability affects Maven packages — download data is not available via public APIs for these ecosystems.

Description

Impact

When Jetty handles a request containing request headers with a large number of “quality” (i.e. q) parameters (such as what are seen on the Accept, Accept-Encoding, and Accept-Language request headers), the server may enter a denial of service (DoS) state due to high CPU usage while sorting the list of values based on their quality values. A single request can easily consume minutes of CPU time before it is even dispatched to the application.

The only features within Jetty that can trigger this behavior are:

  • Default Error Handling - the Accept request header with the QuotedQualityCSV is used to determine what kind of content to send back to the client (html, text, json, xml, etc)
  • StatisticsServlet - uses the Accept request header with the QuotedQualityCSV to determine what kind of content to send back to the client (xml, json, text, html, etc)
  • HttpServletRequest.getLocale() - uses the Accept-Language request header with the QuotedQualityCSV to determine which “preferred” language is returned on this call.
  • HttpservletRequest.getLocales() - is similar to the above, but returns an ordered list of locales based on the quality values on the Accept-Language request header.
  • DefaultServlet - uses the Accept-Encoding request header with the QuotedQualityCSV to determine which kind of pre-compressed content should be sent back for static content (content that is not matched against a url-pattern in your web app)

Versions

QuotedQualityCSV was introduced to Jetty 9.3.9.v20160517 and the bug that introduced the vulnerability was in 9.4.6.v20170531.

Currently, known vulnerable versions include:

  • 9.4.6.v20170531 thru to 9.4.36.v20210114
  • 10.0.0
  • 11.0.0

Workarounds

Quality ordered values are used infrequently by jetty so they can be avoided by:

  • Do not use the default error page/handler.
  • Do not deploy the StatisticsServlet exposed to the network
  • Do not call getLocale API
  • Do not enable precompressed static content in the DefaultServlet

Patches

All patches are available for download from the Eclipse Jetty website at https://www.eclipse.org/jetty/download.php

  • 9.4.37.v20210219 and greater
  • 10.0.1 and greater
  • 11.0.1 and greater

Affected Packages

3 total 3 fixed
EcosystemPackageVulnerable rangeFix
☕Mavenorg.eclipse.jetty:jetty-server≥ 9.4.6&&< 9.4.379.4.37org.eclipse.jetty:jetty-server:9.4.37
☕Mavenorg.eclipse.jetty:jetty-server≥ 10.0.0&&< 10.0.110.0.1org.eclipse.jetty:jetty-server:10.0.1
☕Mavenorg.eclipse.jetty:jetty-server≥ 11.0.0&&< 11.0.111.0.1org.eclipse.jetty:jetty-server:11.0.1

Affected Products

16 products · 23 configurations
Application
nifiapache
1 version
1.13.0
Application
solrapache
1 version
8.8.1
Application
sparkapache
1 version
3.1.1
OS
debian linuxdebian
1 version
10.0
Application
jettyeclipse
≥ 9.4.7 && < 9.4.36
4 versions
9.4.69.4.3610.0.011.0.0
Application
e-series santricity os controllernetapp
≥ 11.0.0 && ≤ 11.70.1
range
Exploits & PoCs
2

Research use only. For defensive security, authorized penetration testing, and academic research only. Never execute exploit code against systems without explicit written authorization.

Detection & mitigation playbook

Open-source dependency
  1. Detect

    Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for org.eclipse.jetty:jetty-server, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.

  2. Fix

    Update org.eclipse.jetty:jetty-server to 9.4.37 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms CVE-2020-27223 is resolved across your whole dependency graph.

  3. Workarounds

    Cap what an attacker can consume: apply request size, rate and timeout limits in front of the affected component, and run it with memory and CPU limits so exhaustion degrades one worker rather than the whole service.

Fixing This On Your OS

If you run this on a Linux distribution, patch through your package manager against the distro's own security advisory below — it tracks the exact backported fix for your release, which can ship on a different timeline (and sometimes a different severity) than the upstream project.

Red HatModerate

In OpenShift Container Platform (OCP), the Hive/Presto/Hadoop components that comprise the OCP Metering stack, ship the vulnerable version of jetty. Since the release of OCP 4.6, the Metering product has been deprecated [1], hence the affected components are marked as wontfix. This may be fixed in the future. [1]…

ProductFixed inAdvisory
Red Hat AMQ 7.8.2jettyRHSA-2021:2689
Red Hat AMQ 7.9.0see advisoryRHSA-2021:3700
Red Hat Fuse 7.10jettyRHSA-2021:5134
Red Hat Integration Camel Quarkus 2see advisoryRHSA-2021:4767
Red Hat Migration Toolkit for Containers 1.4rhmtc/openshift-migration-controller-rhel8:v1.4.6-4RHBA-2021:2854
Red Hat OpenShift Container Platform 3.11jenkins-0:2.289.1.1624365627-1.el7RHSA-2021:2517
Red Hat OpenShift Container Platform 4.5jenkins-0:2.277.3.1623846768-1.el7RHSA-2021:2431
Red Hat OpenShift Container Platform 4.6jenkins-0:2.277.3.1623853726-1.el8RHSA-2021:2499

Frequently Asked Questions

### Impact When Jetty handles a request containing request headers with a large number of “quality” (i.e. q) parameters (such as what are seen on the `Accept`, `Accept-Encoding`, and `Accept-Language` request headers), the server may enter a denial of service (DoS) state due to high CPU usage while sorting the list of values based on their quality values. A single request can easily consume minutes of CPU time before it is even dispatched to the application. The only features within Jetty that can trigger this behavior are: - Default Error Handling - the `Accept` request header with the `Qu
O3 Security · Impact-Aware SCA

Is CVE-2020-27223 in your dependencies?

Find it across Maven, including transitive dependencies.

CVE-2020-27223: jetty-server DoS — Fixed in 9.4.37