Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as hotel-restricted employee
-
DeliveryEnumerate all hotels via room-type form selector
-
ExploitPOST foreign id_hotel to AdminProductsController
-
ExecutionCreate room types/inventory under victim hotel
-
ImpactCross-tenant data integrity violation
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
|
| Exploitation Conditions | Exploitation requires an authenticated back-office employee account whose profile is restricted to one or more specific hotels (PR:L) - this is the central prerequisite, so it is not exploitable by anonymous external users. The attacker must reach the room-type creation workflow in AdminProductsController, where the hotel selector in the product/information form (informations.tpl) is populated via the unfiltered hotelsNameAndId() method rather than a profile-scoped lookup, exposing all id_hotel values. The flaw affects default installations of QloApps up to and including 1.7.0 with no special configuration needed; the primary limiting factors are the need for valid low-privilege credentials and the requirement that the instance host multiple hotels for cross-tenant impact to be meaningful. No user interaction from a victim is required (UI:N). |
| Impact | This is a genuine but moderate-severity authorization flaw, best treated as a medium-priority fix rather than an emergency. The provided CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N) and the 5.3 MEDIUM score are internally consistent with the description: exploitation is network-reachable and low-complexity but requires an authenticated, already-provisioned back-office employee account (PR:L), which materially limits the attacker population to insiders or anyone who has compromised a hotel-restricted staff account. Impact is bounded - VC:L/VI:L with VA:N - reflecting cross-tenant data enumeration and the ability to create (not destroy) room types and inventory under hotels the employee should not control; there is no availability impact and no cross-system scope change (SC:N/SI:N). No EPSS score, CISA KEV entry, or explicit POC flag is present in the input, so there is no signal of active or widespread exploitation; however, a detailed third-party technical writeup (hackmd.io/@leediay) and a VulnCheck advisory exist, meaning the exploitation method is publicly documented even if no weaponized exploit is confirmed. The signals do not conflict: a moderate CVSS, absent exploitation telemetry, a niche product, and an available vendor patch all point to routine remediation. The main caveat is that this is a multi-tenant/SaaS-style weakness, so real risk rises sharply for operators who host many independent hotels under one QloApps instance. |
| Exploit ScenarioDerived | A hotel-restricted back-office employee (or an attacker who has phished/compromised such an account) opens the room-type creation form, where an unfiltered hotel selector exposes the IDs of every hotel in the installation. The attacker submits a POST to AdminProductsController with a foreign id_hotel value, causing room types and inventory to be created under a hotel they were never assigned to. No special exploit code is required beyond manipulating the form parameter, and a public technical writeup documents the exact steps. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 14, 2026
Hotel-restricted back-office employees in QloApps through 1.7.0 can create room types and inventory under hotels they are not assigned to by posting an arbitrary id_hotel value to AdminProductsController. The room-type form's hotel selector is populated by the unfiltered hotelsNameAndId() lookup, so a low-privileged employee can enumerate every hotel on the instance before targeting a foreign one; exploitation requires only a valid back-office account (CVSS vector PR:L), a multi-hotel deployment for the cross-tenant impact to matter, and no victim interaction (UI:N). No public exploit code has been identified at time of analysis, and the assessed impact is limited to low confidentiality and integrity loss (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N), making this a genuine but medium-priority authorization fix rather than an emergency.
RemediationAI
Upstream fix available (PR/commit); released patched version not independently confirmed - apply the changes from PR https://github.com/Qloapps/QloApps/pull/1649 / commit 24ff5f5e6ba0c7a42c83ce8155b318c3ef8c915d, which replaces ProductHotelInformation::hotelsNameAndId() with HotelBranchInformation::getProfileAccessedHotels($this->context->employee->id_profile, 1) in both initFormConfiguration() and initFormInformations(), corrects informations.tpl to read $htl_dtl['id_hotel'], and shows 'No hotel are available' when the profile has no accessible hotel, so no patched release tag could be confirmed from the supplied data. If upgrading immediately is not possible, compensating controls: manually backport that same getProfileAccessedHotels() substitution so the selector is profile-scoped (side effect: employees with legitimate multi-hotel access must have those hotels explicitly assigned to their profile); add server-side validation in AdminProductsController that rejects any posted id_hotel outside the employee's profile scope before the room/inventory write occurs (trade-off: requires code maintenance but is low-risk); and reduce exposure by keeping back-office profiles tightly assigned to only the hotels each employee needs. Detection and monitoring: audit room types and stock created under hotels that differ from the creating employee's assigned scope, and alert on POSTs to the room-type creation endpoint carrying id_hotel values outside the session's permitted set. Vendor and third-party advisories to track are the VulnCheck advisory (https://www.vulncheck.com/advisories/qloapps-through-1.7.0-authorization-bypass-via-id-hotel-in-room-type-creation) and the NVD record (https://nvd.nist.gov/vuln/detail/CVE-2026-110226); no vendor patch version number should be assumed until QloApps publishes a release beyond 1.7.0.
Affected VersionsENISA
Affected Packages
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-639 (Authorization Bypass Through User-Controlled Key): the application trusts an attacker-supplied object identifier instead of deriving the key from the authenticated principal's permission scope. QloApps (a PHP-based, PrestaShop-derived hotel reservation platform) implements room creation in controllers/admin/AdminProductsController.php, where the product information form is built by initFormInformations() and initFormConfiguration(). In v1.7.0 those methods populated the hotel dropdown via ProductHotelInformation::hotelsNameAndId(), which returns every hotel row regardless of the employee's profile-to-hotel assignment, exposing all id_hotel values to the browser. The admin theme template admin/themes/default/template/controllers/products/informations.tpl compounded the problem by rendering the option value from the wrong array key ($htl_dtl['id'] rather than $htl_dtl['id_hotel']). Because the submitted id_hotel is not re-validated server-side against the employee's profile scope (HotelBranchInformation), an employee restricted to one hotel can write rooms and inventory into a hotel they were never granted. The upstream fix swaps the unfiltered call for HotelBranchInformation::getProfileAccessedHotels($this->context->employee->id_profile, 1) in both form builders, corrects the template key, and renders a 'No hotel are available' notice when the profile has no accessible hotels. Note that one aggregated source tag lists 'Microsoft', which is inconsistent with this PHP/PrestaShop-derived codebase and appears misapplied.
Know when the next one hits your stack
- 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
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N
Authenticated low-privilege employee (PR:L) over the network (AV:N/AC:L); hotel enumeration gives C:L and foreign room creation gives I:L, with no availability impact and no scope change.
Primary rating from Vendor (vulncheck).
CVSS VectorVendor: vulncheck
DescriptionCVE.org
QloApps through 1.7.0 contains a broken access control vulnerability that allows hotel-restricted back-office employees to create room types under unassigned hotels by supplying an arbitrary id_hotel. Attackers can enumerate all hotels via the unfiltered room type form selector and post foreign hotel IDs to AdminProductsController, creating rooms and inventory under other hotels.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
EUVD-2026-99011
GHSA-4pjr-6wp6-x63v
NVD
CVE.org
EPSS
Exploit-DB