CVE-2021-28033:
Deserializing an array can free uninitialized memory in byte_struct
9.8
CVSS Score
3.1
Basic Information
CVE ID
GHSA ID
EPSS Score
0.63189%
CWE
Published
8/25/2021
Updated
3/31/2023
KEV Status
No
Technology
Rust
Technical Details
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Package Name | Ecosystem | Vulnerable Versions | First Patched Version |
---|---|---|---|
byte_struct | rust | < 0.6.1 | 0.6.1 |
Vulnerability Intelligence
Miggo AI
Root Cause Analysis
The vulnerability stems from unsafe memory initialization patterns in array deserialization functions. The commit diff shows both functions were using std::mem::uninitialized()
followed by pointer writes in a loop, which creates a partially initialized array if any element deserialization panics. The patch replaced this with safe initialization via Vec
collection and try_into()
, confirming these were the vulnerable functions. The CWE-908 (Uninitialized Resource) mapping and GitHub issue reproduction both directly implicate these array deserialization methods.