{"id":"CVE-2026-116587","kind":"vulnerability","aliases":["CVE-2026-116587"],"related":[],"title":"go-jose: crafted RSA key in JWK causes CPU exhaustion and denial of service","description":"Go JOSE provides an implementation of the Javascript Object Signing and Encryption set of standards in Go, including support for JSON Web Encryption (JWE), JSON Web Signature (JWS), and JSON Web Token (JWT) standards. Prior to 4.1.6, go-jose parses attacker-controlled RSA modulus and prime values from JWKs without enforcing size and consistency bounds before passing them to crypto/rsa.PrivateKey.Validate. On Go 1.24 and later, crafted large or degenerate RSA parameters can make that validation consume cubic CPU time, allowing remote denial of service in applications that parse JWKs from untrusted sources. This issue is fixed in version 4.1.6.","summary":"go-jose parses RSA modulus and prime values from JWKs without size checks, so a crafted key makes Go's RSA validation take cubic CPU time. An attacker who can submit JWKs to an application that parses untrusted keys can cause a remote denial of service.","severity":"high","cvss":7.5,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["go","go-jose","jwk","jwt","package"],"not_affected_if":["go-below-1.24","no-untrusted-jwk-parsing","trusted-keys-only"],"how_to_check":"- Check the go-jose version in `go.mod` (for example `grep go-jose go.mod`); versions below `4.1.6` are affected.\n- Confirm the Go toolchain is `1.24` or later with `go version`, since the slowdown depends on that release.\n- Find code that calls the JWK parsing functions on keys received from users or external sources.","fix":"- Upgrade go-jose to `4.1.6` or later (`go get github.com/go-jose/go-jose/v4@v4.1.6`).\n- Until upgraded, only parse JWKs from trusted sources.","status":"open","published_at":"2026-10-26T22:16:55+00:00","first_seen_at":"2026-10-26T22:25:33+00:00","triaged_at":"2026-10-26T22:27:40+00:00","updated_at":"2026-10-26T22:27:40+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-10-26T22:27:40Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade go-jose to `4.1.6` or later (`go get github.com/go-jose/go-jose/v4@v4.1.6`).\n- Until upgraded, only parse JWKs from trusted sources.","reach":"internet","title":"go-jose: crafted RSA key in JWK causes CPU exhaustion and denial of service","impact":"medium","summary":"go-jose parses RSA modulus and prime values from JWKs without size checks, so a crafted key makes Go's RSA validation take cubic CPU time. An attacker who can submit JWKs to an application that parses untrusted keys can cause a remote denial of service.","category":"package","nicknames":[],"who_cares":["go","jwt","jwk","go-jose"],"confidence":0.7,"needs_auth":"unknown","worst_case":"Remote attacker exhausts CPU and makes the service unresponsive.","analyst_note":"","how_to_check":"- Check the go-jose version in `go.mod` (for example `grep go-jose go.mod`); versions below `4.1.6` are affected.\n- Confirm the Go toolchain is `1.24` or later with `go version`, since the slowdown depends on that release.\n- Find code that calls the JWK parsing functions on keys received from users or external sources.","needs_analyst":false,"not_affected_if":["trusted-keys-only","no-untrusted-jwk-parsing","go-below-1.24"],"who_is_affected":"Applications that import go-jose and parse JSON Web Keys supplied by untrusted parties, such as public JWKS endpoints or user-submitted keys, on Go 1.24 or later. Services that only handle keys they load from their own configuration, or that never parse attacker-supplied JWKs, are not exposed.","user_interaction":"no","needs_special_setup":"no","severity_if_unknown":"high"},"cost_usd":0.000663,"input_tokens":3459,"output_tokens":635,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-116587':18A,21A '-2026':17A,20A '1.24':140C '4.1.6':112C,176C 'allow':157C 'applic':64B,163C 'attack':57B,118C 'attacker-control':117C 'bound':132C 'caus':9A,70B 'check':42B 'consist':131C 'consum':153C 'control':119C 'cpu':10A,54B,155C 'craft':4A,45B,143C 'crypto/rsa.privatekey.validate':137C 'cubic':53B,154C 'cve':16A,19A 'degener':146C 'denial':13A,73B,159C 'encrypt':87C,98C 'enforc':128C 'exhaust':11A 'fix':173C 'go':2A,22B,24B,30B,48B,76C,92C,114C,139C 'go-jos':1A,23B,29B,113C 'implement':80C 'includ':93C 'issu':171C 'javascript':83C 'jose':3A,25B,31B,77C,115C 'json':96C,100C,105C 'jwe':99C 'jwk':8A,26B 'jwks':39B,61B,126C,166C 'jws':103C 'jwt':27B,108C 'key':6A,46B,68B 'larg':144C 'later':142C 'make':47B,150C 'modulus':34B,121C 'object':84C 'packag':28B 'paramet':148C 'pars':32B,66B,116C,165C 'pass':134C 'prime':36B,123C 'prior':110C 'provid':78C 'remot':72B,158C 'rsa':5A,33B,50B,120C,147C 'servic':15A,75B,161C 'set':88C 'sign':85C 'signatur':102C 'size':41B,129C 'sourc':169C 'standard':90C,109C 'submit':60B 'support':94C 'take':52B 'time':55B,156C 'token':107C 'untrust':67B,168C 'valid':51B,152C 'valu':37B,124C 'version':175C 'web':97C,101C,106C 'without':40B,127C","nicknames":[],"mitigations":[],"who_affected":"Applications that import go-jose and parse JSON Web Keys supplied by untrusted parties, such as public JWKS endpoints or user-submitted keys, on Go 1.24 or later. Services that only handle keys they load from their own configuration, or that never parse attacker-supplied JWKs, are not exposed.","tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-26T22:16:55+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-116587","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-116587","severity":null,"published_at":"2026-10-26T22:16:55+00:00","modified_at":"2026-10-26T22:16:55+00:00","first_seen_at":"2026-10-26T22:25:33+00:00","fetched_at":"2026-10-26T22:25:33+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}