- Reported
-
- Issued
-
- Package
-
openssl
(crates.io)
- Type
-
Vulnerability
- Categories
-
- Keywords
-
#aes
#key-wrap
#cipher
#buffer-overflow
- Aliases
-
- References
-
- Patched
-
- Unaffected
-
- Affected Functions
- Version
openssl::cipher_ctx::CipherCtxRef::cipher_update
-
openssl::cipher_ctx::CipherCtxRef::cipher_update_vec
-
openssl::symm::Crypter::update
-
Description
CipherCtxRef::cipher_update, CipherCtxRef::cipher_update_vec and symm::Crypter::update require (or allocate) input.len() + block_size bytes of output. With the AES key-wrap-with-padding ciphers (EVP_aes_128_wrap_pad, EVP_aes_192_wrap_pad, EVP_aes_256_wrap_pad), OpenSSL pads the input to a multiple of 8 bytes and adds an 8-byte block, so when the input length is not a multiple of 8 it writes up to 7 bytes past the end of the caller's buffer or Vec. If an attacker can influence the plaintext length, this is heap corruption they can partly control.
Only users of the AES key-wrap-with-padding ciphers are affected. 0.10.79 sizes the output for these ciphers as the input length rounded up to a multiple of 8, plus 8.
Advisory available under CC0-1.0
license.