
LimeSurvey Community Edition 7.0.5+260623 - Reflected XSS in HTML editor popup
8,5
High
Detected by

Fluid Attacks AI SAST Scanner
Disclosed by
Miguel Gómez
Summary
Full name
LimeSurvey Community Edition 7.0.5+260623 - Reflected XSS in HTML editor popup
Code name
State
Public
Release date
Affected product
LimeSurvey
Vendor
LimeSurvey
Affected version(s)
7.0.5
Fixed version(s)
7.0.10
Vulnerability name
Reflected cross-site scripting (XSS)
Vulnerability type
Remotely exploitable
Yes
CVSS v4.0 vector string
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:N/SC:L/SI:L/SA:N
CVSS v4.0 base score
8.5
Exploit available
Yes
CVE ID(s)
Description
LimeSurvey Community Edition 7.0.5+260623 contains an authenticated reflected cross-site scripting vulnerability in the HTML editor popup endpoint. The text and name query parameters are passed through a blacklist sanitizer and then rendered without context-appropriate output encoding.
An attacker can send a crafted URL to an authenticated LimeSurvey user. The text vector breaks out of the document <title> element, while the name vector terminates the inline JavaScript block and injects executable HTML. JavaScript executes in the victim's authenticated LimeSurvey origin and can perform actions available to that session.
Vulnerability
Root cause
HtmlEditorPop::index()readsnameandtextfrom the query string and appliessanitize_xss_string()(application/controllers/admin/HtmlEditorPop.php:18-25).sanitize_xss_string()removes a small blacklist of characters but leaves HTML delimiters such as<,>, and/unchanged (application/helpers/sanitize_helper.php:240-246). It is not a context-aware HTML or JavaScript encoder.sFieldTextis printed directly inside the document title (application/views/admin/htmleditor/pop_editor_view.php:3-5).sFieldNameis printed directly inside a JavaScript string passed todocument.getElementById()(application/views/admin/htmleditor/pop_editor_view.php:80-86).The same
sFieldNameis also printed into JavaScript strings atpop_editor_view.php:105andpop_editor_view.php:113.
Confirmed source-to-sink paths
text parameter
The following payload survives the sanitizer and closes the title element:
The backtick expression is valid JavaScript tagged-template syntax and does not require parentheses, which are removed by the blacklist.
name parameter
The following payload breaks out of the inline script block:
The endpoint is routed through AdminController (application/controllers/AdminController.php:337-377). AdminController::run() requires an authenticated administration session but does not add a global permission check for htmleditorpop before dispatching the action (application/controllers/AdminController.php:156-203). Therefore, any authenticated user can target another authenticated user who opens the crafted URL; no survey identifier or survey-specific permission is required when sid is omitted.
PoC
Preconditions
LimeSurvey Community Edition
7.0.5+260623.A victim authenticated to the LimeSurvey administration panel.
No attacker account, survey identifier, or survey-specific permission is required to construct the URL.
The victim opens the crafted URL in the same browser session.
text vector
Open the following URL while authenticated:
Expected result:
The response contains the attacker-controlled value inside the
<title>element.The injected image fails to load.
A browser dialog displays
Pwned-text-field.
name vector
Open the following URL while authenticated:
Expected result:
The injected
</script>terminates the inline script block.The browser parses the injected image element.
A browser dialog displays
Pwned-name-field.
Evidence of Exploitation
Video of exploitation:
Static evidence:

Our security policy
We have reserved the ID CVE-2026-63361 to refer to this issue from now on.
System Information
LimeSurvey
Version: 7.0.5
Operating System: Any
References
GitHub Repository: https://github.com/LimeSurvey/LimeSurvey/
Patch: https://github.com/LimeSurvey/LimeSurvey/commit/a8993bfd05c4a11255b8400ed9c41a2c22e93aa4
Mitigation
An updated version of LimeSurvey is available on the vendor page.
Credits
The vulnerability was discovered by Miguel Gomez from Fluid Attacks' Offensive Team using the AI SAST Scanner.
Timeline
Vulnerability discovered
Vendor contacted
Vendor replied
Vendor requested re-testing
Follow-up with vendor
Vendor confirmed
Vulnerability patched
Public disclosure
Does your application use this vulnerable software?
During our free trial, our tools assess your application, identify vulnerabilities, and provide recommendations for their remediation.












