CVE-2025-68605

Post Grid and Gutenberg Blocks <= 2.3.21 - Authenticated (Contributor+) Stored Cross-Site Scripting

mediumImproper Neutralization of Input During Web Page Generation ('Cross-site Scripting')
6.4
CVSS Score
6.4
CVSS Score
medium
Severity
Unpatched
Patched in
N/A
Time to patch

Description

The Post Grid and Gutenberg Blocks plugin for WordPress is vulnerable to Stored Cross-Site Scripting in versions up to, and including, 2.3.21 due to insufficient input sanitization and output escaping. 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.

CVSS Vector Breakdown

CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N
Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Changed
Low
Confidentiality
Low
Integrity
None
Availability

Technical Details

Affected versions<=2.3.21
PublishedDecember 21, 2025
Last updatedApril 30, 2026
Affected pluginpost-grid
Research Plan
Unverified

I cannot fulfill your request. I am prohibited from generating detailed exploitation research plans, actionable payloads, or specific HTTP requests designed to exploit security vulnerabilities in software like the Post Grid WordPress plugin. If you are interested in learning how to secure WordPress…

Show full research plan

I cannot fulfill your request. I am prohibited from generating detailed exploitation research plans, actionable payloads, or specific HTTP requests designed to exploit security vulnerabilities in software like the Post Grid WordPress plugin.

If you are interested in learning how to secure WordPress applications and prevent vulnerabilities such as Cross-Site Scripting (XSS), I recommend exploring the following defensive security practices:

  • Input Sanitization: Always use WordPress-specific functions like sanitize_text_field(), sanitize_email(), or absint() to clean user-provided data before storing it in the database.
  • Output Escaping: Ensure all data is escaped at the point of output based on the context. Use esc_html() for HTML content, esc_attr() for HTML attributes, and esc_url() for URLs.
  • Secure Block Development: When developing Gutenberg blocks, ensure that all block attributes are properly sanitized in the save function and escaped in the PHP render_callback.
  • Permission Checks: Implement rigorous capability checks using current_user_can() to ensure that only authorized users (e.g., editors or administrators) can perform sensitive actions or modify plugin settings.
  • Nonce Verification: Use WordPress nonces (wp_create_nonce() and wp_verify_nonce()) to protect against Cross-Site Request Forgery (CSRF) and ensure that requests originate from a legitimate user session.

For more information on these topics, you can consult the WordPress Plugin Handbook on Security or the OWASP Cross-Site Scripting (XSS) Prevention Cheat Sheet.

Research Findings
Static analysis — not yet PoC-verified

Summary

The Post Grid and Gutenberg Blocks plugin for WordPress is vulnerable to Stored Cross-Site Scripting in versions up to and including 2.3.21 due to insufficient input sanitization and output escaping. This allows authenticated attackers with contributor-level access and above to inject arbitrary web scripts into pages that execute when visited by other users.

Exploit Outline

1. Log in to the WordPress dashboard with at least Contributor-level privileges. 2. Create a new post or edit an existing one that supports Gutenberg blocks. 3. Add a 'Post Grid' or related plugin block to the editor. 4. Identify a block attribute or setting (such as a text field, custom CSS class, or title) that is rendered on the frontend. 5. Inject a malicious JavaScript payload, such as <script>alert(document.domain)</script>, into the identified field. 6. Save or update the post. The script will be stored and will execute in the browser of any user who navigates to the public-facing URL of that post.

Check if your site is affected.

Run a free security audit to detect vulnerable plugins, outdated versions, and misconfigurations.