[Pkg-cryptsetup-devel] Bug#381973: Crash in LUKS part of cryptsetup with > 256 bit keys

David Härdeman david at hardeman.nu
Mon Oct 30 00:33:17 CET 2006


Hi,

I've been tracking down the segfault reported in debian bug #381973 
(http://bugs.debian.org/381973). See the bug report for steps on how to 
reproduce it.

It seems to be a problem with the LUKS part of cryptsetup, more 
specifically:

During "cryptsetup luksOpen" with the previously set 448 bit (56 byte) 
key, we'll have the following call chain:

main -> action_luksOpen -> crypt_job -> __crypt_luks_open -> 
LUKS_open_any_key -> LUKS_open_key -> AF_merge

AF_merge is being called as:
AF_merge(AfKey,mk->key,mk->keyLength,hdr->keyblock[keyIndex].stripes);

mk->keyLength is here (correctly) set to 56, and mk->key is a statically 
allocated 32 byte buffer (defined as part of struct luks_masterkey in 
luks.h).

This will lead the last call to XORblock in AF_merge to scribble 56 - 32 
bytes outside that buffer, thus corrupting the stack and leading to 
interesting crashes in unrelated places later.

I'm not familiar enough with the LUKS code to suggest a fix...Clemens?

-- 
David Härdeman




More information about the Pkg-cryptsetup-devel mailing list