Critical XSS Vulnerability Discovered in Movary Allows Attackers to Execute Malicious Scripts via Crafted Links

CVE-2026-23841 is a reflected cross-site scripting (XSS) vulnerability affecting Movary versions prior to 0.70.0.
The issue arises from improper input validation and output encoding of a user-controlled URL parameter named categoryCreated.

An attacker can craft a malicious URL containing JavaScript payloads that are reflected back into the application’s HTML response. When a victim visits the crafted link, the injected script executes in the context of the victim’s browser.

This vulnerability requires no authentication, no privileges, and only minimal user interaction, making it highly attractive for phishing and social-engineering attacks.


Technical Root Cause

The application directly reflects the categoryCreated parameter into the rendered page without:

  • Proper input validation (allow-listing or strict type enforcement)
  • Context-aware output encoding
  • Escaping HTML special characters

As a result, attacker-supplied content is treated as executable client-side code rather than plain text.

This is a textbook example of:

  • Improper Input Validation
  • Reflected XSS in HTML context

Attack Scenario

  1. An attacker crafts a URL containing a malicious JavaScript payload embedded in the categoryCreated parameter.
  2. The URL is sent to a victim through email, chat, forums, or social media.
  3. The victim clicks the link while logged into Movary (or even unauthenticated, depending on page).
  4. The payload executes in the victim’s browser.

Potential Impact

Successful exploitation can lead to:

  • Theft of session cookies
  • Account takeover
  • Unauthorized actions performed on behalf of the victim
  • Credential harvesting via fake login overlays
  • Redirection to malicious websites
  • Persistent trust abuse in shared or public Movary instances

Even though this is a reflected XSS, the impact is severe due to the low barrier to exploitation and high likelihood of social-engineering success.


Proof-of-Concept (Educational Only)

⚠️ The following description is high-level and non-weaponized, intended strictly for educational and defensive understanding.

An attacker can insert HTML or JavaScript code into the categoryCreated parameter of a request.
If the server reflects this value directly into the response without encoding, the browser interprets it as executable code.

Typical indicators during testing include:

  • JavaScript execution when a crafted URL is loaded
  • Unexpected alert boxes or DOM manipulation
  • Payloads appearing unescaped in page source

Security testing tools such as browser developer tools or intercepting proxies will clearly show the reflected payload in the server response.


Exploitation Status

  • No authentication required
  • Exploitable remotely
  • Requires user interaction (clicking a malicious link)
  • Low attack complexity
  • Highly practical in phishing campaigns

Detection & Monitoring (Technical)

1. Web Server / Reverse Proxy Detection

Monitor HTTP requests for suspicious patterns in the categoryCreated parameter, such as:

  • <script>
  • </
  • onerror=
  • onload=
  • javascript:
  • URL-encoded equivalents (%3C, %3E, %22, %27)

Example detection logic (conceptual):

IF request.parameter == "categoryCreated"
AND value contains HTML or JavaScript metacharacters
THEN log and alert

2. WAF Detection Rule (Generic Logic)

Trigger alerts when:

  • HTML tags appear in query parameters
  • JavaScript event handlers are detected
  • Script execution patterns appear in reflected responses

Focus specifically on:

  • Reflected input matching request parameters
  • HTML context injection rather than JSON or API traffic

3. Application-Level Logging

Enable logging for:

  • All rejected or sanitized input
  • Validation failures on URL parameters
  • Unescaped output rendering warnings

Correlate logs with:

  • User agent
  • Referrer
  • Repeated payload attempts

4. Client-Side Indicators

On the browser side, signs of exploitation may include:

  • Unexpected pop-ups
  • Redirects after page load
  • DOM elements injected dynamically
  • JavaScript errors caused by malformed payloads

Remediation

Permanent Fix:
Upgrade to Movary version 0.70.0 or later, where proper sanitization and output encoding have been implemented.


Defensive Recommendations

  • Always encode user input based on output context (HTML, attribute, JS, URL)
  • Use allow-lists for expected parameter values
  • Implement a strict Content Security Policy (CSP)
  • Avoid reflecting raw user input in UI messages
  • Perform regular dynamic and manual security testing

Final Notes

This vulnerability is simple, dangerous, and realistic.
While it does not require advanced exploitation techniques, its real-world impact depends heavily on user interaction and trust.

If you are operating a public-facing Movary instance and have not upgraded, remediation should be considered urgent.