Skip to main content
Vulnerability Database/CVE-2025-71430

CVE-2025-71430: Frappe Stored XSS Vulnerability

CVE-2025-71430 is a stored cross-site scripting flaw in Frappe that allows authenticated attackers to inject malicious JavaScript through crafted usernames on the leaderboard page. This article covers technical details, affected versions, impact assessment, and mitigation strategies.

Published:

CVE-2025-71430 Overview

CVE-2025-71430 is a stored cross-site scripting (XSS) vulnerability in the Frappe framework. The flaw exists in the leaderboard page, which renders user names without proper output neutralization [CWE-79]. Authenticated attackers can set a crafted user name containing JavaScript payloads. When other users view the leaderboard, the payload executes in their browsers under the application's origin. The issue affects Frappe versions before 14.99.10 and 15.x versions before 15.91.1.

Critical Impact

Authenticated attackers can execute arbitrary JavaScript in the browser sessions of other Frappe users viewing the leaderboard, enabling session theft, UI manipulation, and actions performed under the victim's identity.

Affected Products

  • Frappe framework versions prior to 14.99.10
  • Frappe framework 15.x versions prior to 15.91.1
  • Applications built on vulnerable Frappe versions that expose the leaderboard page

Discovery Timeline

  • 2026-10-12 - CVE-2025-71430 published to NVD
  • 2026-10-12 - Last updated in NVD database

Technical Details for CVE-2025-71430

Vulnerability Analysis

The vulnerability is a stored XSS flaw in the Frappe leaderboard component. The leaderboard renders user-controlled fields, specifically user names, directly into the HTML response. Frappe does not apply proper HTML entity encoding or sanitization before rendering these values. An authenticated attacker can update their own user profile to inject a JavaScript payload inside the full_name or equivalent display field. When another user loads the leaderboard view, their browser parses the injected markup and executes the script in the context of the Frappe application origin.

Stored XSS in a shared view amplifies impact. The payload persists in the database and fires against every visitor to the leaderboard, including administrators. Attackers can leverage this to exfiltrate session cookies, issue authenticated API requests on behalf of victims, or modify rendered content to stage follow-on social engineering.

Root Cause

The root cause is improper neutralization of input during web page generation [CWE-79]. The leaderboard template interpolates user-supplied display names without context-aware escaping, violating the output encoding requirements for HTML sinks.

Attack Vector

Exploitation requires network access to the Frappe application and a valid low-privilege authenticated account. The attacker modifies the account's user name to include an HTML or script payload. Delivery occurs passively: any user visiting the leaderboard triggers the payload. User interaction from the victim is limited to viewing the page.

No verified public proof-of-concept code is available. For technical details, refer to the GitHub Security Advisory GHSA-cx24-w5gm-5vv9 and the VulnCheck Stored XSS Advisory.

Detection Methods for CVE-2025-71430

Indicators of Compromise

  • User profile records containing HTML tags, <script> elements, or javascript: URIs in the full_name or related display fields.
  • Unexpected outbound requests from browser sessions after loading the /leaderboard route, especially to attacker-controlled domains.
  • Audit log entries showing user name updates immediately followed by access to the leaderboard page from other accounts.

Detection Strategies

  • Query the Frappe tabUser table for display name fields matching regex patterns such as <[^>]+>, on\\w+=, or javascript:.
  • Deploy a Content Security Policy (CSP) in report-only mode to surface inline script violations originating from leaderboard pages.
  • Review web server access logs for high-frequency requests to the leaderboard endpoint correlated with recent user profile changes.

Monitoring Recommendations

  • Alert on modifications to user display name fields that contain HTML metacharacters.
  • Monitor browser error telemetry and CSP violation reports for scripts injected on authenticated pages.
  • Track Frappe version strings across deployments to confirm all instances meet the patched baseline.

How to Mitigate CVE-2025-71430

Immediate Actions Required

  • Upgrade Frappe to version 14.99.10 or later for the 14.x branch, or 15.91.1 or later for the 15.x branch.
  • Audit existing user records and remove or sanitize any display names containing HTML or script content.
  • Invalidate active sessions for administrators who may have visited the leaderboard prior to remediation.

Patch Information

The maintainers released fixes in Frappe 14.99.10 and 15.91.1. The patches add proper output neutralization for user-supplied names rendered on the leaderboard. Refer to the GitHub Security Advisory GHSA-cx24-w5gm-5vv9 for commit references and version metadata.

Workarounds

  • Restrict access to the leaderboard page via role permissions until patching is complete.
  • Enforce a strict Content Security Policy that disallows inline scripts and limits script sources to trusted origins.
  • Validate user name updates server-side to reject input containing HTML tags or JavaScript URI schemes.
bash
# Upgrade Frappe to a patched release using bench
bench update --patch
bench switch-to-branch version-15 frappe --upgrade
bench pip install --upgrade frappe==15.91.1
bench migrate
bench restart

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.