Skip to main content

QloApps EUVDEUVD-2026-90438

| CVE-2026-103590 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-09-30 VulnCheck GHSA-5wxf-fcx2-rcwq
5.1
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain low-priv back-office access
  2. Delivery
    Craft POST with payload in restriction_min_los/max_los
  3. Exploit
    Induce admin to submit request
  4. Execution
    Payload reflected unescaped into input value
  5. Persist
    JavaScript executes in admin session
  6. Impact
    Hijack administrative actions

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires an authenticated QloApps back-office session (PR:L) and requires inducing an administrator to submit a crafted POST request to the room type editor's length-of-stay configuration (UI:P) - the malicious payload must be placed in the restriction_min_los or restriction_max_los parameters, which are rendered unescaped into input value attributes in admin/themes/default/template/controllers/products/lengthofstay.tpl. Limiting factors: this is reflected (not stored) XSS, so it requires per-attack social engineering of an authenticated admin rather than passive triggering; it affects only the administrative interface; and it is remediated in versions after 1.7.0 (PR #1899).

Impact

This is a genuinely low-to-moderate priority issue, not a false-high-CVSS alarm - the vendor-supplied CVSS 4.0 score of 5.1 is modest and realistic. The attack is network-reachable (AV:N) and low-complexity (AC:L), but exploitation is gated by two meaningful limiters: the attacker needs a low-privilege authenticated back-office context (PR:L) and must induce a legitimate administrator to submit a crafted POST (UI:P). Impact is limited to script execution in the victim's admin session with partial confidentiality/integrity and no availability loss (VC:L/VI:L/VA:N, SC:L/SI:L). No EPSS score, KEV listing, or public exploit code is provided in the input, so there is no evidence of active or automated exploitation - this signals targeted, opportunistic risk rather than mass exploitation. A HackMD write-up ('four reflected XSS QloApps') and a VulnCheck advisory are referenced, indicating detailed public technical documentation exists even though no weaponized exploit is cited. The source-code diff in PR #1899 confirms the root cause (unescaped restriction_min_los/restriction_max_los values rendered into input value attributes in lengthofstay.tpl), so the vulnerability and fix are well-corroborated.

Exploit ScenarioDerived

An attacker with low-privilege back-office access (or who can craft a malicious link/form targeting the room type editor) induces an authenticated administrator to submit a POST to the length-of-stay configuration with a JavaScript payload in the restriction_min_los or restriction_max_los parameter. The unescaped value is reflected into an input element, executing arbitrary JavaScript in the administrator's session - enabling session actions such as CSRF-token theft or back-office account manipulation. No public exploit code is identified in the input, though a HackMD write-up and VulnCheck advisory document the technique.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 01, 2026

Reflected cross-site scripting in the QloApps back-office (through version 1.7.0) allows an attacker to execute arbitrary JavaScript inside an authenticated administrator's browser session by inducing that admin to submit a crafted POST request to the room type editor's length-of-stay configuration. The payload is injected through the restriction_min_los and restriction_max_los parameters, which are echoed unescaped into HTML input value attributes in admin/themes/default/template/controllers/products/lengthofstay.tpl. Exploitation requires an authenticated back-office session (CVSS vector PR:L) plus administrator interaction (UI:P), so it is a social-engineering-dependent, admin-only reflected XSS rather than a passively triggered or remotely reachable flaw; no public exploit code or active exploitation was identified at time of analysis, though a technical writeup is publicly available. The vendor-supplied CVSS 4.0 score of 5.1 is modest and consistent with the independently assessed vector CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N.

RemediationAI

Apply the upstream fix, which is delivered via QloApps PR #1899 and commit 7ed467d911086b190180d7f297e3b15ba31e82d5 (patch available per vendor advisory); the remediation resolves the issue in releases after 1.7.0, so upgrading beyond 1.7.0 is the primary action, and administrators unable to move version immediately can backport the |escape:'html':'UTF-8' modifier onto the restriction_min_los and restriction_max_los output in admin/themes/default/template/controllers/products/lengthofstay.tpl - noting that a manual template edit will be overwritten on the next upgrade and must be re-verified. Server-side input validation that coerces restriction_min_los[] and restriction_max_los[] to integers before storage provides defense in depth and costs nothing functionally, since these fields are numeric length-of-stay limits (the trade-off is that any legitimate non-numeric value currently accepted would be rejected). Because this is a reflected XSS that requires the attacker to induce an authenticated admin to submit a crafted POST while logged in (PR:L, UI:P), restricting back-office access to trusted networks or VPN, and deploying a Content-Security-Policy that disallows inline and untrusted script sources on admin pages, reduces exposure at the cost of administrative convenience and a potential need to audit admin themes for CSP-incompatible inline scripts. Reviewing WAF rules to block angle brackets and event-handler patterns in the restriction parameters adds a transient layer only, since bypasses are common and WAF signatures are not a substitute for patching; no other vendor-released patch identifiers were provided in the source data.

Affected VersionsENISA

QloApps 0 ≤1.7.0

Affected Packages

euvd qloapps no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The root cause is CWE-79 (Improper Neutralization of Input During Web Page Generation / Cross-Site Scripting) in QloApps, a PrestaShop-derived hotel booking and property management platform maintained by Webkul. QloApps renders its administrative back office through the Smarty templating engine, and the length-of-stay editor template (admin/themes/default/template/controllers/products/lengthofstay.tpl) interpolated the restriction values directly into input attributes - value="{$restrictionInfo['min_los']}" and value="{$restrictionInfo['max_los']}" - without contextual HTML escaping. Because the template variables are populated from the submitted restriction_min_los[] and restriction_max_los[] POST parameters and re-rendered into the response, user-supplied data breaks out of the attribute context and executes as script in the admin's browser session (a reflected, not stored, XSS). The upstream fix in PR #1899 applies the Smarty modifier |escape:'html':'UTF-8' to those two values and additionally hardens several unrelated sinks - escaping room_num, floor, status, comment, and order-detail fields in configuration.tpl and booked_room_date_ranges_list.tpl, replacing a jQuery .html() call with .text(), using Tools::safeOutput() and (int) casts in AdminModulesPositionsController.php, and replacing a jQuery selector built from untrusted values with a filtered comparison in modules_positions/form.tpl. The CPE cpe:2.3:a:webkul:qloapps:*:*:*:*:*:*:*:* indicates all releases up to and including the affected range are in scope, and the patch commit 7ed467d911086b190180d7f297e3b15ba31e82d5 confirms the exact template sinks that were corrected.

Know when Qloapps gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (VulnCheck) PRIMARY 5.1 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N
vuln.today AI 5.4 MEDIUM

Reflected XSS reachable over network with low complexity; requires authenticated back-office context (PR:L) and admin interaction (UI:R); script in browser crosses to session scope (S:C) with limited C/I impact and no availability loss.

3.1 AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:P/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
Passive
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
Low
Vulnerable system: Availability
None
Subsequent system: Confidentiality
Low
Subsequent system: Integrity
Low
Subsequent system: Availability
None

DescriptionCVE.org

QloApps through 1.7.0 contains a reflected cross-site scripting vulnerability in the back-office room type editor's length of stay fields. Attackers can induce authenticated administrators to submit crafted POST requests with malicious payloads in restriction_min_los and restriction_max_los parameters, executing arbitrary JavaScript in the victim's administrative session.

Threat Intelligence Overview

EPSS Score
0.2%
Top 92% exploitable
Prevalence
Low
niche open-source PrestaShop-based hotel reservation/booking system by Webkul
Data Quality
4 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

26
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

CVE-2025-67325 CRITICAL POC
9.8 Jan 08

QloApps hotel management system (through 1.7.0) allows unauthenticated web shell upload through the hotel review feature

CVE-2023-36284 HIGH POC
7.5 Jun 23

An unauthenticated Time-Based SQL injection found in Webkul QloApps 1.6.0 via GET parameter date_from, date_to, and id_p

CVE-2024-40318 HIGH POC
7.2 Jul 25

An arbitrary file upload vulnerability in Webkul Qloapps v1.6.0.0 allows attackers to execute arbitrary code via uploadi

CVE-2026-93988 HIGH POC
7.1 Sep 19

Path traversal in QloApps through 1.7.0 lets an authenticated back-office user read arbitrary files from the web server

CVE-2023-36287 MEDIUM POC
6.1 Jun 23

An unauthenticated Cross-Site Scripting (XSS) vulnerability found in Webkul QloApps 1.6.0 allows an attacker to obtain a

CVE-2023-36289 MEDIUM POC
6.1 Jun 23

An unauthenticated Cross-Site Scripting (XSS) vulnerability found in Webkul QloApps 1.6.0 allows an attacker to obtain a

CVE-2023-30256 MEDIUM POC
6.1 May 11

Cross Site Scripting vulnerability found in Webkil QloApps v.1.5.2 allows a remote attacker to obtain sensitive informat

CVE-2025-10759 MEDIUM POC
5.5 Sep 21

A vulnerability was detected in Webkul QloApps up to 1.7.0. Rated medium severity (CVSS 5.5), this vulnerability is remo

CVE-2023-36288 MEDIUM POC
5.4 Jun 23

An unauthenticated Cross-Site Scripting (XSS) vulnerability found in Webkul QloApps 1.6.0 allows an attacker to obtain a

CVE-2025-1155 MEDIUM POC
5.3 Feb 10

A vulnerability, which was classified as problematic, was found in Webkul QloApps 1.6.1. Rated medium severity (CVSS 5.3

CVE-2026-25558 MEDIUM POC
4.8 Jun 08

Stored cross-site scripting in QloApps through 1.7.0 enables authenticated administrators to inject persistent JavaScrip

CVE-2026-75496 HIGH
8.6 Aug 25

Unrestricted file upload in Webkul QloApps allows a remote attacker holding administrative credentials to upload executa

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy