Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessRegister free subscriber account on open-registration ProfilePress site
-
DeliveryInject shortcode payload into profile bio or display-name field via [profile-bio] or [[tag]] bypass
-
ExploitTrigger server-side render of member directory or public profile page
-
ExecutionAttacker-controlled text bypasses strip_shortcodes() and reaches outer do_shortcode() call
-
PersistArbitrary WordPress shortcode executes in site application context
-
ImpactExfiltrate data or invoke sensitive plugin functionality available to installed shortcodes
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Code injection prevention, sandbox exec
MITRE ATT&CK
2 techniques across 2 tactics: Execution, Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires an authenticated WordPress user account at subscriber level or above - the minimum role automatically granted on any ProfilePress site with open registration, which is the plugin's primary deployment model. The attacker must be able to write to at least one of the vulnerable profile fields: the user bio (user_description meta), the display name with the first_last_names format parameter, or any field that reaches a do_shortcode() call without sanitization. Exploitation is further conditioned on the rendered profile or member directory being processed server-side (not cached in a state that prevents shortcode execution). The practical impact ceiling is gated by what shortcodes are installed on the target WordPress instance - sites with only benign shortcodes face lower impact. Exploitation is NOT possible without subscriber-level authentication; anonymous visitors cannot trigger the vulnerable code paths. The double-bracket [[tag]] bypass does not require any special configuration beyond the attacker controlling a profile field value. |
| Impact | The NVD CVSS 3.1 vector AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N scores 5.4 (Medium), accurately capturing that this is network-reachable, requires no complexity or user interaction, but does demand subscriber-level authentication and does not escape WordPress's application scope. The unchanged scope (S:U) means the vulnerability does not directly yield OS-level code execution, which is the critical nuance behind the 'RCE' tag in the input - practical impact depends entirely on what other shortcodes are installed on the target site (file-reading shortcodes, email shortcodes, admin shortcodes from other plugins). On a site with a rich plugin ecosystem, blast radius can substantially exceed C:L/I:L. No CISA KEV listing and no confirmed public exploit code keep this from being an immediate emergency, but three distinct bypass routes around the vendor's attempted partial fix indicate the mitigation was insufficient and that a complete remediation is required. EPSS data was not provided in the available intelligence; exploitation probability cannot be quantified. The low authentication requirement (subscriber) is the primary risk amplifier: any ProfilePress deployment with open public registration is exposed to the full subscriber-level attacker pool without further preconditions. |
| Exploit ScenarioDerived | An attacker self-registers a free subscriber account on a WordPress site running ProfilePress 4.16.19, then edits their profile and sets the bio field to contain an arbitrary WordPress shortcode payload. When any visitor or the site itself renders the member directory or public profile page, the [profile-bio] shortcode render path re-fetches the raw user_description meta and passes it directly to do_shortcode(), executing the attacker's payload in the WordPress application context. Alternatively, the attacker uses the [[malicious_shortcode]] double-bracket notation in a display-name field, which passes strip_shortcodes() silently and is later resolved by the outer do_shortcode() call; no public exploit code is confirmed, but all three bypass paths are precisely documented in the CVE source code references. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 16, 2026
Arbitrary shortcode execution in ProfilePress (WordPress plugin) versions through 4.16.19 permits authenticated attackers holding only subscriber-level accounts to inject and run arbitrary WordPress shortcodes within the site context. The plugin's partial mitigation - applying strip_shortcodes() to [profile-first-name] and [profile-last-name] fields - is bypassed via at least three confirmed paths: the [profile-display-name format="first_last_names"] render chain, the [profile-bio] field (which re-fetches raw user_description meta, bypassing the sanitized value), and the double-bracket escape sequence [[tag]] that passes through strip_shortcodes() unmodified but is resolved by the outer do_shortcode() call. No public exploit code has been confirmed at time of analysis, but the low authentication bar (self-registration is the plugin's core use case) and three documented bypass vectors make this a meaningful risk on open-registration membership sites.
RemediationAI
Update ProfilePress to a version above 4.16.19 - upstream changeset 3635466 in the wp-user-avatar repository (https://plugins.trac.wordpress.org/changeset?reponame=&old=3635466%40wp-user-avatar&new=3635466%40wp-user-avatar) contains the fix commit, though the exact tagged release version incorporating this changeset is not confirmed in the available data and must be verified against the current WordPress.org plugin listing or the Wordfence advisory before updating. As a compensating control prior to patching, disable open user self-registration on the WordPress site (Settings > General > uncheck 'Anyone can register') to eliminate the unauthenticated-to-subscriber escalation path; this may conflict with the plugin's core membership use case and requires business approval. Additionally, audit all installed WordPress plugins for shortcodes that perform sensitive operations (file reads, email dispatch, privilege assignment) to understand the true blast radius if shortcode injection is already active in your environment. Do not rely on the partial strip_shortcodes() mitigation present in 4.16.19 - it is confirmed bypassable via the three paths described in the CVE.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
ProfilePress - distributed under the package slug wp-user-avatar and maintained by properfraction - is a WordPress membership, ecommerce, and user-profile plugin. The vulnerability is rooted in CWE-94 (Improper Control of Generation of Code / Code Injection): user-supplied profile field values reach WordPress's do_shortcode() function without adequate sanitization. The affected CPE is cpe:2.3:a:properfraction:paid_membership_plugin,_ecommerce,_user_registration_form,_login_form,_user_profile_&_restrict_content_-_profilepress:*. Specific vulnerable call sites identified in the referenced source code are: ShortcodeParser/MemberDirectoryTag.php line 98 and Themes/DragDrop/MemberDirectoryListing.php line 90 (member directory render), ShortcodeParser/Builder/FrontendProfileBuilder.php line 286 (profile display-name rendering), and Classes/RegistrationAuth.php line 170 (registration flow). The [profile-bio] path is particularly notable because it re-fetches the raw user_description meta from the database rather than using a pre-sanitized value, effectively sidestepping any stripping applied earlier in the request cycle. The double-bracket [[tag]] bypass exploits WordPress core's own shortcode unescaping behavior: strip_shortcodes() does not strip double-bracketed sequences, but do_shortcode() subsequently converts [[tag]] to [tag] and executes it.
Know when Paid Membership Plugin Ecommerce User Registration Form Login Form User Profile Restrict Content Profilepress 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
AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N
Network-reachable profile submission, subscriber auth required (PR:L), no user interaction needed, scope unchanged as execution stays within WordPress application boundary with limited direct C/I impact.
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
DescriptionCVE.org
The The Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content - ProfilePress plugin for WordPress is vulnerable to arbitrary shortcode execution in all versions up to, and including, 4.16.19. This is due to the software allowing users to execute an action that does not properly validate a value before running do_shortcode. This makes it possible for authenticated attackers, with subscriber-level access and above, to execute arbitrary shortcodes. The partial mitigation introduced via strip_shortcodes() on [profile-first-name] and [profile-last-name] can be bypassed through the [profile-display-name format="first_last_names"] render path, the [profile-bio] render path (which re-fetches the raw description meta), and the double-bracket escape sequence [[tag]], all of which allow attacker-controlled shortcode text to reach the outer do_shortcode() call.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
More in Paid Membership Plugin Ecommerce User Registration Form Login Form User Profile Restrict Content Profilepress
View allSensitive information exposure in the ProfilePress WordPress plugin (wp-user-avatar), affecting all versions up to and i
Remote code execution is possible in the ProfilePress WordPress plugin (Paid Membership, Ecommerce, User Registration) i
Authenticated users with subscriber-level access or higher can execute arbitrary WordPress shortcodes through the Profil
Authenticated attackers with subscriber-level access can obtain paid lifetime membership plans in the ProfilePress WordP
Arbitrary shortcode execution in ProfilePress plugin for WordPress (all versions up to 4.16.11) allows unauthenticated a
Reflected cross-site scripting (XSS) in the ProfilePress WordPress plugin versions up to and including 4.17.4 allows una
Arbitrary shortcode execution in the ProfilePress (formerly WP User Avatar) WordPress plugin through version 4.17.5 allo
Missing authorization check in ProfilePress (WordPress membership plugin) versions ≤4.16.12 allows authenticated attacke
EUVD-2026-59853
GHSA-7fv3-hq52-c73p
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB