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 Software | Affected Version | How 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 |
Sign up to SecAlerts for real-time vulnerability data matched to your software, aggregated from hundreds of sources.
(Appears in the following advisories)