In the standard library in Rust before 1.52.0, there is an optimization for joining strings that can cause uninitialized bytes to be exposed (or the program to crash) if the borrowed string changes after its length is checked.
The product uses a function that accepts a format string as an argument, but the format string originates from an external source.
Name | Vendor | Start Version | End Version |
---|---|---|---|
Rust | Rust-lang | * | 1.52.0 (excluding) |
Red Hat Developer Tools | RedHat | rust-toolset-1.52-0:1.52.1-1.el7_9 | * |
Red Hat Developer Tools | RedHat | rust-toolset-1.52-rust-0:1.52.1-2.el7_9 | * |
Red Hat Enterprise Linux 8 | RedHat | rust-toolset:rhel8-8040020210603202531.2daa1a95 | * |
Rustc | Ubuntu | bionic | * |
Rustc | Ubuntu | esm-apps/focal | * |
Rustc | Ubuntu | esm-apps/xenial | * |
Rustc | Ubuntu | esm-infra-legacy/trusty | * |
Rustc | Ubuntu | focal | * |
Rustc | Ubuntu | groovy | * |
Rustc | Ubuntu | hirsute | * |
Rustc | Ubuntu | impish | * |
Rustc | Ubuntu | jammy | * |
Rustc | Ubuntu | kinetic | * |
Rustc | Ubuntu | trusty | * |
Rustc | Ubuntu | trusty/esm | * |
Rustc | Ubuntu | xenial | * |