GHSA-4w3g-jfj2-cw2q: Out-of-bounds Read
Summary
Decrypting a ciphertext with "A128CBC-HS256", "A192CBC-HS384", or "A256CBC-HS512" can result in a panic on untrusted input.
Note this advisory is the same as https://github.com/go-jose/go-jose/security/advisories/GHSA-6mp9-8xrw-74r4.
Details
Insufficient validation of parameters can lead to attempting to index into an empty buffer. See https://github.com/go-jose/go-jose/pull/292.
Workarounds
If the application does not require the CBC-HMAC modes for content encryption, and is using github.com/go-jose/go-jose/v4, do not include them in the list of ContentEncryption algorithms passed to ParseEncrypted / ParseEncryptedJSON / ParseEncryptedCompact.
Impact
Denial of service vulnerability. Any application which decrypts untrusted ciphertexts with the indicated algorithms is affected.
Acknowledgements
Thanks to Joshua Rogers of AISLE Research for reporting this problem.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
go/github.com/go-jose/go-jose/v4to a version that resolves this vulnerability.Fixed in 4.1.5 - Configuration
If CBC-HMAC modes are not required, do not include A128CBC-HS256, A192CBC-HS384, or A256CBC-HS512 in the ContentEncryption algorithms passed to ParseEncrypted, ParseEncryptedJSON, or ParseEncryptedCompact.
github.com/go-jose/go-jose/v4 ContentEncryption algorithms = Exclude A128CBC-HS256, A192CBC-HS384, and A256CBC-HS512
Event History
Frequently Asked Questions
Which deployments are exposed to this denial-of-service issue?
Applications using go-jose v3 or v4 are affected if they decrypt untrusted ciphertexts using A128CBC-HS256, A192CBC-HS384, or A256CBC-HS512 content-encryption algorithms.
What does an attacker need to do to trigger the issue?
An attacker needs to supply a crafted, untrusted ciphertext that is processed with one of the affected CBC-HMAC content-encryption modes. Insufficient parameter validation can cause the application to index an empty buffer and panic.
What mitigation is available if patching is not immediately possible?
For applications using github.com/go-jose/go-jose/v4 that do not require these CBC-HMAC modes, exclude A128CBC-HS256, A192CBC-HS384, and A256CBC-HS512 from the ContentEncryption algorithm list passed to ParseEncrypted, ParseEncryptedJSON, or ParseEncryptedCompact.