RustSec logo

History ⋅ Edit ⋅ JSON (OSV)

RUSTSEC-2026-0476

Buffer overflow with AES key wrap with padding in cipher_update

Reported
Issued
Package
openssl (crates.io)
Type
Vulnerability
Categories
Keywords
#aes #key-wrap #cipher #buffer-overflow
Aliases
References
Patched
  • >=0.10.79
Unaffected
  • <0.10.0
Affected Functions
Version
openssl::cipher_ctx::CipherCtxRef::cipher_update
  • >=0.10.0, <0.10.79
openssl::cipher_ctx::CipherCtxRef::cipher_update_vec
  • >=0.10.0, <0.10.79
openssl::symm::Crypter::update
  • >=0.10.0, <0.10.79

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.