CVE-2025-10181 Overview
CVE-2025-10181 is a Stored Cross-Site Scripting (XSS) vulnerability in the Draft List plugin for WordPress, affecting all versions up to and including 2.6. The flaw resides in the plugin's drafts shortcode, which fails to properly sanitize input and escape output for user-supplied attributes. Authenticated users with contributor-level access or higher can inject arbitrary JavaScript that executes in the browser of any visitor who loads an affected page. The issue is tracked under CWE-79 and documented in the Wordfence Vulnerability Report.
Critical Impact
Contributor-level accounts can persist malicious scripts inside published pages, enabling session theft, forced administrative actions, and site-wide defacement when higher-privileged users view the content.
Affected Products
- WordPress Draft List (Simple Draft List) plugin versions ≤ 2.6
- WordPress sites permitting contributor-level registration or self-signup
- Any page or post rendering the plugin's drafts shortcode
Discovery Timeline
- 2025-09-20 - CVE-2025-10181 published to NVD
- 2026-06-17 - Last updated in NVD database
Technical Details for CVE-2025-10181
Vulnerability Analysis
The Draft List plugin exposes a drafts shortcode that WordPress users can embed in posts and pages to render a list of draft content. The shortcode accepts several attributes controlling display formatting. The plugin passes these attributes into the generated HTML without sufficient sanitization or output escaping. An authenticated contributor can craft a shortcode invocation containing JavaScript payloads inside these attributes and submit it for review or publication. When the page is later rendered, the injected script executes in the context of the site origin, giving attackers the ability to run code under the identity of any viewer, including administrators.
Root Cause
The root cause is missing input sanitization on shortcode attributes combined with missing output escaping in the shortcode handler defined in inc/create-lists.php. The vulnerable code path is referenced in the WordPress Plugin File Browser and the GitHub Create Lists Script. The plugin does not apply functions such as esc_attr() or wp_kses() to attacker-controlled attribute values before echoing them into markup.
Attack Vector
Exploitation requires authenticated access at contributor privilege or higher. An attacker embeds the drafts shortcode with a malicious attribute value inside post or page content. Once an editor or administrator publishes or previews the affected content, any subsequent visitor triggers script execution. The scope is changed (S:C in the CVSS vector), meaning the injected script affects resources beyond the vulnerable component, such as the browser session of the viewing user. Refer to the Wordfence Vulnerability Report for additional context.
Detection Methods for CVE-2025-10181
Indicators of Compromise
- Posts or pages containing [drafts ...] shortcodes with attribute values that include HTML tags, on*= event handlers, or javascript: URIs
- Unexpected <script> tags, iframes, or inline event handlers appearing in rendered post content
- Contributor-role accounts editing or creating content that embeds the drafts shortcode
- Outbound browser requests to attacker-controlled domains originating from pages that render the shortcode
Detection Strategies
- Query the WordPress wp_posts table for post_content values matching the shortcode pattern and inspect attribute contents for suspicious characters
- Review web server access logs for GET requests to pages that host the shortcode, correlated with unusual referrers or user agents
- Deploy Content Security Policy (CSP) reporting to surface inline script violations on pages using the plugin
Monitoring Recommendations
- Audit contributor and author account activity, particularly new draft submissions containing shortcodes
- Alert on installations of the simple-draft-list plugin at versions 2.6 or earlier across managed WordPress fleets
- Monitor administrator sessions for signs of session hijacking, such as new admin accounts or plugin installations following exposure to affected pages
How to Mitigate CVE-2025-10181
Immediate Actions Required
- Update the Draft List plugin to the version published after 2.6 that includes the patch referenced in the WordPress Change Set
- Audit all existing posts and pages for the drafts shortcode and remove any malicious attribute values
- Review contributor, author, and editor accounts and revoke unnecessary privileges
- Rotate administrator credentials if evidence of script execution against admin sessions is present
Patch Information
The plugin author released a corrected version of the Draft List plugin that sanitizes shortcode attributes and escapes output in inc/create-lists.php. The fix is tracked in the WordPress plugin repository change set linked above. Install the updated release from the WordPress Simple Draft List Plugin page and confirm the active version reports higher than 2.6.
Workarounds
- Deactivate and remove the Draft List plugin until the patched version is applied
- Restrict contributor-level registration and require editor approval for shortcode-containing submissions
- Deploy a web application firewall (WAF) rule to block shortcode attributes containing HTML tags or JavaScript event handlers
- Enforce a strict Content Security Policy that disallows inline scripts on pages served by the WordPress site
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

