Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as hotel-restricted employee
-
ExploitEnumerate other hotels' sequential record IDs
-
ExecutionInvoke back-office AJAX handler with foreign ID
-
ImpactRead/upload/delete cross-hotel documents, rooms and images
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 | Requires a valid, authenticated back-office employee account whose profile is hotel-restricted via htl_access, deployed in a multi-hotel QloApps installation where per-hotel access scoping is actually in use. The vulnerable AJAX handlers in AdminOrdersController, AdminBookingDocumentController, AdminProductsController and AdminAddHotelController omit the HotelBranchInformation::getProfileAccessedHotels() ownership check, so the only prerequisite beyond login is supplying another hotel's sequential identifier. Limiting factors: exploitation is impossible without an authenticated low-privilege employee account (PR:L), is meaningless in single-hotel deployments, and the attacker must already have legitimate back-office access - this is strictly an insider/multi-tenant trust-boundary issue, not remote-unauthenticated. |
| Impact | This is a medium-severity insider-authorization flaw rather than a top-tier emergency. The supplied CVSS 4.0 vector (CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:L, 5.3) is internally consistent with the description: network-reachable back-office AJAX endpoints, low attack complexity, and crucially PR:L - exploitation requires an already-authenticated, hotel-restricted employee account, not an anonymous internet attacker. The impact is broad in type (read, upload, and delete booking documents; delete rooms, room images, and hotel images across other tenants) but each individual impact is rated Low, which the vendor's VC:L/VI:L/VA:L reflects. No EPSS score, no CISA KEV listing, and no explicit POC flag are present in the input, so exploitation status is 'no public exploit identified at time of analysis' - though a third-party technical write-up (hackmd.io/@leediay) and a VulnCheck advisory with exact source-line references exist, which lowers the barrier to reproduction. The signals do not conflict: a moderate CVSS, absent EPSS/KEV, and a privilege prerequisite all point to a realistic but bounded risk confined to multi-hotel deployments with partially-trusted staff. Note that EPSS and KEV data are simply absent from the input (not low), so widespread-exploitation probability cannot be quantified; the authorization-bypass nature (CWE-639) makes this primarily an insider/multi-tenant trust concern, not a mass-exploitation target. |
| Exploit ScenarioDerived | A hotel chain running QloApps gives a front-desk or manager employee a back-office account scoped to only their own property via htl_access restrictions. That employee calls the vulnerable AJAX handlers (e.g. ajaxProcessGetBookingDocuments, ajaxProcessDeleteHotelRoom) and simply substitutes another hotel's sequential record ID, letting them read or delete a competing or sister property's booking documents, rooms, and images. No public weaponized exploit is listed, but a detailed technical write-up and vendor-advisory source references make reproduction straightforward for a logged-in employee. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 12, 2026
Insecure direct object reference in QloApps through 1.7.0 lets an authenticated, hotel-restricted back-office employee manipulate sequential identifiers to act on resources belonging to other hotels - reading, uploading and deleting booking documents, deleting rooms, room images, room-type product images and hotel images. The flaw is exploitable only in multi-hotel installations that actually use per-hotel scoping via htl_access, and only by a user who already holds a valid low-privilege back-office account (CVSS vector PR:L, so authenticated rather than unauthenticated); a single-hotel deployment or a deployment without hotel-restricted profiles is not meaningfully exposed. Exploitation is a low-severity-to-moderate integrity and confidentiality problem across tenant boundaries rather than an emergency remote compromise: no public exploit code was identified at time of analysis and there is no confirmed active exploitation (no CISA KEV listing), and the assessed CVSS:3.1 vector AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L is consistent with a medium-severity insider authorization issue. Vendor-side fixes exist upstream (PR #1922 and commit 83eb851) but a tagged patched release was not independently confirmed from the supplied data.
RemediationAI
Upstream fix available (PR/commit); released patched version not independently confirmed - apply the vendor fix from https://github.com/Qloapps/QloApps/pull/1922, whose merge commit is https://github.com/Qloapps/QloApps/commit/83eb851cf106b51a4478f84a6d1658d7c8076258, which adds the missing HotelBranchInformation::getProfileAccessedHotels() ownership checks to AdminOrdersController (get/upload/delete booking document), AdminProductsController (delete product image, delete hotel room) and introduces validateHotelAccess() in AdminAddHotelController for hotel image and cover-image operations; if you deploy from source, pull that commit or a later tagged release rather than assuming 1.7.0 is the last affected build. Where upgrading is not immediately possible, the most effective compensating control is to eliminate the trust boundary being abused: restrict every back-office employee profile to a single hotel (or a single branch set) so hotel-scoped IDs cannot legitimately cross tenants, and remove accounts whose profiles use htl_access scoping until the fix is installed - the trade-off is reduced operational flexibility for multi-property staff. Secondary controls: restrict the back-office (/admin directory and hotelreservationsystem admin controller endpoints) to trusted management IP ranges or a VPN, which blocks the exposure path at the cost of remote administrative access; and deploy WAF or reverse-proxy rules that reject requests whose id_hotel, id_htl_booking, id_product or id parameters reference objects outside the session's authorized hotel set, accepting that such rules are brittle because the identifiers are sequential and easily varied. Also audit existing data for tampering before remediation, since the same handlers allowed document upload and destructive deletes (booking documents, rooms, room and hotel images) that leave limited forensic traces; enable back-office action logging for these controllers and review recent AJAX activity for cross-hotel ID patterns.
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
QloApps is a Webkul open-source hotel booking and property management application derived from the PrestaShop back-office architecture, so it inherits the PrestaShop pattern of Admin*Controller classes that expose AJAX endpoints under the back-office (admin) directory and inside the hotelreservationsystem module. The root cause class is CWE-639, Authorization Bypass Through User-Controlled Key: handlers in controllers/admin/AdminOrdersController.php, AdminBookingDocumentController, controllers/admin/AdminProductsController.php and modules/hotelreservationsystem/controllers/admin/AdminAddHotelController.php accept client-supplied object identifiers (id_htl_booking, id_htl_booking_document, id_product, id room, id_hotel) and operate on the referenced record without verifying that the record belongs to a hotel the requesting employee's profile is entitled to see. QloApps implements that entitlement through htl_access and the helper HotelBranchInformation::getProfileAccessedHotels($this->context->employee->id_profile, ...), which returns the set of hotel branch IDs a profile may access; the vulnerable handlers simply call Validate::isLoadedObject() and skip that membership test. The supplied patch diff shows the intended pattern precisely: ajaxProcessGetBookingDocuments(), ajaxProcessUploadBookingDocument() and ajaxProcessDeleteBookingDocument() in AdminOrdersController gain in_array($objHotelBookingDetail->id_hotel, HotelBranchInformation::getProfileAccessedHotels(...)) checks; AdminProductsController::ajaxProcessDeleteProductImage() and ajaxProcessDeleteHotelRoom() resolve the owning hotel via HotelRoomType::getRoomTypeInfoByIdProduct() and HotelRoomInformation->id_hotel respectively before validating ownership; and AdminAddHotelController introduces a validateHotelAccess($idHotel) helper requiring both tabAccess['edit'] === 1 and membership in the profile's accessible hotels, adding (int) casting to attacker-controllable IDs. That same controller also fixed an unrelated-looking variable bug (Configuration::updateValue('WK_PRIMARY_HOTEL', $objHotelBranch['id']) replaced with $hotel['id']), illustrating that identifier handling in this code path was generally loose. The CPE entry cpe:2.3:a:webkul:qloapps:*:*:*:*:*:*:*:* records the whole product stream as affected through 1.7.0 with no version floor, and source references point at the v1.7.0 tag lines for AdminOrdersController (lines 3799-3877).
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
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N
Authenticated hotel-restricted employee is required so PR:L and UI:N; network AJAX endpoints give AV:N/AC:L; read, upload/overwrite and deletion yield C:L/I:L/A:L with no scope change.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
QloApps through 1.7.0 contains an insecure direct object reference vulnerability in back-office AJAX handlers of AdminOrdersController, AdminBookingDocumentController, AdminProductsController and AdminAddHotelController that skip htl_access hotel checks. Hotel-restricted employees can supply other hotels' sequential identifiers to read, upload and delete booking documents and delete rooms, room images and hotel images.
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.
QloApps hotel management system (through 1.7.0) allows unauthenticated web shell upload through the hotel review feature
An unauthenticated Time-Based SQL injection found in Webkul QloApps 1.6.0 via GET parameter date_from, date_to, and id_p
An arbitrary file upload vulnerability in Webkul Qloapps v1.6.0.0 allows attackers to execute arbitrary code via uploadi
Path traversal in QloApps through 1.7.0 lets an authenticated back-office user read arbitrary files from the web server
An unauthenticated Cross-Site Scripting (XSS) vulnerability found in Webkul QloApps 1.6.0 allows an attacker to obtain a
An unauthenticated Cross-Site Scripting (XSS) vulnerability found in Webkul QloApps 1.6.0 allows an attacker to obtain a
Cross Site Scripting vulnerability found in Webkil QloApps v.1.5.2 allows a remote attacker to obtain sensitive informat
A vulnerability was detected in Webkul QloApps up to 1.7.0. Rated medium severity (CVSS 5.5), this vulnerability is remo
An unauthenticated Cross-Site Scripting (XSS) vulnerability found in Webkul QloApps 1.6.0 allows an attacker to obtain a
A vulnerability, which was classified as problematic, was found in Webkul QloApps 1.6.1. Rated medium severity (CVSS 5.3
Stored cross-site scripting in QloApps through 1.7.0 enables authenticated administrators to inject persistent JavaScrip
Unrestricted file upload in Webkul QloApps allows a remote attacker holding administrative credentials to upload executa
EUVD-2026-97491
GHSA-2whx-wf37-6c2h
NVD
CVE.org
EPSS
Exploit-DB