# Ninja Tables <= 5.5.0 - Authenticated (Administrator+) Stored Cross-Site Scripting via Table Import

- **ID:** WPSEC-2026-2983
- **Plugin:** Ninja Tables – Responsive Table Builder for Data, Pricing & Product Tables (`ninja-tables`), https://wordpress.org/plugins/ninja-tables/
- **Affected versions:** all versions before 5.5.1
- **Fixed in:** 5.5.1 (Update to 5.5.1 or later.)
- **Severity:** Medium 5.5 (CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:L/I:L/A:N)
- **Weakness:** CWE-79
- **Usage among sites WPSec scans:** plugin Low, affected versions Low (as of 2026-11-12)
- **Attack surface analysis:** https://attacksurface.wpsec.com/plugin/ninja-tables
- **Fix released:** 2026-11-11
- **Published:** 2026-11-12
- **URL:** https://wpsec.com/vuln/WPSEC-2026-2983/

## Description

The Ninja Tables plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the drag-and-drop builder HTML in an imported Ninja Tables JSON file in all versions up to, and including, 5.5.0, due to the importer storing every meta key in the file as it is, including '_ninja_table_builder_table_html'. That value skips the wp_kses filtering the builder applies when users without unfiltered_html save a table, and it is printed unescaped when the table is rendered. This makes it possible for authenticated attackers with administrator-level access who lack the unfiltered_html capability, such as site administrators on a multisite network, to inject arbitrary web scripts that run whenever a user views a page containing the table.

## References

- https://wpsec.com/vuln/WPSEC-2026-2983/
- https://plugins.svn.wordpress.org/ninja-tables/tags/5.5.1/
- https://wordpress.org/plugins/ninja-tables/

Source: WPSec, https://wpsec.com/vuln/WPSEC-2026-2983/

License: CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). Free to use, share and adapt, also commercially, if you credit WPSec and link to this advisory.
