mirror of
https://github.com/OMGeeky/advisory-db.git
synced 2026-01-21 19:08:09 +01:00
Add advisory for buffer overflow in transpose (#1890)
* Create transpose/RUSTSEC-0000-0000.md * Fix typo * Fix typo * Fix `affected` specification * Add a note about exploitation requirements * Clarify exploitation conditions --------- Co-authored-by: Sergey "Shnatsel" Davidoff <shnatsel@gmail.com>
This commit is contained in:
26
crates/transpose/RUSTSEC-0000-0000.md
Normal file
26
crates/transpose/RUSTSEC-0000-0000.md
Normal file
@@ -0,0 +1,26 @@
|
||||
```toml
|
||||
[advisory]
|
||||
id = "RUSTSEC-0000-0000"
|
||||
package = "transpose"
|
||||
date = "2023-12-18"
|
||||
url = "https://github.com/ejmahler/transpose/issues/11"
|
||||
categories = ["memory-corruption"]
|
||||
|
||||
[versions]
|
||||
patched = []
|
||||
|
||||
[affected]
|
||||
functions = { "transpose::transpose" = [">= 0.1.0"] }
|
||||
```
|
||||
|
||||
# Buffer overflow due to integer overflow in `transpose`
|
||||
|
||||
Given the function `transpose::transpose`:
|
||||
```rust
|
||||
fn transpose<T: Copy>(input: &[T], output: &mut [T], input_width: usize, input_height: usize)
|
||||
```
|
||||
|
||||
The safety check `input_width * input_height == output.len()` can fail due to `input_width * input_height` overflowing in such a way that it equals `output.len()`.
|
||||
As a result of failing the safety check, memory past the end of `output` is written to. This only occurs in release mode since `*` panics on overflow in debug mode.
|
||||
|
||||
Exploiting this issue requires the caller to pass `input_width` and `input_height` arguments such that multiplying them overflows, and the overflown result equals the lengths of input and output slices.
|
||||
Reference in New Issue
Block a user