Skip to main content

QloApps CVE-2026-109393

| EUVDEUVD-2026-97491 MEDIUM
Authorization Bypass Through User-Controlled Key (CWE-639)
2026-10-12 VulnCheck GHSA-2whx-wf37-6c2h
5.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Authenticate as hotel-restricted employee
  2. Exploit
    Enumerate other hotels' sequential record IDs
  3. Execution
    Invoke back-office AJAX handler with foreign ID
  4. Impact
    Read/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.

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 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

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

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

Vendor (VulnCheck) PRIMARY 5.3 MEDIUM
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
vuln.today AI 6.3 MEDIUM

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.

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

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

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

EPSS Score
0.2%
Top 90% exploitable
Prevalence
Low
niche open-source hotel-reservation PrestaShop app, limited enterprise footprint
Data Quality
3 sources
Confidence: Low

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· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

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

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

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