- Reported
-
- Issued
-
- Package
-
std
- Type
-
Vulnerability
- Keywords
-
#IpAddr
#SSRF
#RFI
#LFI
- References
-
- Patched
-
- Affected Functions
- Version
std::net::IpAddr::from_str
-
std::net::Ipv4Addr::from_str
-
std::net::Ipv6Addr::from_str
-
Description
Improper input validation of octal strings in rust-lang standard library net allows unauthenticated remote attackers to perform
indeterminate SSRF, RFI, and LFI attacks on many programs that rely on rust-lang std::net.
IP address octets are left stripped instead of evaluated as valid IP addresses.
For example, an attacker submitting an IP address to a web application that relies on std::net::IpAddr,
could cause SSRF via inputting octal input data;
An attacker can submit exploitable IP addresses if the octet is 3 digits,
with the minimum exploitable octet being 08 (Denial of Service) and the maximum exploitable octet is 099 (Denial of Service).
For example, an attacker can submit 010.8.8.8, which is 8.8.8.8 (RFI), yet std::net::IpAddr will evaluate this as 10.8.8.8.
Equally, an attacker can input 127.0.026.1 which is really 127.0.22.1 but rust evaluates it as 127.0.26.1.
Advisory available under CC0-1.0
license.