CWE
444 79
Advisory Published
CVE Published
Advisory Published
Updated

CVE-2021-21295: Possible request smuggling in HTTP/2 due missing validation

First published: Tue Mar 09 2021(Updated: )

### Impact If a Content-Length header is present in the original HTTP/2 request, the field is not validated by `Http2MultiplexHandler` as it is propagated up. This is fine as long as the request is not proxied through as HTTP/1.1. If the request comes in as an HTTP/2 stream, gets converted into the HTTP/1.1 domain objects (`HttpRequest`, `HttpContent`, etc.) via `Http2StreamFrameToHttpObjectCodec `and then sent up to the child channel's pipeline and proxied through a remote peer as HTTP/1.1 this may result in request smuggling. In a proxy case, users may assume the content-length is validated somehow, which is not the case. If the request is forwarded to a backend channel that is a HTTP/1.1 connection, the Content-Length now has meaning and needs to be checked. An attacker can smuggle requests inside the body as it gets downgraded from HTTP/2 to HTTP/1.1. A sample attack request looks like: ``` POST / HTTP/2 :authority:: externaldomain.com Content-Length: 4 asdfGET /evilRedirect HTTP/1.1 Host: internaldomain.com ``` Users are only affected if all of this is `true`: * `HTTP2MultiplexCodec` or `Http2FrameCodec` is used * `Http2StreamFrameToHttpObjectCodec` is used to convert to HTTP/1.1 objects * These HTTP/1.1 objects are forwarded to another remote peer. ### Patches This has been patched in 4.1.60.Final ### Workarounds The user can do the validation by themselves by implementing a custom `ChannelInboundHandler` that is put in the `ChannelPipeline` behind `Http2StreamFrameToHttpObjectCodec`. ### References Related change to workaround the problem: https://github.com/Netflix/zuul/pull/980

Credit: security-advisories@github.com security-advisories@github.com

Affected SoftwareAffected VersionHow to fix
maven/io.netty:netty<4.0.0
maven/org.jboss.netty:netty<4.0.0
maven/io.netty:netty-codec-http2>=4.0.0<4.1.60.Final
4.1.60.Final
redhat/qpid-proton<0:0.33.0-6.el7_9
0:0.33.0-6.el7_9
redhat/qpid-proton<0:0.33.0-8.el8
0:0.33.0-8.el8
redhat/eap7-artemis-wildfly-integration<0:1.0.4-1.redhat_00001.1.el6ea
0:1.0.4-1.redhat_00001.1.el6ea
redhat/eap7-bouncycastle<0:1.68.0-2.redhat_00005.1.el6ea
0:1.68.0-2.redhat_00005.1.el6ea
redhat/eap7-hal-console<0:3.2.14-1.Final_redhat_00001.1.el6ea
0:3.2.14-1.Final_redhat_00001.1.el6ea
redhat/eap7-infinispan<0:9.4.22-3.Final_redhat_00001.1.el6ea
0:9.4.22-3.Final_redhat_00001.1.el6ea
redhat/eap7-ironjacamar<0:1.4.30-1.Final_redhat_00001.1.el6ea
0:1.4.30-1.Final_redhat_00001.1.el6ea
redhat/eap7-jboss-genericjms<0:2.0.9-1.Final_redhat_00001.1.el6ea
0:2.0.9-1.Final_redhat_00001.1.el6ea
redhat/eap7-jboss-marshalling<0:2.0.11-1.Final_redhat_00001.1.el6ea
0:2.0.11-1.Final_redhat_00001.1.el6ea
redhat/eap7-jboss-server-migration<0:1.7.2-6.Final_redhat_00007.1.el6ea
0:1.7.2-6.Final_redhat_00007.1.el6ea
redhat/eap7-jboss-weld<3.1-api-0:3.1.0-6.SP3_redhat_00001.1.el6ea
3.1-api-0:3.1.0-6.SP3_redhat_00001.1.el6ea
redhat/eap7-jgroups-kubernetes<0:1.0.16-1.Final_redhat_00001.1.el6ea
0:1.0.16-1.Final_redhat_00001.1.el6ea
redhat/eap7-netty<0:4.1.60-1.Final_redhat_00001.1.el6ea
0:4.1.60-1.Final_redhat_00001.1.el6ea
redhat/eap7-resteasy<0:3.11.4-1.Final_redhat_00001.1.el6ea
0:3.11.4-1.Final_redhat_00001.1.el6ea
redhat/eap7-undertow<0:2.0.35-1.SP1_redhat_00001.1.el6ea
0:2.0.35-1.SP1_redhat_00001.1.el6ea
redhat/eap7-velocity<0:2.3.0-1.redhat_00001.1.el6ea
0:2.3.0-1.redhat_00001.1.el6ea
redhat/eap7-weld-core<0:3.1.6-1.Final_redhat_00001.1.el6ea
0:3.1.6-1.Final_redhat_00001.1.el6ea
redhat/eap7-wildfly<0:7.3.7-1.GA_redhat_00002.1.el6ea
0:7.3.7-1.GA_redhat_00002.1.el6ea
redhat/eap7-wildfly-elytron<0:1.10.12-1.Final_redhat_00001.1.el6ea
0:1.10.12-1.Final_redhat_00001.1.el6ea
redhat/eap7-wildfly-http-client<0:1.0.26-1.Final_redhat_00001.1.el6ea
0:1.0.26-1.Final_redhat_00001.1.el6ea
redhat/eap7-xalan-j2<0:2.7.1-36.redhat_00013.1.el6ea
0:2.7.1-36.redhat_00013.1.el6ea
redhat/eap7-yasson<0:1.0.9-1.redhat_00001.1.el6ea
0:1.0.9-1.redhat_00001.1.el6ea
redhat/eap7-artemis-wildfly-integration<0:1.0.4-1.redhat_00001.1.el7ea
0:1.0.4-1.redhat_00001.1.el7ea
redhat/eap7-bouncycastle<0:1.68.0-2.redhat_00005.1.el7ea
0:1.68.0-2.redhat_00005.1.el7ea
redhat/eap7-hal-console<0:3.2.14-1.Final_redhat_00001.1.el7ea
0:3.2.14-1.Final_redhat_00001.1.el7ea
redhat/eap7-infinispan<0:9.4.22-3.Final_redhat_00001.1.el7ea
0:9.4.22-3.Final_redhat_00001.1.el7ea
redhat/eap7-ironjacamar<0:1.4.30-1.Final_redhat_00001.1.el7ea
0:1.4.30-1.Final_redhat_00001.1.el7ea
redhat/eap7-jboss-genericjms<0:2.0.9-1.Final_redhat_00001.1.el7ea
0:2.0.9-1.Final_redhat_00001.1.el7ea
redhat/eap7-jboss-marshalling<0:2.0.11-1.Final_redhat_00001.1.el7ea
0:2.0.11-1.Final_redhat_00001.1.el7ea
redhat/eap7-jboss-server-migration<0:1.7.2-6.Final_redhat_00007.1.el7ea
0:1.7.2-6.Final_redhat_00007.1.el7ea
redhat/eap7-jboss-weld<3.1-api-0:3.1.0-6.SP3_redhat_00001.1.el7ea
3.1-api-0:3.1.0-6.SP3_redhat_00001.1.el7ea
redhat/eap7-jgroups-kubernetes<0:1.0.16-1.Final_redhat_00001.1.el7ea
0:1.0.16-1.Final_redhat_00001.1.el7ea
redhat/eap7-netty<0:4.1.60-1.Final_redhat_00001.1.el7ea
0:4.1.60-1.Final_redhat_00001.1.el7ea
redhat/eap7-resteasy<0:3.11.4-1.Final_redhat_00001.1.el7ea
0:3.11.4-1.Final_redhat_00001.1.el7ea
redhat/eap7-undertow<0:2.0.35-1.SP1_redhat_00001.1.el7ea
0:2.0.35-1.SP1_redhat_00001.1.el7ea
redhat/eap7-velocity<0:2.3.0-1.redhat_00001.1.el7ea
0:2.3.0-1.redhat_00001.1.el7ea
redhat/eap7-weld-core<0:3.1.6-1.Final_redhat_00001.1.el7ea
0:3.1.6-1.Final_redhat_00001.1.el7ea
redhat/eap7-wildfly<0:7.3.7-1.GA_redhat_00002.1.el7ea
0:7.3.7-1.GA_redhat_00002.1.el7ea
redhat/eap7-wildfly-elytron<0:1.10.12-1.Final_redhat_00001.1.el7ea
0:1.10.12-1.Final_redhat_00001.1.el7ea
redhat/eap7-wildfly-http-client<0:1.0.26-1.Final_redhat_00001.1.el7ea
0:1.0.26-1.Final_redhat_00001.1.el7ea
redhat/eap7-xalan-j2<0:2.7.1-36.redhat_00013.1.el7ea
0:2.7.1-36.redhat_00013.1.el7ea
redhat/eap7-yasson<0:1.0.9-1.redhat_00001.1.el7ea
0:1.0.9-1.redhat_00001.1.el7ea
redhat/eap7-artemis-wildfly-integration<0:1.0.4-1.redhat_00001.1.el8ea
0:1.0.4-1.redhat_00001.1.el8ea
redhat/eap7-bouncycastle<0:1.68.0-2.redhat_00005.1.el8ea
0:1.68.0-2.redhat_00005.1.el8ea
redhat/eap7-hal-console<0:3.2.14-1.Final_redhat_00001.1.el8ea
0:3.2.14-1.Final_redhat_00001.1.el8ea
redhat/eap7-infinispan<0:9.4.22-3.Final_redhat_00001.1.el8ea
0:9.4.22-3.Final_redhat_00001.1.el8ea
redhat/eap7-ironjacamar<0:1.4.30-1.Final_redhat_00001.1.el8ea
0:1.4.30-1.Final_redhat_00001.1.el8ea
redhat/eap7-jboss-genericjms<0:2.0.9-1.Final_redhat_00001.1.el8ea
0:2.0.9-1.Final_redhat_00001.1.el8ea
redhat/eap7-jboss-marshalling<0:2.0.11-1.Final_redhat_00001.1.el8ea
0:2.0.11-1.Final_redhat_00001.1.el8ea
redhat/eap7-jboss-server-migration<0:1.7.2-6.Final_redhat_00007.1.el8ea
0:1.7.2-6.Final_redhat_00007.1.el8ea
redhat/eap7-jboss-weld<3.1-api-0:3.1.0-6.SP3_redhat_00001.1.el8ea
3.1-api-0:3.1.0-6.SP3_redhat_00001.1.el8ea
redhat/eap7-jgroups-kubernetes<0:1.0.16-1.Final_redhat_00001.1.el8ea
0:1.0.16-1.Final_redhat_00001.1.el8ea
redhat/eap7-netty<0:4.1.60-1.Final_redhat_00001.1.el8ea
0:4.1.60-1.Final_redhat_00001.1.el8ea
redhat/eap7-resteasy<0:3.11.4-1.Final_redhat_00001.1.el8ea
0:3.11.4-1.Final_redhat_00001.1.el8ea
redhat/eap7-undertow<0:2.0.35-1.SP1_redhat_00001.1.el8ea
0:2.0.35-1.SP1_redhat_00001.1.el8ea
redhat/eap7-velocity<0:2.3.0-1.redhat_00001.1.el8ea
0:2.3.0-1.redhat_00001.1.el8ea
redhat/eap7-weld-core<0:3.1.6-1.Final_redhat_00001.1.el8ea
0:3.1.6-1.Final_redhat_00001.1.el8ea
redhat/eap7-wildfly<0:7.3.7-1.GA_redhat_00002.1.el8ea
0:7.3.7-1.GA_redhat_00002.1.el8ea
redhat/eap7-wildfly-elytron<0:1.10.12-1.Final_redhat_00001.1.el8ea
0:1.10.12-1.Final_redhat_00001.1.el8ea
redhat/eap7-wildfly-http-client<0:1.0.26-1.Final_redhat_00001.1.el8ea
0:1.0.26-1.Final_redhat_00001.1.el8ea
redhat/eap7-xalan-j2<0:2.7.1-36.redhat_00013.1.el8ea
0:2.7.1-36.redhat_00013.1.el8ea
redhat/eap7-yasson<0:1.0.9-1.redhat_00001.1.el8ea
0:1.0.9-1.redhat_00001.1.el8ea
redhat/eap7-netty<0:4.1.63-1.Final_redhat_00001.1.el8ea
0:4.1.63-1.Final_redhat_00001.1.el8ea
redhat/eap7-netty<0:4.1.63-1.Final_redhat_00001.1.el7ea
0:4.1.63-1.Final_redhat_00001.1.el7ea
redhat/candlepin<0:4.1.13-1.el7
0:4.1.13-1.el7
redhat/candlepin<0:4.1.13-1.el8
0:4.1.13-1.el8
Netty Netty<4.1.60
NetApp OnCommand API Services
NetApp OnCommand Workflow Automation
Debian Debian Linux=10.0
Quarkus Quarkus<=1.13.7
Apache Kudu<1.16.0
Apache ZooKeeper=3.5.9
Oracle Communications Cloud Native Core Policy=1.14.0
redhat/netty-codec-http<4.1.60.
4.1.60.
IBM IBM® Db2® on Cloud Pak for Data and Db2 Warehouse on Cloud Pak for Data<=v3.5 through refresh 10v4.0 through refresh 9v4.5 through refresh 3v4.6 through refresh 6v4.7 through refresh 4v4.8 through refresh 4
debian/netty
1:4.1.48-4+deb11u2
1:4.1.48-7+deb12u1
1:4.1.48-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

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