Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RUSTSEC-2020-0008: Flaw in hyper allows request smuggling by sending a body in GET requests #1138

Closed
github-actions bot opened this issue Apr 1, 2020 · 3 comments
Labels
good first issue 👋 Good for newcomers security 🛡️ Changes that affect software security for the good or the bad

Comments

@github-actions
Copy link

github-actions bot commented Apr 1, 2020

Flaw in hyper allows request smuggling by sending a body in GET requests

Details
Package hyper
Version 0.10.16
URL hyperium/hyper#1925
Date 2020-03-19
Patched versions >= 0.12.34

Vulnerable versions of hyper allow GET requests to have bodies, even if there is
no Transfer-Encoding or Content-Length header. As per the HTTP 1.1
specification, such requests do not have bodies, so the body will be interpreted
as a separate HTTP request.

This allows an attacker who can control the body and method of an HTTP request
made by hyper to inject a request with headers that would not otherwise be
allowed, as demonstrated by sending a malformed HTTP request from a Substrate
runtime. This allows bypassing CORS restrictions. In combination with other
vulnerabilities, such as an exploitable web server listening on loopback, it may
allow remote code execution.

The flaw was corrected in hyper version 0.12.34.

See advisory page for additional details.

@aesedepece aesedepece added good first issue 👋 Good for newcomers security 🛡️ Changes that affect software security for the good or the bad labels Apr 1, 2020
@tmpolaczyk
Copy link
Contributor

It would be nice to know which of our dependencies uses hyper, because as far as I know we do not use it directly.

@aesedepece
Copy link
Member

It is reqwest:

[[package]]
name = "reqwest"
version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
 "base64 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
 "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)",
 "encoding_rs 0.8.20 (registry+https://github.com/rust-lang/crates.io-index)",
 "futures-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
 "futures-util 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
 "http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
 "http-body 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
 "hyper 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)",
 "hyper-tls 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
 "js-sys 0.3.32 (registry+https://github.com/rust-lang/crates.io-index)",
 "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
 "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
 "mime 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
 "mime_guess 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
 "native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
 "percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
 "pin-project-lite 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
 "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
 "serde_urlencoded 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
 "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
 "tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
 "tokio-tls 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
 "url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
 "wasm-bindgen 0.2.55 (registry+https://github.com/rust-lang/crates.io-index)",
 "wasm-bindgen-futures 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)",
 "web-sys 0.3.32 (registry+https://github.com/rust-lang/crates.io-index)",
 "winreg 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
]

@tmpolaczyk
Copy link
Contributor

We no longer use reqwest

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
good first issue 👋 Good for newcomers security 🛡️ Changes that affect software security for the good or the bad
Projects
None yet
Development

No branches or pull requests

2 participants