7.8
CWE
400 551 755
Advisory Published
Advisory Published
Updated

CVE-2021-28165

First published: Thu Apr 01 2021(Updated: )

### Impact When using SSL/TLS with Jetty, either with HTTP/1.1, HTTP/2, or WebSocket, the server may receive an invalid large (greater than 17408) TLS frame that is incorrectly handled, causing CPU resources to eventually reach 100% usage. ### Workarounds The problem can be worked around by compiling the following class: ```java package org.eclipse.jetty.server.ssl.fix6072; import java.nio.ByteBuffer; import javax.net.ssl.SSLEngine; import javax.net.ssl.SSLEngineResult; import javax.net.ssl.SSLException; import javax.net.ssl.SSLHandshakeException; import org.eclipse.jetty.io.EndPoint; import org.eclipse.jetty.io.ssl.SslConnection; import org.eclipse.jetty.server.Connector; import org.eclipse.jetty.server.SslConnectionFactory; import org.eclipse.jetty.util.BufferUtil; import org.eclipse.jetty.util.annotation.Name; import org.eclipse.jetty.util.ssl.SslContextFactory; public class SpaceCheckingSslConnectionFactory extends SslConnectionFactory { public SpaceCheckingSslConnectionFactory(@Name("sslContextFactory") SslContextFactory factory, @Name("next") String nextProtocol) { super(factory, nextProtocol); } @Override protected SslConnection newSslConnection(Connector connector, EndPoint endPoint, SSLEngine engine) { return new SslConnection(connector.getByteBufferPool(), connector.getExecutor(), endPoint, engine, isDirectBuffersForEncryption(), isDirectBuffersForDecryption()) { @Override protected SSLEngineResult unwrap(SSLEngine sslEngine, ByteBuffer input, ByteBuffer output) throws SSLException { SSLEngineResult results = super.unwrap(sslEngine, input, output); if ((results.getStatus() == SSLEngineResult.Status.BUFFER_UNDERFLOW || results.getStatus() == SSLEngineResult.Status.OK && results.bytesConsumed() == 0 && results.bytesProduced() == 0) && BufferUtil.space(input) == 0) { BufferUtil.clear(input); throw new SSLHandshakeException("Encrypted buffer max length exceeded"); } return results; } }; } } ``` This class can be deployed by: + The resulting class file should be put into a jar file (eg sslfix6072.jar) + The jar file should be made available to the server. For a normal distribution this can be done by putting the file into ${jetty.base}/lib + Copy the file `${jetty.home}/modules/ssl.mod` to `${jetty.base}/modules` + Edit the `${jetty.base}/modules/ssl.mod` file to have the following section: ``` [lib] lib/sslfix6072.jar ``` + Copy the file `${jetty.home}/etc/jetty-https.xml` and`${jetty.home}/etc/jetty-http2.xml` to `${jetty.base}/etc` + Edit files `${jetty.base}/etc/jetty-https.xml` and `${jetty.base}/etc/jetty-http2.xml`, changing any reference of `org.eclipse.jetty.server.SslConnectionFactory` to `org.eclipse.jetty.server.ssl.fix6072.SpaceCheckingSslConnectionFactory`. For example: ```xml <Call name="addIfAbsentConnectionFactory"> <Arg> <New class="org.eclipse.jetty.server.ssl.fix6072.SpaceCheckingSslConnectionFactory"> <Arg name="next">http/1.1</Arg> <Arg name="sslContextFactory"><Ref refid="sslContextFactory"/></Arg> </New> </Arg> </Call> ``` + Restart Jetty

Credit: emo@eclipse.org emo@eclipse.org

Affected SoftwareAffected VersionHow to fix
maven/org.eclipse.jetty:jetty-server>=11.0.0<11.0.2
11.0.2
maven/org.eclipse.jetty:jetty-server>=10.0.0<10.0.2
10.0.2
maven/org.eclipse.jetty:jetty-server>=7.2.2<9.4.39
9.4.39
redhat/rh-eclipse-jetty<0:9.4.40-1.1.el7_9
0:9.4.40-1.1.el7_9
redhat/jenkins<0:2.277.3.1620393611-1.el8
0:2.277.3.1620393611-1.el8
redhat/runc<0:1.0.0-95.rhaos4.8.gitcd80260.el8
0:1.0.0-95.rhaos4.8.gitcd80260.el8
IBM Cognos Command Center<=10.2.4.1
debian/jetty9
9.4.16-0+deb10u1
9.4.50-4+deb10u1
9.4.39-3+deb11u2
9.4.50-4+deb11u1
9.4.50-4+deb12u2
9.4.53-1
redhat/jetty<9.4.39
9.4.39
redhat/jetty<10.0.2
10.0.2
redhat/jetty<11.0.2
11.0.2
Eclipse Jetty>=7.2.2<9.4.39
Eclipse Jetty>=10.0.0<10.0.2
Eclipse Jetty>=11.0.0<11.0.2
Oracle Autovue For Agile Product Lifecycle Management=21.0.2
Oracle Communications Cloud Native Core Policy=1.14.0
Oracle Communications Element Manager=8.2.2
Oracle Communications Services Gatekeeper=7.0
Oracle Communications Session Report Manager>=8.0.0.0<=8.2.4.0
Oracle Communications Session Route Manager>=8.0.0.0<=8.2.4.0
Oracle REST Data Services<21.3
Oracle Siebel Core - Automation<=21.9
Jenkins Jenkins<2.277.3
Jenkins Jenkins<2.286
NetApp Cloud Manager<3.9.8
Netapp E-series Performance Analyzer<3.0
NetApp E-Series SANtricity OS Controller>=11.0.0<11.70.1
Netapp E-series Santricity Storage Vcenter<1.10
Netapp E-series Santricity Web Services Web Services Proxy<5.1
Netapp Ontap Tools Vmware Vsphere<9.10
Netapp Santricity Cloud Connector
NetApp SANtricity Web Services Proxy<5.1
Netapp Snapcenter<4.6
Netapp Storage Replication Adapter For Clustered Data Ontap Vmware Vsphere<9.10
Netapp Vasa Provider For Clustered Data Ontap<9.10

Never miss a vulnerability like this again

Sign up to SecAlerts for real-time vulnerability data matched to your software, aggregated from hundreds of sources.

Reference Links

Frequently Asked Questions

  • What is the vulnerability ID?

    The vulnerability ID is CVE-2021-28165.

  • What is the severity of CVE-2021-28165?

    The severity of CVE-2021-28165 is high (7.5).

  • Which software is affected by CVE-2021-28165?

    Jetty server versions 7.2.2 to 9.4.38, 10.0.0.alpha0 to 10.0.1, and 11.0.0.alpha0 to 11.0.1 are affected by CVE-2021-28165.

  • How can I fix CVE-2021-28165?

    To fix CVE-2021-28165, you should update Jetty server to version 9.4.39, 10.0.2, or 11.0.2.

  • Where can I find more information about CVE-2021-28165?

    You can find more information about CVE-2021-28165 at the following references: - [GitHub Security Advisory](https://github.com/eclipse/jetty.project/security/advisories/GHSA-26vr-8j45-3r4w) - [NIST NVD](https://nvd.nist.gov/vuln/detail/CVE-2021-28165) - [Apache ZooKeeper Mailing List](https://lists.apache.org/thread.html/r002258611ed0c35b82b839d284b43db9dcdec120db8afc1c993137dc@%3Cnotifications.zookeeper.apache.org%3E)

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2024 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203