Executive brief
openssl_encrypt is a Python library for encrypting files. The D-Bus service component used to encrypt files via system or session bus was deriving encryption keys using only SHA-256 hashing without proper stretching, rather than the documented Argon2id algorithm. This makes encrypted files vulnerable to offline password guessing attacks that are millions of times faster than intended, potentially exposing encrypted data if an attacker obtains the files.
Technical details
The vulnerability is a weak key derivation failure (CWE-916) in the D-Bus CryptoService.EncryptFile handler. The handler constructed a hash configuration dictionary with incorrect key names that the key-derivation core does not recognize, causing the core to skip KDF application entirely and fall back to a single unstretched SHA-256 hash of the password and salt. This results in offline password guessing being approximately 10^6–10^7 times faster than intended (roughly 10^10 SHA-256 operations per second on commodity GPUs versus 10^3 per second against Argon2id with 64 MiB memory cost). The vulnerability affects only files encrypted via the D-Bus service; CLI and GUI encryption paths are unaffected. Version 1.4.9 fixes the issue by moving key derivation configuration to a dedicated module that correctly constructs the config structure and enforces Argon2id by default, rejecting encryption requests that do not meet minimum work-factor requirements. Affected versions are 1.4.8 and earlier; the D-Bus service was removed entirely in the 1.5.x line.
Affected products
- jahlives openssl_encrypt before 1.4.9
Timeline
- 2026-08-12: disclosed
- 2026-08-27: patched: Version 1.4.9 released