Severity by source
AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N
Primary rating from NVD · only source for this CVE.
CVSS VectorNVD
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N
Lifecycle Timeline
4DescriptionCVE.org
The Coachific Shortcode plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'userhash' shortcode attribute in all versions up to and including 1.0. This is due to insufficient input sanitization and output escaping. The plugin uses sanitize_text_field() on the 'userhash' parameter, which strips HTML tags but does not escape characters significant in a JavaScript string context (such as double quotes, semicolons, and parentheses). The sanitized value is then directly interpolated into a JavaScript string within a <script> tag on line 29 without any JavaScript-specific escaping (e.g., wp_json_encode() or esc_js()). This makes it possible for authenticated attackers, with Contributor-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page.
AnalysisAI
Stored cross-site scripting in Coachific Shortcode plugin for WordPress versions up to 1.0 allows authenticated attackers with Contributor-level access to inject arbitrary JavaScript into pages via the 'userhash' shortcode attribute. The plugin sanitizes input with sanitize_text_field() but fails to apply JavaScript-specific escaping before interpolating the value into a script tag, enabling persistent XSS attacks visible to all page visitors. EPSS score of 6.4 reflects moderate real-world risk constrained by the requirement for authenticated contributor access and user interaction.
Technical ContextAI
The vulnerability stems from improper output encoding in WordPress plugin development. The Coachific Shortcode plugin (CPE: cpe:2.3:a:coachific:coachific_shortcode:*:*:*:*:*:*:*:*) uses sanitize_text_field() to strip HTML tags from the 'userhash' parameter on line 13, but this WordPress sanitization function does not escape JavaScript metacharacters such as quotes, semicolons, and parentheses that are significant in string contexts. The sanitized value is then directly embedded into a JavaScript string literal within a script tag on line 29 without applying JavaScript-specific escaping functions like esc_js() or wp_json_encode(). This violates the principle of context-aware output encoding; developers must apply different escaping rules depending on whether content is rendered as HTML, JavaScript, CSS, or a URL. The CWE-79 classification (Improper Neutralization of Input During Web Page Generation) correctly identifies the root cause as insufficient input validation combined with unsafe output rendering.
RemediationAI
The plugin developer must apply JavaScript-specific escaping to the 'userhash' parameter before interpolating it into the script tag. Replace the current sanitize_text_field() approach with esc_js() or wp_json_encode() followed by safe embedding in the JavaScript string context. The recommended immediate fix is to update the plugin to version 1.1 or later (once released by the developer) which applies proper output escaping. In the interim, site administrators should restrict contributor-level access to trusted users only and monitor contributor activity logs for suspicious shortcode usage. For detailed remediation guidance, consult the Wordfence vulnerability advisory at https://www.wordfence.com/threat-intel/vulnerabilities/id/3d91158c-0b34-460e-9fdb-b99165ebca78?source=cve and review the vulnerable code references at https://plugins.trac.wordpress.org/browser/coachific-shortcode/trunk/coachific.php.
The isMail transport in PHPMailer before 5.2.20 might allow remote attackers to pass extra parameters to the mail comman
The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1
The Hash Form - Drag & Drop Form Builder plugin for WordPress is vulnerable to arbitrary file uploads due to missing fil
The GiveWP - Donation Plugin and Fundraising Platform plugin for WordPress is vulnerable to PHP Object Injection in all
The Simple File List plugin for WordPress through version 4.2.2 contains an unauthenticated remote code execution vulner
The AI Engine WordPress plugin through version 3.1.3 exposes Bearer Token values through the /mcp/v1/ REST API endpoint
The Ninja Forms plugin before 2.9.42.1 for WordPress allows remote attackers to conduct PHP object injection attacks via
The Business Directory Plugin - Easy Listing Directories for WordPress plugin for WordPress is vulnerable to time-based
SQL injection in the NotificationX WordPress plugin (versions up to and including 2.8.2) allows unauthenticated remote a
The POST SMTP Mailer - Email log, Delivery Failure Notifications and Best Mail SMTP for WordPress plugin for WordPress i
The MasterStudy LMS WordPress Plugin - for Online Courses and Education plugin for WordPress is vulnerable to union base
The Country State City Dropdown CF7 plugin for WordPress is vulnerable to SQL Injection via the ‘cnt’ and 'sid' paramete
Same weakness CWE-79 – Cross-site Scripting (XSS)
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-22868
GHSA-953c-p36c-7pc3