linux-crypto.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* OOPs in 6.16-rc2 crypto_shash_export due to partial block handling
@ 2025-06-19 21:17 Milan Broz
  2025-06-20  4:09 ` dm-crypt: Extend state buffer size in crypt_iv_lmk_one Herbert Xu
  0 siblings, 1 reply; 9+ messages in thread
From: Milan Broz @ 2025-06-19 21:17 UTC (permalink / raw)
  To: Herbert Xu; +Cc: linux-crypto@vger.kernel.org

Hi Herbert,

there is an apparent regression in recent 6.16-rc2.

I can easily crash the kernel on 32bit machine with this OOPS:

: Oops: Oops: 0000 [#1] SMP
: CPU: 1 UID: 0 PID: 12 Comm: kworker/u16:0 Not tainted 6.16.0-rc2+ #993 PREEMPT(full)
: Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 11/12/2020
: Workqueue: kcryptd-254:0-1 kcryptd_crypt [dm_crypt]
: EIP: __crypto_shash_export+0xf/0x90
: Code: 4a c1 c7 40 20 a0 b4 4a c1 81 cf 0e 00 04 08 89 78 50 e9 2b ff ff ff 8d 74 26 00 55 89 e5 57 56 53 89 c3 89 d6 8b 00 8b 40 14 <8b> 50 fc f6 40 13 01 74 04 4a 2b 50 14 85 c9 74 10 89 f2 89 d8 ff
: EAX: 303a3435 EBX: c3007c90 ECX: 00000000 EDX: c3007c38
: ESI: c3007c38 EDI: c3007c90 EBP: c3007bfc ESP: c3007bf0
: DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068 EFLAGS: 00010216
: CR0: 80050033 CR2: 303a3431 CR3: 04fbe000 CR4: 00350e90
: Call Trace:
:  crypto_shash_export+0x65/0xc0
:  crypt_iv_lmk_one+0x106/0x1a0 [dm_crypt]
...

The bisect points to

commit 8cf4c341f1931c20c564ab2ee0f9eb990a606cac
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Fri Apr 18 10:59:04 2025 +0800

     crypto: md5-generic - Use API partial block handling

     Use the Crypto API partial block handling.

I think there is a buffer overflow in crypto_shash_export, it does not crash on 64bit perhaps
because of different alignment, but I can be mistaken.

As plen is blocksize + 1, this line in crypto_shash_export seems write out of m5 state:

   unsigned int plen = crypto_shash_blocksize(tfm) + 1;
   ...
   memcpy(out + ss - plen, buf + descsize - plen, plen);

It is easily reproducible with cryptsetup testuite script tests/loopaes-test (on 32bit system).

Let me know if you need more info.

Milan


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2025-06-24 16:59 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-19 21:17 OOPs in 6.16-rc2 crypto_shash_export due to partial block handling Milan Broz
2025-06-20  4:09 ` dm-crypt: Extend state buffer size in crypt_iv_lmk_one Herbert Xu
2025-06-20  8:04   ` Milan Broz
2025-06-23  9:40     ` Mikulas Patocka
2025-06-23 11:11       ` [v2 PATCH] " Herbert Xu
2025-06-23 11:55         ` Milan Broz
2025-06-23 12:42           ` Mikulas Patocka
2025-06-23 18:22       ` Eric Biggers
2025-06-24 16:59         ` Milan Broz

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).