hyper is an HTTP library for rust. hyper's HTTP/1 server code had a flaw that incorrectly parses and accepts requests with a `Content-Length` header with a prefixed plus sign, when it should have been rejected as illegal. This combined with an upstream HTTP proxy that doesn't parse such `Content-Length` headers, but forwards them, can result in "request smuggling" or "desync attacks". The flaw exists in all prior versions of hyper prior to 0.14.10, if built with `rustc` v1.5.0 or newer. The vulnerability is patched in hyper version 0.14.10. Two workarounds exist: One may reject requests manually that contain a plus sign prefix in the `Content-Length` header or ensure any upstream proxy handles `Content-Length` headers with a plus sign prefix.
El código del servidor HTTP/1 de hyper presentaba un fallo que analizaba y aceptaba incorrectamente peticiones con una cabecera "Content-Length" con un signo más prefijado, cuando debería haber sido rechazada como ilegal. Esto, combinado con un proxy HTTP ascendente que no analiza dichas cabeceras "Content-Length", sino que las reenvía, puede resultar en "request smuggling" o "desync attacks". El fallo se presenta en todas las versiones de hyper anteriores a 0.14.10, si se construye con "rustc" versión v1.5.0 o más reciente. La vulnerabilidad está parcheada en la versión 0.14.10 de hyper. Se presentan dos soluciones: Uno puede rechazar manualmente las peticiones que contengan un prefijo de signo más en la cabecera "Content-Length" o asegurarse de que cualquier proxy upstream maneja las cabeceras "Content-Length" con un prefijo de signo más