CVE-2026-89315EUVD-2026-108647GHSA-HWM6-RWV6-XGQ8
JwtClaims.MarshalJSON panics via reflect.StructOf when any untyped claim key is not a valid Go identifier suffix
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 1.0.0-rc4
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
A Go JWT library's claims-serialization function (`JwtClaims.MarshalJSON`) can crash when a token contains custom claim names that aren't valid Go identifiers or that duplicate one another. This can terminate the application that is processing the token, causing a denial of service.
Summarized by anthropic/claude-haiku-5.5. Verify details against the original sources.
Read the original description
`JwtClaims.MarshalJSON` built a Go struct at runtime with `reflect.StructOf`, synthesising a field named `"A" + claimName` for each untyped claim. `reflect.StructOf` panics when a field name is not a valid Go identifier, or when it duplicates another field. Both conditions are reachable from ordinary JWT claim names.
Timeline
- CVE published
- First seen by cve.now
Affected versions
- github.com/ThalesGroup/gose
From 0.7.3 · through 0.13.0-rc1
- github.com/eclipse-keypont/gose
fixed in 1.0.0-rc4