CVE-2026-95665: MISP Reflected Cross-Site Scripting in Event Export Confirmation Form via Unescaped JSON
MISP contains a reflected cross-site scripting (XSS) vulnerability in the event REST search export confirmation form. The view template app/View/Events/ajax/eventRestSearchExportConfirmationForm.ctp renders a URL-supplied event ID list into a single-quoted JavaScript string literal using PHP's jsonencode() without any hex-encoding flags. By default, jsonencode() escapes double quotes and backslashes but does not escape single quotes. Because the JavaScript string is delimited by single quotes, an attacker can inject a single-quote character to terminate the string literal and execute arbitrary JavaScript in the victim's browser session.
The vulnerability affects the Default and UiBeta themes, both of which render this view. The Overmind theme's own copy of the form already passed the value through an escaped data attribute and was not affected by this specific sink.
Preconditions: the victim must be an authenticated MISP user and must actively open or navigate to the attacker-crafted URL. The attacker does not require an account or any prior access to the MISP instance.
Security impact: successful exploitation allows execution of arbitrary JavaScript in the context of the MISP web application, potentially leading to session hijacking, unauthorized actions performed on behalf of the victim, exfiltration of sensitive data visible in the session, or further client-side attacks. The vulnerable component's own confidentiality, integrity, and availability are not directly compromised; the impact is on the underlying user session.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Configuration
Add JSON_HEX_TAG, JSON_HEX_APOS, JSON_HEX_QUOT, and JSON_HEX_AMP to the json_encode() call at the rendering sink so angle brackets, single quotes, double quotes, and ampersands are hex-encoded.
MISP event REST search export confirmation form (app/View/Events/ajax/eventRestSearchExportConfirmationForm.ctp) json_encode() flags = JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP
Event History
Frequently Asked Questions
Which MISP themes are affected?
The Default and UiBeta themes are affected because they render the vulnerable confirmation-form view. The Overmind theme is not affected by this specific sink because its copy of the form passes the value through an escaped data attribute.
Does an attacker need a MISP account or prior access to exploit this?
No. The attacker does not need an account or prior access to the MISP instance, but must cause an authenticated MISP user to actively open or navigate to an attacker-crafted URL.
Who can be impacted by successful exploitation?
Authenticated MISP users who open the crafted URL can have arbitrary JavaScript executed in their browser session in the MISP context.