-
Bug
-
Resolution: Unresolved
-
Undefined
-
None
-
rhel-10.1
-
No
-
Low
-
rhel-system-roles
-
None
-
False
-
False
-
-
None
-
None
-
None
-
None
-
Unspecified
-
Unspecified
-
Unspecified
-
None
Trying to use the role to manage LUKS2 on an EL7 managed node with less than 1GB RAM gives the following error:
Failed to commit changes to disk: 'gi.repository.BlockDev' object has no attribute 'CryptoLUKSPBKDF'
LUKS2 by default uses argon2 key derivation function which uses memory
to prevent brute force attacks. By default it uses 1 GiB of RAM so on
systems with less memory we configure it to use less and to do that we
use the BDCryptoLUKSPBKDF struct which is not available. So it's only
with LUKS2 (default is LUKS1 on RHEL7) and on systems with less than 1
GiB RAM.
RHEL7 has python2-blivet3-3.1.3-3.el7.noarch - this has /usr/lib/python2.7/site-packages/blivet3/formats/luks.py which is where BlockDev.CryptoLUKSPBKDF is referenced.
BlockDev.CryptoLUKSPBKDF is mapped to the function BDCryptoLUKSPBKDF defined in libblockdev 2.19 - but EL7 only has 2.18
libblockdev-2.18-5.el7.x86_64
libblockdev-crypto-2.18-5.el7.x86_64
libblockdev-lvm-2.18-5.el7.x86_64
libblockdev-utils-2.18-5.el7.x86_64
libblockdev-mdraid-2.18-5.el7.x86_64
libblockdev-dm-2.18-5.el7.x86_64
libblockdev-swap-2.18-5.el7.x86_64
So, somehow, an update to EL7 python2-blivet3 was made to reference a symbol that is not defined
There isn't really a workaround. Customers should either not use LUKS2 (use LUKS1 instead) on RHEL7, or ensure that the RHEL7 systems using LUKS2 have more than 1GB RAM in order to use argon2.