← Back to CVE Explorer

CVE-2025-59934

Full vulnerability record from the local CVENow database.

Description

Formbricks is an open source qualtrics alternative. Prior to version 4.0.1, Formbricks is missing JWT signature verification. This vulnerability stems from a token validation routine that only decodes JWTs (jwt.decode) without verifying their signatures. Both the email verification token login path and the password reset server action use the same validator, which does not check the token’s signature, expiration, issuer, or audience. If an attacker learns the victim’s actual user.id, they can craft an arbitrary JWT with an alg: "none" header and use it to authenticate and reset the victim’s password. This issue has been patched in version 4.0.1.

Severity
CRITICAL
CVSS score
9.4 (v3.1)
Vulnerability status
Deferred
Source identifier
Published
2025-09-26 23:15:32.613000
Last modified
2026-10-19 16:10:00.260000
View original CVE JSON
{
  "id": "CVE-2025-59934",
  "sourceIdentifier": "[email protected]",
  "published": "2025-09-26T23:15:32.613",
  "lastModified": "2026-10-19T16:10:00.260",
  "vulnStatus": "Deferred",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "Formbricks is an open source qualtrics alternative. Prior to version 4.0.1, Formbricks is missing JWT signature verification. This vulnerability stems from a token validation routine that only decodes JWTs (jwt.decode) without verifying their signatures. Both the email verification token login path and the password reset server action use the same validator, which does not check the token’s signature, expiration, issuer, or audience. If an attacker learns the victim’s actual user.id, they can craft an arbitrary JWT with an alg: \"none\" header and use it to authenticate and reset the victim’s password. This issue has been patched in version 4.0.1."
    },
    {
      "lang": "es",
      "value": "Formbricks es una alternativa de código abierto a Qualtrics. Antes de la versión 4.0.1, Formbricks carece de verificación de firma JWT. Esta vulnerabilidad se deriva de una rutina de validación de tokens que solo decodifica JWTs (jwt.decode) sin verificar sus firmas. Tanto la ruta de inicio de sesión del token de verificación de correo electrónico como la acción del servidor de restablecimiento de contraseña utilizan el mismo validador, que no verifica la firma, la caducidad, el emisor o la audiencia del token. Si un atacante aprende el user.id real de la víctima, puede crear un JWT arbitrario con un encabezado alg: 'none' y usarlo para autenticar y restablecer la contraseña de la víctima. Este problema ha sido parcheado en la versión 4.0.1."
    }
  ],
  "affected": [
    {
      "source": "[email protected]",
      "affectedData": [
        {
          "vendor": "formbricks",
          "product": "formbricks",
          "versions": [
            {
              "version": "< 4.0.1",
              "status": "affected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {
    "cvssMetricV31": [
      {
        "source": "[email protected]",
        "type": "Secondary",
        "cvssData": {
          "version": "3.1",
          "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:L",
          "baseScore": 9.4,
          "baseSeverity": "CRITICAL",
          "attackVector": "NETWORK",
          "attackComplexity": "LOW",
          "privilegesRequired": "NONE",
          "userInteraction": "NONE",
          "scope": "UNCHANGED",
          "confidentialityImpact": "HIGH",
          "integrityImpact": "HIGH",
          "availabilityImpact": "LOW"
        },
        "exploitabilityScore": 3.9,
        "impactScore": 5.5
      }
    ],
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "timestamp": "2025-09-29T14:59:35.884199Z",
          "id": "CVE-2025-59934",
          "options": [
            {
              "exploitation": "poc"
            },
            {
              "automatable": "yes"
            },
            {
              "technicalImpact": "partial"
            }
          ],
          "role": "CISA Coordinator",
          "version": "2.0.3"
        }
      }
    ]
  },
  "weaknesses": [
    {
      "source": "[email protected]",
      "type": "Secondary",
      "description": [
        {
          "lang": "en",
          "value": "CWE-287"
        },
        {
          "lang": "en",
          "value": "CWE-345"
        },
        {
          "lang": "en",
          "value": "CWE-347"
        }
      ]
    }
  ],
  "references": [
    {
      "url": "https://github.com/formbricks/formbricks/blob/843110b0d6c37b5c0da54291616f84c91c55c4fc/apps/web/lib/jwt.ts#L114-L117",
      "source": "[email protected]"
    },
    {
      "url": "https://github.com/formbricks/formbricks/commit/eb1349f205189d5b2d4a95ec42245ca98cf68c82",
      "source": "[email protected]"
    },
    {
      "url": "https://github.com/formbricks/formbricks/pull/6596",
      "source": "[email protected]"
    },
    {
      "url": "https://github.com/formbricks/formbricks/security/advisories/GHSA-7229-q9pv-j6p4",
      "source": "[email protected]"
    }
  ]
}