HmacShaCryptor.Hash never hashes its input — returns constant HMAC_K("") for all inputs, voiding CBC-HMAC JWE integrity
- Published
- Last modified
- Status
- published
- Known exploitation
- Not listed in CISA KEV
- Public exploit
- None on Exploit-DB
Summary
The affected software is gose, a Go library for JSON Object Signing and Encryption, specifically its AES-CBC-HMAC JSON Web Encryption (JWE) functionality. A flaw in its HMAC hashing routine meant the authentication tag no longer depended on the message, so encrypted data could be modified or forged without detection.
Summarized by anthropic/claude-haiku-5.5. Verify details against the original sources.
Read the original description
`HmacShaCryptor.Hash` never hashed its input. For any input it returned `HMAC_K("")` — the MAC of the empty message under the key. Every AES-CBC-HMAC JWE produced or verified by gose therefore carried an authentication tag that is constant per key and independent of the message, removing ciphertext integrity entirely.
Affected versions
- github.com/ThalesGroup/gose
From 0.9.0 · through 0.13.0-rc1
- github.com/eclipse-keypont/gose
fixed in 1.0.0-rc1