Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconIdentify QloApps target up to 1.7.0
-
DeliveryObtain password hashes via secondary breach
-
ExploitRecover or guess static cookie key
-
InstallRun offline MD5 brute-force against hashes
-
C2Crack 8-char guest-converted passwords first
-
ExecuteReplay credentials on storefront and admin
-
ImpactAccount takeover and PII or booking data theft
Vulnerability Assessment
| Weakness |
CWE
|
| Exploitation Conditions | Exploitation requires the attacker to first obtain QloApps password hashes from the database (via prior SQLi, backup exposure, host compromise, or insider access) and to know or recover the site-specific static cookie key concatenated by Tools::encrypt() in classes/Tools.php; without the hash material the MD5 weakness alone is not directly reachable over the network despite the CVSS AV:N rating, which is reflected in AC:H. The impact is amplified specifically against accounts created through the guest-to-customer conversion path in classes/Customer.php::transformToCustomer(), which assigns 8-character auto-generated passwords that fall to offline brute-force trivially; manually chosen long passphrases remain comparatively expensive to crack. The vulnerability affects QloApps up to 1.7.0 in default configuration - no non-default feature toggle is required, and no user interaction or authentication is needed for the offline cracking step itself. |
| Impact | CVSS 4.0 scores this 8.2 (High) with vector AV:N/AC:H/PR:N/UI:N and VC:H/VI:N/VA:N - confidentiality-only impact reflecting that the bug yields credentials rather than direct code execution, and AC:H acknowledges the attacker must first obtain the password database (e.g., via SQLi, backup leak, or insider access) before the MD5 weakness becomes useful. There is no EPSS score, SSVC decision, or KEV listing in the provided data, and no public PoC is referenced; VulnCheck disclosed the issue and the patch is already merged, indicating coordinated disclosure rather than active exploitation. Practical risk concentrates on deployments that have already suffered a database exposure or that re-use the same cookie key across instances, where the auto-generated 8-character guest-conversion passwords would fall to GPU brute-force within minutes. CVSS network vector should not be over-read: exploitation is offline post-compromise, so prioritization should be tied to the likelihood of database disclosure in a given environment rather than treating this as a remotely triggerable RCE. |
| Exploit ScenarioDerived | An attacker who obtains a copy of a QloApps database - for example via a separate SQL injection, a leaked backup, or insider access - extracts the passwd columns from ps_customer and ps_employee and runs hashcat against the MD5(cookie_key||password) construction using a leaked or recovered cookie key. Because guest-converted accounts use only 8-character auto-generated passwords, exhaustive search over that keyspace recovers cleartext credentials in minutes on commodity GPUs, which the attacker then replays against the storefront and admin panel, and likely against other sites where customers reused the password. No public exploit identified at time of analysis, but the cracking workflow is standard and the patch diff makes the vulnerable construction explicit. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv3 – Jun 02, 2026
Weak password hashing in QloApps through 1.7.0 enables credential compromise because Tools::encrypt() in classes/Tools.php hashes passwords with unsalted MD5 concatenated with a static cookie key, allowing offline brute-force recovery of customer and employee credentials. The risk is amplified by an 8-character auto-generated password used during guest-to-customer conversion in classes/Customer.php, making cracked hashes practically trivial. No public exploit identified at time of analysis, but the upstream fix in commit 64e9722 replaces MD5 with the PasswordHashing class for credential storage.
Earlier versions of this analysis (2)
Weak password hashing in QloApps through 1.7.0 exposes user and employee credentials by storing passwords as unsalted MD5 digests, allowing attackers who obtain the database to recover plaintext passwords via offline brute-force. The risk is amplified by auto-generated 8-character passwords used during guest-to-customer conversion, making credential recovery trivial. No public exploit identified at time of analysis, but the upstream fix in commit 64e9722 replaces MD5 with the PasswordHashing class.
QloApps through version 1.7.0 stores all user and employee passwords using MD5 with a static cookie key as a salt, exposing credential hashes to trivial offline cracking if an attacker gains database access. The risk is compounded by the platform's guest-to-customer account conversion flow in classes/Customer.php, which assigns auto-generated 8-character passwords - reducing brute-force search space to the point where credential recovery is described as trivial. No public exploit identified at time of analysis and no CISA KEV listing, but the vulnerability is structurally severe against any installation where the database has been or could be exposed via a secondary attack such as SQL injection.
RemediationAI
Upstream fix available (commit 64e9722); a released patched version is not independently confirmed in the provided data, so operators should pull commit 64e9722e7e6a8fda77dd53964d988fb6b5c3d174 from the Qloapps/QloApps repository or the next tagged release after 1.7.0 that includes PR #1689. After upgrading, force a password reset for all customer and employee accounts so legacy MD5 hashes are replaced with bcrypt-style PasswordHashing entries rather than waiting for the in-code lazy rehash on next login, and rotate the static cookie key referenced by Tools::encrypt() to invalidate any previously exfiltrated hashes. If immediate patching is not possible, compensating controls include restricting database access (network ACLs, least-privilege DB users, encrypted backups) to prevent the hash exfiltration that this bug presupposes, disabling or auditing the guest-to-customer conversion flow in classes/Customer.php to eliminate the 8-character auto-generated passwords (trade-off: friction for returning guests), and enforcing strong customer/admin password policies plus MFA on the back office; none of these substitute for upgrading. Reference the VulnCheck advisory at https://www.vulncheck.com/advisories/qloapps-weak-password-hashing-via-md5-in-tools-php for vendor guidance.
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 PHP-based open-source hotel reservation and booking management platform forked from PrestaShop. The flaw maps to CWE-916 (Use of Password Hash With Insufficient Computational Effort): Tools::encrypt() composes a hash as MD5(static_cookie_key || password), a fast, GPU-friendly algorithm with no per-user salt and no key-stretching, so identical passwords across users produce identical hashes once the global cookie key is known or recovered. The PR diff (Qloapps/QloApps#1689) shows the fix migrates customer and employee password columns from size 32 (MD5 hex) to size 60 (bcrypt-style) and routes hashing through a new PasswordHashing class with validateHash() and isPrimaryHash() so legacy hashes are transparently upgraded on next successful login. The CPE cpe:2.3:a:qloapps:qloapps:*:*:*:*:*:*:*:* covers all versions up to and including 1.7.0.
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:H/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
Primary rating from Vendor (VulnCheck) · only source for this CVE.
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
QloApps through 1.7.0, fixed in commit 64e9722, contains a weak cryptographic algorithm vulnerability that allows attackers to compromise user credentials by exploiting the use of MD5 for password hashing in the Tools::encrypt() function within classes/Tools.php, which concatenates a static cookie key with the supplied password. Attackers can perform offline brute-force attacks against the MD5 hashes, with the risk compounded by auto-generated 8-character passwords assigned during guest-to-customer account conversion in classes/Customer.php, making credential recovery trivial.
Executive ViewAI
QloApps versions through 1.7.0 use weak password hashing (unsalted MD5 concatenated with a static key) that enables attackers with database access to crack customer and employee account passwords offline. The vulnerability severity is compounded by QloApps's use of only 8-character auto-generated passwords during customer account creation, making successful password recovery trivial. Organizations running these versions risk credential compromise affecting both customer-facing accounts and internal staff access.
Apply vendor patch.
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
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
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-34042
GHSA-xcxp-3whg-h83c
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB