CVE-2025-69633
Summary
A critical SQL Injection vulnerability has been identified in the Advanced Popup Creator (advancedpopupcreator) module for PrestaShop.
The vulnerability allows a remote unauthenticated attacker to execute arbitrary SQL queries via the fromController parameter of the module’s popup controller endpoint.
The issue affects versions:
< 1.2.7
The vendor confirmed that the vulnerability is present at least since version 1.1.26. The exact introduction version has not been determined.
The vulnerability is fixed in:
1.2.7
This vulnerability was observed during incident response investigations and may have been actively exploited in the wild.
Vulnerability Details
- CVE ID: CVE-2025-69633
- CWE: CWE-89 – SQL Injection
- CVSS 3.1: 9.8 (Critical)
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Attack Vector: Remote
- Authentication Required: No
- User Interaction: None
Affected Component
/modules/advancedpopupcreator/classes/AdvancedPopup.php
Vulnerable functions:
getPopups()updateVisits()
Technical Description
The vulnerability originates from improper handling of the fromController parameter.
Root Cause
In:
controllers/front/popup.php
The parameter is retrieved via:
if ($controller = Tools::getValue('fromController')) {
return $controller;
}
No sanitization is applied.
The value is later concatenated directly into SQL queries in:
classes/AdvancedPopup.php
Example vulnerable code:
$query .= ' AND (`controller_exceptions` = ""
OR `controller_exceptions` IS NULL
OR FIND_IN_SET("' . $controller . '", `controller_exceptions`))';
The $controller variable is not sanitized using pSQL() or any validation mechanism.
This allows injection of arbitrary SQL expressions.
Proof of Concept
Baseline Request (~1 second)
time curl -s -X POST "https://[TARGET]/module/advancedpopupcreator/popup" \
-d 'updateVisits=1&fromController=index'
SQL Injection Test (~6 seconds)
time curl -s -X POST "https://[TARGET]/module/advancedpopupcreator/popup" \
-d 'updateVisits=1&fromController=1" AND (SELECT SLEEP(5)) AND "1'
Result
Baseline: ~1.07s
Injected: ~6.02s
The time-based delay confirms successful blind SQL injection.
Impact
A remote unauthenticated attacker can:
- Extract sensitive database information
- Retrieve administrator credentials
- Extract password reset tokens
- Discover back-office URLs
- Fully compromise the PrestaShop administration panel
- Execute arbitrary SQL queries with the privileges of the underlying database user.
- Cause denial of service
Real-World Exploitation
During forensic investigation of a compromised merchant:
- Admin email and reset token were extracted from
ps_employee - Back-office URL retrieved from
ps_connection - Full administrative compromise achieved
Patch
The issue was fixed by sanitizing $controller using pSQL():
- OR FIND_IN_SET("' . $controller . '", `controller_exceptions`))';
+ OR FIND_IN_SET("' . pSQL($controller) . '", `controller_exceptions`))';
Applied to:
- Line ~371
- Line ~986
Fixed version: 1.2.7
Additional Security Recommendations
In addition to upgrading to version 1.2.7 or later, we recommend implementing the following security measures:
Upgrade or remove the module immediately. If the module is not strictly required, uninstall and delete it entirely.
Change the default database prefix (
ps_). Replace it with a longer, random and non-guessable prefix to reduce automated exploitation attempts targeting default table names.Monitor third-party module vulnerabilities. Use a security monitoring solution that tracks known vulnerabilities affecting PrestaShop modules (e.g. free module PrestaScan Security or Zentria.
Enforce strong Back Office authentication controls. Enable Two-Factor Authentication (2FA), preferably TOTP-based for all accounts in BackOffice. Make sure that the module is not storing TOTP secret keys in plaintext within the database.
Restrict and rotate the Back Office URL. Do not expose the administration URL publicly. If it has been disclosed or indexed, rename and restrict it immediately.
Keep PrestaShop core and all modules up to date. Apply security updates as soon as they are released.
Deploy perimeter protection. Protect the application with a properly configured Web Application Firewall (WAF) and ensure hosting-level hardening (firewall rules, least-privilege database user, secure file permissions).
Timeline
- 2025-12-10 – Vulnerability reported responsibly to Idnovate and PrestaShop security
- 2025-12-10 – Vendor confirms fix released
- 2025-12-18 – Affected versions confirmed (>= 1.1.26, fixed in 1.2.7)
- 2025-12-18 – CVE requested from MITRE
- 2026-01-28 – MITRE assigned CVE-2025-69633
- 2026-02-02 – Final technical verification prior to publication
- 2026-02-13 – Publication of the CVE
Vendor acknowledged the vulnerability.
References
- https://www.idnovate.com/
- https://addons.prestashop.com/en/pop-up-gamification/23773-popup-on-entry-exit-popup-and-newsletter.html
Credits
Discoverer:
Esokia (Researcher: Maxime Morel-Bailly)Technical assistance:
Profileo.com / 772424.com
Acknowledgments
We thank the Idnovate team and the PrestaShop security team for their cooperation and responsiveness.
Disclaimer
This advisory is published for defensive and informational purposes.
Users of affected versions are strongly encouraged to upgrade immediately to version 1.2.7 or later.