[ANNOUNCE] cryptsetup 2.7.3

Milan Broz <[email protected]> Mon, 17 Jun 2024 14:53:05 +0200
Newsgroups dev.linux.lists.cryptsetup
Message-ID <[email protected]>
The cryptsetup 2.7.3 stable release is available at

               https://gitlab.com/cryptsetup/cryptsetup

Please note that release packages are located on kernel.org

               https://www.kernel.org/pub/linux/utils/cryptsetup/v2.7/

Feedback and bug reports are welcomed.

Cryptsetup 2.7.3 Release Notes
==============================
Stable bug-fix release with security fixes.

All users of cryptsetup 2.7 must upgrade to this version.

Changes since version 2.7.2
~~~~~~~~~~~~~~~~~~~~~~~~~~~

* Do not allow formatting LUKS2 with Opal SED (hardware encryption)
   if the reported logical sector size for the block device and Opal
   encryption logical block differs.

   Such a configuration can lead to a partially encrypted Opal locking
   range or data destruction following the expected locking range.

   Some NVMe drives support multiple LBAF profiles (typically supporting
   512-byte and 4096-byte sector size). Some broken Opal NVMe firmware can
   report bogus encryption size that disagrees with real used sector size.
   This usually happens after low-level NVMe reformatting (LBAF profile
   change with nvme utility) to different sector size.
   Moreover, some firmware versions do not properly reset this even after
   explicit PSID revert.

   Cryptsetup calculates the Opal locking range using the reported block
   size in Opal geometry ioctl.  Unfortunately, the broken firmware drive
   internally uses the logical block size of the block device, which can
   differ. This can lead to two possible situations:

   - Opal reports a smaller block size (512-byte) while the drive uses
   a 4096-byte sector. The configured locking range is then much larger,
   destroying data following the expected locking range setting.

   - Opal reports a larger block size (4096-byte) while the drive uses
   a 512-byte sector. The configured locking range is then much smaller,
   leaving the remaining space in the locking range unencrypted (violating
   the confidentiality of data).

   Cryptsetup now detects this discrepancy and disallows LUKS2 format with
   Opal hardware encryption in such a case.

   For already formatted devices, you will see this warning:
     "Bogus OPAL logical block size differs from device block size."

   If you also used software encryption (dm-crypt over Opal), data will
   still be fully encrypted with software dm-crypt.
   With hw-only encryption,  your configuration is probably already broken
   (insecure or accessing data beyond the assigned area).

   Note that this is caused by bad firmware (seen with multiple vendors),
   and the problem was reported, at least for drives we have access to.

* Fixes to wiping LUKS2 headers after Opal locking area erase.

   As the hardware locking range is destroyed (cryptsetup erase command),
   the LUKS2 header is no longer usable and was partially wiped.
   Now the code fully wipes also the secondary header, as the previous
   code wiped only the primary LUKS area.

   Note that this is an exception, as the normal erase command wipes only
   the keyslots, keeping the LUKS2 header in place.  With Opal encryption,
   the data segment is no longer valid, so the whole LUKS2 header is no
   longer usable.

* Mention the need for possible PSID revert before Opal format for some
   drives (man page).

* Fix Bitlocker-compatible code to ignore newly seen metadata entries.

   Recent Windows OS versions started to include new (undocumented)
   metadata entries in Bitlocker. These entries are now quietly ignored,
   allowing Bitlocker images to open with cryptsetup again.

* Fix interactive query retry if LUKS2 unbound keyslot is present.

   If an unbound keyslot is present, the password query retry count is
   now properly applied.

* Detect unsupported zoned devices for LUKS header devices.

   Zoned devices cannot be written with direct-io and used for LUKS header
   logic in general. Code now rejects placing the LUKS header on a zoned
   device, while you can still create a detached header and use a zoned
   device for encrypted data.

* Allow "capi" cipher format for benchmark command and fix parsing
   of plain IV in "capi" format.

   Some ciphers can be specified only in Linux kernel crypto notation
   (in short, "capi"). Code now allows this format also for benchmark,
   for example, "benchmark -c capi:xts\(aes\)-plain64"
   (that is equivalent to -c aes-xts-plain64).

* Add support for HCTR2 encryption mode.

   The HCTR2 encryption mode was added to the Linux kernel for fscrypt,
   but as it is a length-preserving mode (with sector tweak), it can be
   easily used for disk encryption, too.
   The mode has the same property as wide modes (any change is propagated
   to the whole sector instead of only one block as in XTS mode).

   As it needs a larger initialization vector (32 bytes), we need to add
   an exception in the userspace format code.
   You can now use --cipher aes-hctr2-plain64 for the format operation.

* Source code now uses SPDX license identifiers instead of full
   license preambles.

* Fix missing includes for cryptographic backend that could cause
   compilation errors for some systems.

* Fix tests to work correctly in FIPS mode with recent OpenSSL 3.2.

* Fix various (mostly false positive) issues detected by Coverity.
OpenPGP_0xD9B0577BD93E98FC.asc (application/pgp-keys, 4.6 KB)
-----BEGIN PGP PUBLIC KEY BLOCK-----

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
=VXKq
-----END PGP PUBLIC KEY BLOCK-----
OpenPGP_signature.asc (application/pgp-signature, 833 B)
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEEKikYJD/eRmSNBob52bBXe9k+mPwFAmZwMbEACgkQ2bBXe9k+
mPxPTg//V3m6Z1Flov8qgxsIiqO2/QPWCr34CUMJ7BK8gED8fdSk1/E+/L0o8nTs
4F+29BjjIgvG/qfhN2IPpQhASOGvTc0zvLEB/bLmbkWbVq284MUy+qNcfP2XoD1t
G+VA8N29brJmqU/DrLBX6gaumZV9vHW1mvdH5XDSkIii16hFfXxAki0V3qkCDoOT
Z3Oi/ut3wwqGfBqnvZVoa01AhnR2omJMJqWdpfgYvxtJlVFJ5Usx80LqZH8IgESx
GWyW+kYUL6MkhJnsvD97NZ7zZjZgiL7lYEeks5zOP/gLS/9f120k3OC5GIBPGfVG
zHDpUaTQyfvcqTTzGfgFqNhEho7BhPjEyXKLjMWUIZvtcP5OPqHGfmvtDA/HQorJ
+Zmihjm/YRYjA23EkCqaKlv++FsXlIP+//eU1+VT7rx1/ZLMhGW2rGLhEVXi+nsH
4u6mKdCS1AVoGtY6w8hSd3pPRAOC87uWTya1vVdaZfh8A+ZCbmNSx6V63DC4Rhaa
ztMPP25BtB36lumGvW9yfgyKKIZH2AS0u6rPBKUQjl8BFSZjeJStaRy4nr86Q+on
chszeKfkN37T+AR29wCfLdCMKQZQ7PoZhZ1W46GTqDOy3tIsE/6vS7JGCr4OrEXu
YRKuMs8QC7Qd7r/ya6urooPleXua3eAZbooar+ZLwp5B/1h3AaQ=
=evUa
-----END PGP SIGNATURE-----