CVE-2026-5721 Overview
A Stored Cross-Site Scripting (XSS) vulnerability has been identified in the wpDataTables – WordPress Data Table, Dynamic Tables & Table Charts Plugin for WordPress. The vulnerability exists in all versions up to and including 6.5.0.4 and stems from insufficient input sanitization and output escaping in the prepareCellOutput() method of the LinkWDTColumn, ImageWDTColumn, and EmailWDTColumn classes. This flaw allows unauthenticated attackers to inject arbitrary web scripts that execute when users access affected pages.
Critical Impact
Unauthenticated attackers can inject persistent malicious scripts through imported data, compromising website visitors and potentially leading to session hijacking, credential theft, or further site compromise.
Affected Products
- wpDataTables – WordPress Data Table, Dynamic Tables & Table Charts Plugin versions up to and including 6.5.0.4
- WordPress installations using vulnerable wpDataTables plugin versions with Link, Image, or Email column types configured
Discovery Timeline
- April 20, 2026 - CVE-2026-5721 published to NVD
- April 22, 2026 - Last updated in NVD database
Technical Details for CVE-2026-5721
Vulnerability Analysis
This vulnerability is classified as CWE-79 (Improper Neutralization of Input During Web Page Generation). The root issue lies in the plugin's failure to properly sanitize user-controlled input and escape output when processing data for Link, Image, and Email column types within data tables.
The attack requires a specific exploitation chain: an attacker must first trick an Administrator into importing data from an attacker-controlled source. When the imported data contains malicious payloads and is displayed through the affected column types, the injected scripts execute in the context of any user viewing the page containing the compromised table.
The network-based attack vector with high complexity indicates that while remote exploitation is possible, successful attacks require social engineering to manipulate administrators into importing malicious data sources.
Root Cause
The vulnerability originates from insufficient input sanitization and output escaping in the prepareCellOutput() method across three specific column handler classes: LinkWDTColumn, ImageWDTColumn, and EmailWDTColumn. When these column types process imported data, malicious script content passes through without proper encoding, allowing stored XSS payloads to persist in the WordPress database and execute on page render.
Attack Vector
The exploitation scenario involves an attacker preparing a malicious data source (such as a CSV file or remote data endpoint) containing XSS payloads embedded in fields that will be processed as Link, Image, or Email columns. The attacker then convinces a WordPress administrator to import this data into a wpDataTables table. Once imported, the malicious scripts become stored in the database and execute whenever any user—including other administrators or site visitors—views a page containing the compromised data table.
The attack can potentially lead to session hijacking, unauthorized administrative actions, defacement, or further malware distribution to site visitors.
Detection Methods for CVE-2026-5721
Indicators of Compromise
- Unusual JavaScript code or encoded script tags within wpDataTables table cell content in the WordPress database
- Unexpected external resource loading or redirects on pages containing data tables
- Reports of browser security warnings or unexpected behavior when viewing pages with wpDataTables content
- Suspicious data import activities in WordPress admin logs, particularly from unknown external sources
Detection Strategies
- Review WordPress database entries for wp_wpdatatables and related tables for suspicious script tags or encoded JavaScript
- Implement Content Security Policy (CSP) headers to detect and block inline script execution attempts
- Monitor web application firewall (WAF) logs for XSS pattern matches on pages containing data tables
- Audit recent data import activities and verify the legitimacy of all external data sources used
Monitoring Recommendations
- Deploy SentinelOne Singularity to monitor for suspicious script execution patterns on WordPress hosting infrastructure
- Enable browser-side XSS auditor logging where available to identify attempted script injections
- Implement real-time alerting for database modifications to wpDataTables content tables
- Monitor outbound network connections from the web server for data exfiltration attempts
How to Mitigate CVE-2026-5721
Immediate Actions Required
- Update wpDataTables plugin to a version newer than 6.5.0.4 that includes the security fix
- Review and audit all existing data tables that use Link, Image, or Email column types for malicious content
- Temporarily disable data import functionality until the plugin is updated
- Implement Content Security Policy headers to mitigate the impact of any existing stored XSS payloads
Patch Information
A security patch addressing this vulnerability is available through the WordPress plugin repository. The fix can be reviewed in the WordPress Plugin Changeset. Additional vulnerability details are documented in the Wordfence Vulnerability Report.
Organizations should prioritize updating to the patched version through the WordPress admin dashboard or by manually downloading and installing the updated plugin files.
Workarounds
- Restrict data import capabilities to only trusted administrators and disable imports from external URLs
- Avoid using Link, Image, or Email column types until the plugin is updated to a patched version
- Implement a Web Application Firewall (WAF) with rules to filter XSS payloads in data import requests
- Apply strict Content Security Policy headers to prevent inline script execution on affected pages
# Example Content Security Policy header configuration for Apache
# Add to .htaccess or virtual host configuration
Header set Content-Security-Policy "default-src 'self'; script-src 'self'; object-src 'none';"
# For Nginx, add to server block
# add_header Content-Security-Policy "default-src 'self'; script-src 'self'; object-src 'none';";
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.


