{"id":7274,"date":"2025-09-29T10:04:06","date_gmt":"2025-09-29T10:04:06","guid":{"rendered":"https:\/\/serisec.com\/index.php\/2025\/09\/29\/formbricks-signature-verification-vulnerability-let-attackers-reset-user-passwords-without-authorization\/"},"modified":"2025-09-29T10:04:06","modified_gmt":"2025-09-29T10:04:06","slug":"formbricks-signature-verification-vulnerability-let-attackers-reset-user-passwords-without-authorization","status":"publish","type":"post","link":"https:\/\/serisec.com\/index.php\/2025\/09\/29\/formbricks-signature-verification-vulnerability-let-attackers-reset-user-passwords-without-authorization\/","title":{"rendered":"Formbricks Signature Verification Vulnerability Let Attackers Reset User Passwords Without Authorization"},"content":{"rendered":"<p>    Formbricks Signature Verification Vulnerability Let Attackers Reset User Passwords Without Authorization<br \/>\n \t<BR><br \/>\n<BR><\/BR><br \/>\n    <!-- no image --><br \/>\n \t<BR><br \/>\n<BR><\/BR><\/p>\n<div>\n<p>A critical security flaw discovered in Formbricks, an open-source experience management platform, demonstrates how missing JWT signature verification can lead to complete account takeovers.\u00a0<\/p>\n<p>The vulnerability tracked as CVE-2025-59934 affects all versions prior to 4.0.1 and stems from <a href=\"https:\/\/cybersecuritynews.com\/critical-cisco-flaw\/\" target=\"_blank\" rel=\"noreferrer noopener\">improper token validation<\/a> that uses jwt.decode() instead of jwt.verify(), allowing attackers to bypass authentication controls entirely.<\/p>\n<p>The vulnerability was disclosed by security researcher mattinannt and has been classified as critical due to its potential for unauthorized access to user accounts.\u00a0<\/p>\n<p>Formbricks has since released version 4.0.1 to address this security issue, but organizations running older versions remain at significant risk.<\/p>\n<h2 class=\"wp-block-heading\" id=\"h-jwt-validation-vulnerability\"><strong>JWT Validation Vulnerability<\/strong><\/h2>\n<p>The core vulnerability exists in the token validation routine located in \/formbricks\/apps\/web\/lib\/jwt.ts.\u00a0<\/p>\n<p>The problematic code implements a verifyToken function that only decodes JWT tokens without performing essential security checks:<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" fetchpriority=\"high\" decoding=\"async\" width=\"715\" height=\"117\" src=\"https:\/\/i0.wp.com\/cybersecuritynews.com\/wp-content\/uploads\/2025\/09\/image-180.png?resize=715%2C117&#038;ssl=1\" alt=\"Formbricks Signature Verification Vulnerability\" class=\"wp-image-128256\" srcset=\"https:\/\/cybersecuritynews.com\/wp-content\/uploads\/2025\/09\/image-180.png 715w, https:\/\/cybersecuritynews.com\/wp-content\/uploads\/2025\/09\/image-180-300x49.png 300w, https:\/\/cybersecuritynews.com\/wp-content\/uploads\/2025\/09\/image-180-696x114.png 696w, https:\/\/cybersecuritynews.com\/wp-content\/uploads\/2025\/09\/image-180-150x25.png 150w\" sizes=\"(max-width: 715px) 100vw, 715px\"><\/figure>\n<\/div>\n<p>This implementation fails to verify critical JWT components, including digital signatures, token expiration, issuer validation, and audience verification.\u00a0<\/p>\n<p>The function uses jwt.decode() which simply parses the JWT structure without cryptographic validation, treating any properly formatted JWT as authentic regardless of its legitimacy.<\/p>\n<p>Both the email verification token login path and password reset functionality rely on this flawed validator.\u00a0<\/p>\n<p>When processing password reset requests, the system extracts the user ID from the unverified JWT payload and directly queries the database to update the corresponding user\u2019s password.\u00a0<\/p>\n<p>This bypass mechanism allows attackers who possess a victim\u2019s user.id to craft malicious JWTs using the \u201calg\u201d: \u201cnone\u201d algorithm header, effectively creating unsigned tokens that pass validation.<\/p>\n<p>The exploit requires minimal prerequisites \u2013 attackers need only to discover the target user\u2019s unique identifier, which follows Formbricks\u2019 standard format (e.g., cmfuc8pk60000vxfjud7bcl2w).\u00a0<\/p>\n<p>The attack leverages the \u201cnone\u201d algorithm specification in JWT headers, which indicates no signature verification should be performed.<\/p>\n<p>The proof-of-concept <a href=\"https:\/\/github.com\/formbricks\/formbricks\/security\/advisories\/GHSA-7229-q9pv-j6p4\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">demonstrates<\/a> token forgery using a Python script that constructs a malicious JWT:<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"741\" height=\"367\" src=\"https:\/\/i0.wp.com\/cybersecuritynews.com\/wp-content\/uploads\/2025\/09\/image-181.png?resize=741%2C367&#038;ssl=1\" alt=\"Formbricks Signature Verification Vulnerability\" class=\"wp-image-128257\" srcset=\"https:\/\/cybersecuritynews.com\/wp-content\/uploads\/2025\/09\/image-181.png 741w, https:\/\/cybersecuritynews.com\/wp-content\/uploads\/2025\/09\/image-181-300x149.png 300w, https:\/\/cybersecuritynews.com\/wp-content\/uploads\/2025\/09\/image-181-696x345.png 696w, https:\/\/cybersecuritynews.com\/wp-content\/uploads\/2025\/09\/image-181-324x160.png 324w, https:\/\/cybersecuritynews.com\/wp-content\/uploads\/2025\/09\/image-181-150x74.png 150w\" sizes=\"(max-width: 741px) 100vw, 741px\"><\/figure>\n<\/div>\n<p>The attack sequence follows these steps: the attacker crafts a JWT with header {\u201calg\u201d: \u201cnone\u201d, \u201ctyp\u201d: \u201cJWT\u201d} and payload containing the victim\u2019s user ID, constructs a password reset URL containing the forged token, and submits the form with a new password.\u00a0<\/p>\n<p>The server\u2019s verifyToken function accepts the unsigned token, extracts the user ID, and proceeds with the password update without performing signature verification.<\/p>\n<figure class=\"wp-block-table aligncenter\">\n<table class=\"has-fixed-layout\">\n<tbody>\n<tr>\n<td><strong>Risk Factors<\/strong><\/td>\n<td><strong>Details<\/strong><\/td>\n<\/tr>\n<tr>\n<td>Affected Products<\/td>\n<td>Formbricks &lt; 4.0.1<\/td>\n<\/tr>\n<tr>\n<td>Impact<\/td>\n<td>Elevate privileges and take over a victim\u2019s account<\/td>\n<\/tr>\n<tr>\n<td>Exploit Prerequisites<\/td>\n<td>Know the victim\u2019s actual user.id.Craft a malicious JWT with an alg: \u201cnone\u201d header. Submit the crafted JWT to the email verification token login path or the password reset server action.\u00a0No privileges and no user interaction from the victim.<\/td>\n<\/tr>\n<tr>\n<td>CVSS 3.1 Score<\/td>\n<td>9.4 (Critical)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n<p>This attack vector demonstrates a fundamental <a href=\"https:\/\/cybersecuritynews.com\/teamcity-authentication-bypass-vulnerabilities\/\" target=\"_blank\" rel=\"noreferrer noopener\">authentication bypass<\/a> vulnerability where the absence of cryptographic validation renders the entire JWT-based security model ineffective.\u00a0<\/p>\n<p>The vulnerability affects<a href=\"https:\/\/cybersecuritynews.com\/critical-wso2-soap-vulnerability\/\" target=\"_blank\" rel=\"noreferrer noopener\"> password reset functionality<\/a> and email verification processes, potentially enabling widespread account compromise across Formbricks installations.<\/p>\n<p>Organizations using affected Formbricks versions should immediately upgrade to version 4.0.1 or later and review their authentication logs for suspicious password reset activities.\u00a0<\/p>\n<p>The fix implements proper JWT signature verification using jwt.verify() instead of the vulnerable jwt.decode() method, ensuring that only cryptographically valid tokens can authenticate users and authorize sensitive operations like password resets.<\/p>\n<p class=\"has-text-align-center has-background\" style=\"background:linear-gradient(180deg,rgb(238,238,238) 94%,rgb(169,184,195) 100%)\"><strong>Follow us on <a href=\"https:\/\/news.google.com\/publications\/CAAqMggKIixDQklTR3dnTWFoY0tGV041WW1WeWMyVmpkWEpwZEhsdVpYZHpMbU52YlNnQVAB?hl=en-IN&amp;gl=IN&amp;ceid=IN:en\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Google News<\/a>, <a href=\"https:\/\/www.linkedin.com\/company\/cybersecurity-news\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">LinkedIn<\/a>, and <a href=\"https:\/\/x.com\/cyber_press_org\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">X<\/a> for daily cybersecurity updates. <a href=\"https:\/\/cybersecuritynews.com\/contact-us\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Contact us<\/a> to feature your stories.<\/strong><\/p>\n<p>The post <a href=\"https:\/\/cybersecuritynews.com\/formbricks-signature-verification-vulnerability\/\">Formbricks Signature Verification Vulnerability Let Attackers Reset User Passwords Without Authorization<\/a> appeared first on <a href=\"https:\/\/cybersecuritynews.com\/\">Cyber Security News<\/a>.<\/p>\n<\/div>\n<p> \t<BR><br \/>\n <BR><\/BR><br \/>\n    Florence Nightingale<br \/>\n \t<BR><br \/>\n<BR><\/BR><br \/>\n<a href=\"https:\/\/cybersecuritynews.com\/formbricks-signature-verification-vulnerability\/\">Go to cyber-security-news<\/a><br \/>\n \t<BR><br \/>\n <BR><\/BR><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Formbricks Signature Verification Vulnerability Let Attackers Reset User Passwords Without Authorization A critical security flaw discovered in Formbricks, an open-source experience management platform, demonstrates how missing JWT signature verification can lead to complete account takeovers.\u00a0 The vulnerability tracked as CVE-2025-59934 affects all versions prior to 4.0.1 and stems from improper token validation that uses jwt.decode() [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[129,63,131,648],"tags":[130],"class_list":["post-7274","post","type-post","status-publish","format-standard","hentry","category-cyber-security","category-cyber-security-news","category-vulnerability","category-vulnerability-news","tag-cyber-security-news"],"_links":{"self":[{"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/posts\/7274"}],"collection":[{"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/comments?post=7274"}],"version-history":[{"count":0,"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/posts\/7274\/revisions"}],"wp:attachment":[{"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/media?parent=7274"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/categories?post=7274"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/tags?post=7274"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}