Executive brief
Golang FIPS OpenSSL is a cryptographic library used by Go applications to provide FIPS-compliant encryption, authentication, and key derivation. A flaw in uninitialized variable handling allows attackers to cause hash/HMAC authentication bypass, force invalid cryptographic outputs (zeroed keys), or manipulate buffer lengths, potentially compromising the security of Go's TLS stack and applications relying on FIPS-validated cryptography.
Technical details
This is a use-of-uninitialized-variable vulnerability (CWE-457) in Golang FIPS OpenSSL's FIPS mode cryptographic operations. The flaw allows an attacker with local or network access to trigger unpredictable behavior when uninitialized buffer length variables are returned with zeroed buffers. An attacker can exploit this to forge false-positive HMAC comparisons (comparing attacker-controlled zeroed buffers against trusted computed HMAC sums), derive all-zero cryptographic keys instead of random values, or cause buffer-length mismatches. The vulnerability requires low privileges and affects versions ≤ 2.0.3. No patch is currently available according to the advisory. The impact extends to Go's TLS stack and any application using FIPS-validated encryption via this library.
Affected products
- golang-fips OpenSSL <= 2.0.3
Timeline
- 2024-10-01: disclosed
- 2024-10-01: advisory: GHSA-3h3x-2hwv-hr52 published; CVE-2024-9355 assigned