Severity by source
AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N
Stored XSS requires victim to load the injected page (UI:R); subscriber auth required (PR:L); scope change confirmed as payload executes in other users' sessions (S:C).
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
Lifecycle Timeline
2DescriptionCVE.org
The wpForo Forum plugin for WordPress is vulnerable to Stored Cross-Site Scripting via 'location' Profile Field in all versions up to, and including, 3.1.1 due to insufficient input sanitization and output escaping. This makes it possible for authenticated attackers, with subscriber-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. The sanitize_text_field() function applied at input does not encode double quotes, allowing attribute breakout via a payload that escapes the href attribute context and injects event handler attributes.
AnalysisAI
Stored Cross-Site Scripting in the wpForo Forum WordPress plugin (all versions through 3.1.1) allows authenticated attackers with subscriber-level access to permanently inject malicious JavaScript via the 'location' profile field. The root failure is WordPress's native sanitize_text_field() function, which strips tags but leaves double quotes unencoded, enabling attribute breakout from an href context into injected event-handler attributes. With a CVSS scope change (S:C), successful exploitation can impact sessions of any user - including administrators - who views a poisoned profile page, enabling session hijacking or privilege escalation. No public exploit or CISA KEV listing has been identified at time of analysis.
Technical ContextAI
wpForo Forum (CPE: cpe:2.3:a:tomdever:wpforo_forum) is a WordPress plugin providing community forum functionality. The vulnerability resides in the 'location' profile field, processed in Forms.php (lines 1035, 1074) and Members.php (line 1031) as confirmed by the WordPress plugin trac source references for both the 3.0.5 and 3.1.1 tags. CWE-79 (Improper Neutralization of Input During Web Page Generation) describes the root class: user-supplied input is stored and later rendered in an HTML attribute context without proper output encoding. The specific failure is reliance on WordPress's sanitize_text_field() at input time, which strips HTML tags and encodes some characters but does NOT encode double quotes. An attacker can supply a payload such as [space]" onclick="payload that terminates the href attribute value and injects an event-handler attribute, which the browser executes when a user interacts with or simply loads the rendered element. Because the injected script runs in the victim's browser session, the effective scope extends beyond the submitting user to any viewer of that profile page.
RemediationAI
A code-level fix is referenced by the WordPress plugin trac changeset at https://plugins.trac.wordpress.org/changeset?reponame=&old=3603849%40wpforo&new=3603849%40wpforo; however, the exact patched release version is not confirmed from the available intelligence data - site administrators should update wpForo Forum to the latest version available in the WordPress Plugin Directory and verify the installed version exceeds 3.1.1. The remediation must switch from sanitize_text_field() to proper HTML attribute encoding (e.g., esc_attr() in WordPress) on output of the location field in Forms.php (lines ~1035, ~1074) and Members.php (line ~1031). As a compensating control while patching is pending, administrators can restrict new user registrations to prevent unauthenticated individuals from obtaining subscriber accounts, or limit access to profile editing for subscriber-level users via role management plugins. The trade-off of restricting registration is that it disables forum onboarding; limiting profile editing may break intended forum functionality. Full details are at https://www.wordfence.com/threat-intel/vulnerabilities/id/2cd364c5-c053-4c50-8232-bb47ab8e834b.
More in Wpforo Forum
View allThe wpForo Forum plugin for WordPress is vulnerable to Local File Include, Server-Side Request Forgery, and PHAR Deseria
The wpForo Forum plugin for WordPress is vulnerable to SQL Injection via the 'slug' attribute of the 'wpforo' shortcode
The wpForo Forum WordPress plugin before 2.1.9 does not escape some request parameters while in debug mode, leading to a
The wpForo Forum WordPress plugin before 1.9.7 did not validate the redirect_to parameter in the login form of the forum
wpforo_get_request_uri in wpf-includes/functions.php in the wpForo Forum plugin before 1.4.12 for WordPress allows Unaut
Unauthenticated PHP Object Injection in the wpForo Forum WordPress plugin versions 3.1.0 and earlier allows remote attac
Authentication bypass in the wpForo Forum WordPress plugin versions 3.1.0 and earlier allows remote unauthenticated atta
Stored cross-site scripting in wpForo Forum WordPress plugin before 3.1.2 allows a subscriber-level authenticated user t
Insecure Direct Object Reference (IDOR) in the wpForo Forum WordPress plugin before 3.1.2 allows any subscriber-level au
Unauthenticated SQL injection in the wpForo Forum WordPress plugin (versions 3.0.4 and earlier) allows remote attackers
Arbitrary file deletion in wpForo Forum WordPress plugin versions ≤2.4.16 allows authenticated attackers with subscriber
Auth. Rated high severity (CVSS 8.8), this vulnerability is remotely exploitable, low attack complexity. No vendor patch
Same weakness CWE-79 – Cross-site Scripting (XSS)
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-44899
GHSA-76cp-m73j-f6wq