]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
wipe hmac keys correctly pre-3.0 libcrypto
authorAydın Mercan <aydin@isc.org>
Thu, 5 Feb 2026 12:01:52 +0000 (15:01 +0300)
committerAydın Mercan <aydin@isc.org>
Fri, 6 Feb 2026 11:14:43 +0000 (14:14 +0300)
A lingering `sizeof` from the prototype era of !11094 caused the
key-wipe in `isc_hmac_key_destroy` to use `sizeof(key->len)` instead of
`key->len` for the length argument of `isc_safe_memwipe`.

This results in a buffer overflow of zero bytes in HMAC keys that are
less than 4 bytes. As such, the overflow can only be visibile in keys
that are less than 32-bits, which is beyond broken and creating such
keys are only possible in testing.

Therefore, this change is *not* a security fix since the conditions are
never reachable in any imaginable deployment scenario.

Builds that use OpenSSL >=3.0 are unaffected as the `sizeof` was only
remaining in pre-3.0 builds.

lib/isc/crypto/ossl1_1.c

index f67205709501cd7fdf883fd190c0aff8a8a84310..c0645bcaa2388d6067af9f4529876432735754b7 100644 (file)
@@ -137,8 +137,7 @@ isc_hmac_key_destroy(isc_hmac_key_t **keyp) {
 
        key->magic = 0x00;
 
-       isc_safe_memwipe(key->secret, sizeof(key->len));
-
+       isc_safe_memwipe(key->secret, key->len);
        isc_mem_putanddetach(&key->mctx, key,
                             STRUCT_FLEX_SIZE(key, secret, key->len));
 }