Średnia

Possible request smuggling in HTTP/2 due missing validation

  • Ujawniono: 09.03.2021
  • Aktualizacja: 11.10.2026 13:19

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

Czego dotyczy

Kliknij technologię, aby zobaczyć wszystkie dotyczące jej podatności.

PlatformaPaczkaPodatne wersjePoprawka w wersji
Java / Kotlin (Maven) io.netty:netty wszystkie wersje brak poprawki
Java / Kotlin (Maven) io.netty:netty-codec-http2 >= 4.0.0, < 4.1.60.Final 4.1.60.Final
Java / Kotlin (Maven) org.jboss.netty:netty wszystkie wersje brak poprawki

Odnośniki

Ocena CVSS 5.9/10
Wektor CVSS
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N
Słabość (CWE)
CWE-444
Platforma
Java / Kotlin (Maven)
Paczka
io.netty:netty, io.netty:netty-codec-http2, org.jboss.netty:netty
Ujawniono
09.03.2021
Aktualizacja
11.10.2026 13:19

Źródła i licencje

OSV / GitHub Advisory Database - GHSA-wm47-8v5p-wjpj - CC BY 4.0

Historia podatności: io.netty:netty

Wszystkie opisane podatności tej paczki (Java / Kotlin (Maven)), od najnowszej. Widać, czy to jednorazowa wpadka, czy paczka, której trzeba pilnować.

Wszystkie (11) w archiwum
Wszystkich wpisów
11
Pierwsza → ostatnia
10.2019 05.2022
Bez poprawki
9
Wykorzystywana w atakach
0

Rozkład istotności

  • Krytyczna 1
  • Wysoka 4
  • Średnia 6

Ujawnienia w latach

  1. 2019: 1
  2. 2020: 3
  3. 2021: 6
  4. 2022: 1
  5. 2023: 0
  6. 2024: 0
  7. 2025: 0
  8. 2026: 0
Istotność:
  1. Wysoka · 7.5 CVE-2021-37136 wszystkie wersje brak poprawki
  2. Possible request smuggling in HTTP/2 due missing validation ten wpis
    Średnia · 5.9 CVE-2021-21295 wszystkie wersje brak poprawki
  3. Wysoka · 7.5 CVE-2015-2156 >= 3.10.0, < 3.10.3.Final, < 3.9.8.Final 3.10.3.Final, 3.9.8.Final
  4. Krytyczna · 9.1 CVE-2019-20444 wszystkie wersje brak poprawki
  5. Wysoka · 7.5 CVE-2019-16869 >= 3.3.0.Final, <= 4.0.0.Alpha8 brak poprawki

Dowiedz się, które podatności dotyczą Twojej aplikacji

Po podłączeniu integracji DockRay i włączeniu raportowania oprogramowania DockRay porównuje zgłoszone wersje komponentów ze znanymi podatnościami i powiadamia o potwierdzonych dopasowaniach. Zakres zależy od obsługiwanej technologii i dostępnych biuletynów.

Podłącz swoją aplikację
Newsletter DockRay

Bezpieczeństwo aplikacji w Twojej skrzynce

Najważniejsze podatności, konkretne zalecenia i praktyczne wskazówki dla Twoich aplikacji. Wybierz technologie i śledź to, co ma znaczenie dla Twojego projektu.

  • Codzienne zestawienie nowych podatności, także krytycznych.
  • Powiadomienia o ważnych aktualizacjach.
  • Praktyczne porady o bezpieczeństwie i monitoringu aplikacji.

Pozostaw puste, aby otrzymywać informacje o wszystkich technologiach.

Zapis jest bezpłatny. Wypiszesz się jednym kliknięciem w wiadomości.