Skip to content

Commit 6a83f0c

Browse files
committed
Do not ignore empty associated data with AES-SIV mode
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)
1 parent 45cd255 commit 6a83f0c

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

providers/implementations/ciphers/cipher_aes_siv.c

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -120,14 +120,18 @@ static int siv_cipher(void *vctx, unsigned char *out, size_t *outl,
120120
if (!ossl_prov_is_running())
121121
return 0;
122122

123-
if (inl == 0) {
124-
*outl = 0;
125-
return 1;
126-
}
123+
/* Ignore just empty encryption/decryption call and not AAD. */
124+
if (out != NULL) {
125+
if (inl == 0) {
126+
if (outl != NULL)
127+
*outl = 0;
128+
return 1;
129+
}
127130

128-
if (outsize < inl) {
129-
ERR_raise(ERR_LIB_PROV, PROV_R_OUTPUT_BUFFER_TOO_SMALL);
130-
return 0;
131+
if (outsize < inl) {
132+
ERR_raise(ERR_LIB_PROV, PROV_R_OUTPUT_BUFFER_TOO_SMALL);
133+
return 0;
134+
}
131135
}
132136

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

0 commit comments

Comments
 (0)