| From 02ac9c9420275868472f33b01def01218742b8bb Mon Sep 17 00:00:00 2001 |
| From: Tomas Mraz <tomas@openssl.org> |
| Date: Mon, 17 Apr 2023 16:51:20 +0200 |
| Subject: [PATCH] aesv8-armx.pl: Avoid buffer overrread in AES-XTS decryption |
| |
| Original author: Nevine Ebeid (Amazon) |
| Fixes: CVE-2023-1255 |
| |
| The buffer overread happens on decrypts of 4 mod 5 sizes. |
| Unless the memory just after the buffer is unmapped this is harmless. |
| |
| Reviewed-by: Paul Dale <pauli@openssl.org> |
| Reviewed-by: Tom Cosgrove <tom.cosgrove@arm.com> |
| (Merged from https://github.com/openssl/openssl/pull/20759) |
| |
| (cherry picked from commit 72dfe46550ee1f1bbfacd49f071419365bc23304) |
| --- |
| crypto/aes/asm/aesv8-armx.pl | 4 +++- |
| 3 files changed, 16 insertions(+), 1 deletion(-) |
| |
| diff --git a/crypto/aes/asm/aesv8-armx.pl b/crypto/aes/asm/aesv8-armx.pl |
| index 6a7bf05d1b..bd583e2c89 100755 |
| --- a/crypto/aes/asm/aesv8-armx.pl |
| +++ b/crypto/aes/asm/aesv8-armx.pl |
| @@ -3353,7 +3353,7 @@ $code.=<<___ if ($flavour =~ /64/); |
| .align 4 |
| .Lxts_dec_tail4x: |
| add $inp,$inp,#16 |
| - vld1.32 {$dat0},[$inp],#16 |
| + tst $tailcnt,#0xf |
| veor $tmp1,$dat1,$tmp0 |
| vst1.8 {$tmp1},[$out],#16 |
| veor $tmp2,$dat2,$tmp2 |
| @@ -3362,6 +3362,8 @@ $code.=<<___ if ($flavour =~ /64/); |
| veor $tmp4,$dat4,$tmp4 |
| vst1.8 {$tmp3-$tmp4},[$out],#32 |
| |
| + b.eq .Lxts_dec_abort |
| + vld1.32 {$dat0},[$inp],#16 |
| b .Lxts_done |
| .align 4 |
| .Lxts_outer_dec_tail: |
| -- |
| 2.34.1 |
| |