Skip to content

Commit

Permalink
Do not ignore empty associated data with AES-SIV mode
Browse files Browse the repository at this point in the history
The AES-SIV mode allows for multiple associated data items
authenticated separately with any of these being 0 length.

The provided implementation ignores such empty associated data
which is incorrect in regards to the RFC 5297 and is also
a security issue because such empty associated data then become
unauthenticated if an application expects to authenticate them.

Fixes CVE-2023-2975

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from #21384)

(cherry picked from commit c426c28)
  • Loading branch information
t8m committed Jul 14, 2023
1 parent 45cd255 commit 6a83f0c
Showing 1 changed file with 11 additions and 7 deletions.
18 changes: 11 additions & 7 deletions providers/implementations/ciphers/cipher_aes_siv.c
Expand Up @@ -120,14 +120,18 @@ static int siv_cipher(void *vctx, unsigned char *out, size_t *outl,
if (!ossl_prov_is_running())
return 0;

if (inl == 0) {
*outl = 0;
return 1;
}
/* Ignore just empty encryption/decryption call and not AAD. */
if (out != NULL) {
if (inl == 0) {
if (outl != NULL)
*outl = 0;
return 1;
}

if (outsize < inl) {
ERR_raise(ERR_LIB_PROV, PROV_R_OUTPUT_BUFFER_TOO_SMALL);
return 0;
if (outsize < inl) {
ERR_raise(ERR_LIB_PROV, PROV_R_OUTPUT_BUFFER_TOO_SMALL);
return 0;
}
}

if (ctx->hw->cipher(ctx, out, in, inl) <= 0)
Expand Down

0 comments on commit 6a83f0c

Please sign in to comment.