Know every vulnerabilitybefore it knows you.
DevGuard continuously monitors your dependencies and alerts you when CVEs like this one affect your stack — with real-time threat intelligence built for developers.
GHSA-m394-8rww-3jr7
No affected components available
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
Acceptrequest header with theQuotedQualityCSVis used to determine what kind of content to send back to the client (html, text, json, xml, etc) StatisticsServlet- uses theAcceptrequest header with theQuotedQualityCSVto determine what kind of content to send back to the client (xml, json, text, html, etc)HttpServletRequest.getLocale()- uses theAccept-Languagerequest header with theQuotedQualityCSVto 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 theAccept-Languagerequest header.DefaultServlet- uses theAccept-Encodingrequest header with theQuotedQualityCSVto 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
StatisticsServletexposed to the network - Do not call
getLocaleAPI - 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
The vulnerability can be exploited over the network without needing physical access. It is easy for an attacker to exploit this vulnerability. An attacker does not need any special privileges or access rights. No user interaction is needed for the attacker to exploit this vulnerability. The impact is confined to the system where the vulnerability exists. There is a low impact on the availability of the system.
Exploitation attempts have been detected. Elevated vigilance and prompt remediation are advised.
The exploit probability is very high. The vulnerability is very likely to be exploited in the next 30 days.
We did not find any exploit available. Neither in GitHub repositories nor in the Exploit-Database.
Browse More
Continuously monitor your dependencies and get alerted when vulnerabilities like this one affect your stack.
Checkout DevGuard