CVE-2026-104003: Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content <= 4.17.5 - Authenticated (Subscriber+) Arbitrary Shortcode Execution via Comment Content Rendered on ProfilePress User Profile 'Comments' Tab
The WP User Avatar / ProfilePress plugin for WordPress is vulnerable to Arbitrary Shortcode Execution in versions up to, and including, 4.17.5. This is due to the getuserprofilestructure() function assembling the front-end profile buffer — which includes raw comment excerpts inlined by authorcommentquery() — and passing the entire buffer to doshortcode() after only a narrow neutralization pass (ppressneutralizebuffershortcodes) that blocks pp-custom-html and bracket fragments containing HTML delimiters but leaves any other well-formed shortcode intact. This makes it possible for authenticated attackers, with Subscriber-level access and above, to inject arbitrary shortcodes (from any active plugin or theme) with attacker-chosen attributes by posting a comment whose body contains the shortcode markup; the shortcode is then executed server-side when any visitor loads the target's front-end profile Comments tab, letting the attacker reach capability-gated or data-returning shortcodes and inject raw HTML markup into a publicly viewable page.
Affected Software
Event History
Frequently Asked Questions
Who can exploit this issue and what access do they need?
An attacker needs an authenticated WordPress account with Subscriber-level access or higher. They must be able to post a comment containing shortcode markup.
When is the injected shortcode executed?
The shortcode is executed server-side when a visitor loads the affected user’s front-end ProfilePress profile Comments tab. This can expose the payload on a publicly viewable page.
What determines the impact of a successful exploit?
Impact depends on the shortcodes supplied by active plugins or themes. An attacker can invoke well-formed shortcodes with chosen attributes, potentially reaching capability-gated or data-returning functionality and injecting raw HTML.
Are all shortcode payloads blocked by the plugin's filtering?
No. The described neutralization blocks pp-custom-html and bracket fragments containing HTML delimiters, but leaves other well-formed shortcodes intact.