vulnerability

Red Hat: CVE-2021-21295: Moderate: Satellite 6.11 Release (RHSA-2022:5498)

Severity
3
CVSS
(AV:N/AC:H/Au:N/C:N/I:P/A:N)
Published
2021-03-09
Added
2022-07-14
Modified
2022-07-14

Description

Netty is an open-source, asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. In Netty (io.netty:netty-codec-http2) before version 4.1.60.Final there is a vulnerability that enables request smuggling. 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. For an example attack refer to the linked GitHub Advisory. 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, and these HTTP/1.1 objects are forwarded to another remote peer. This has been patched in 4.1.60.Final As a workaround, the user can do the validation by themselves by implementing a custom `ChannelInboundHandler` that is put in the `ChannelPipeline` behind `Http2StreamFrameToHttpObjectCodec`.

Solution(s)

redhat-upgrade-foreman-cliredhat-upgrade-rubygem-amazing_printredhat-upgrade-rubygem-apipie-bindingsredhat-upgrade-rubygem-clampredhat-upgrade-rubygem-domain_nameredhat-upgrade-rubygem-fast_gettextredhat-upgrade-rubygem-foreman_maintainredhat-upgrade-rubygem-hammer_cliredhat-upgrade-rubygem-hammer_cli_foremanredhat-upgrade-rubygem-hammer_cli_foreman_adminredhat-upgrade-rubygem-hammer_cli_foreman_ansibleredhat-upgrade-rubygem-hammer_cli_foreman_azure_rmredhat-upgrade-rubygem-hammer_cli_foreman_bootdiskredhat-upgrade-rubygem-hammer_cli_foreman_discoveryredhat-upgrade-rubygem-hammer_cli_foreman_openscapredhat-upgrade-rubygem-hammer_cli_foreman_remote_executionredhat-upgrade-rubygem-hammer_cli_foreman_tasksredhat-upgrade-rubygem-hammer_cli_foreman_templatesredhat-upgrade-rubygem-hammer_cli_foreman_virt_who_configureredhat-upgrade-rubygem-hammer_cli_foreman_webhooksredhat-upgrade-rubygem-hammer_cli_katelloredhat-upgrade-rubygem-hashieredhat-upgrade-rubygem-highlineredhat-upgrade-rubygem-http-cookieredhat-upgrade-rubygem-jwtredhat-upgrade-rubygem-little-pluggerredhat-upgrade-rubygem-localeredhat-upgrade-rubygem-loggingredhat-upgrade-rubygem-mime-typesredhat-upgrade-rubygem-mime-types-dataredhat-upgrade-rubygem-multi_jsonredhat-upgrade-rubygem-netrcredhat-upgrade-rubygem-oauthredhat-upgrade-rubygem-powerbarredhat-upgrade-rubygem-rest-clientredhat-upgrade-rubygem-unfredhat-upgrade-rubygem-unf_extredhat-upgrade-rubygem-unf_ext-debuginforedhat-upgrade-rubygem-unf_ext-debugsourceredhat-upgrade-rubygem-unicoderedhat-upgrade-rubygem-unicode-debuginforedhat-upgrade-rubygem-unicode-debugsourceredhat-upgrade-rubygem-unicode-display_widthredhat-upgrade-satellite-cliredhat-upgrade-satellite-cloneredhat-upgrade-satellite-maintainredhat-upgrade-tfm-rubygem-amazing_printredhat-upgrade-tfm-rubygem-apipie-bindingsredhat-upgrade-tfm-rubygem-clampredhat-upgrade-tfm-rubygem-domain_nameredhat-upgrade-tfm-rubygem-fast_gettextredhat-upgrade-tfm-rubygem-hammer_cliredhat-upgrade-tfm-rubygem-hammer_cli_foremanredhat-upgrade-tfm-rubygem-hammer_cli_foreman_adminredhat-upgrade-tfm-rubygem-hammer_cli_foreman_ansibleredhat-upgrade-tfm-rubygem-hammer_cli_foreman_azure_rmredhat-upgrade-tfm-rubygem-hammer_cli_foreman_bootdiskredhat-upgrade-tfm-rubygem-hammer_cli_foreman_discoveryredhat-upgrade-tfm-rubygem-hammer_cli_foreman_openscapredhat-upgrade-tfm-rubygem-hammer_cli_foreman_remote_executionredhat-upgrade-tfm-rubygem-hammer_cli_foreman_tasksredhat-upgrade-tfm-rubygem-hammer_cli_foreman_templatesredhat-upgrade-tfm-rubygem-hammer_cli_foreman_virt_who_configureredhat-upgrade-tfm-rubygem-hammer_cli_foreman_webhooksredhat-upgrade-tfm-rubygem-hammer_cli_katelloredhat-upgrade-tfm-rubygem-hashieredhat-upgrade-tfm-rubygem-highlineredhat-upgrade-tfm-rubygem-http-cookieredhat-upgrade-tfm-rubygem-jwtredhat-upgrade-tfm-rubygem-little-pluggerredhat-upgrade-tfm-rubygem-localeredhat-upgrade-tfm-rubygem-loggingredhat-upgrade-tfm-rubygem-mime-typesredhat-upgrade-tfm-rubygem-mime-types-dataredhat-upgrade-tfm-rubygem-multi_jsonredhat-upgrade-tfm-rubygem-netrcredhat-upgrade-tfm-rubygem-oauthredhat-upgrade-tfm-rubygem-powerbarredhat-upgrade-tfm-rubygem-rest-clientredhat-upgrade-tfm-rubygem-unfredhat-upgrade-tfm-rubygem-unf_extredhat-upgrade-tfm-rubygem-unf_ext-debuginforedhat-upgrade-tfm-rubygem-unicoderedhat-upgrade-tfm-rubygem-unicode-debuginforedhat-upgrade-tfm-rubygem-unicode-display_widthredhat-upgrade-tfm-runtime
Title
NEW

Explore Exposure Command

Confidently identify and prioritize exposures from endpoint to cloud with full attack surface visibility and threat-aware risk context.