Description
SQL injection vulnerability found in PrestaShop bdroppy v.2.2.12 and before allowing a remote attacker to gain privileges via the BdroppyCronModuleFrontController::importProducts component.
EPSS Score:
1%
EUVD-2023-30657: Comprehensive Technical Analysis
Executive Summary
EUVD-2023-30657 (CVE-2023-26865) represents a critical SQL injection vulnerability in the PrestaShop bdroppy module (versions ≤2.2.12). With a CVSS v3.1 base score of 9.8 (Critical), this vulnerability poses an immediate and severe threat to affected e-commerce platforms, enabling unauthenticated remote attackers to compromise database integrity and potentially gain complete system control.
1. Vulnerability Assessment and Severity Evaluation
Severity Classification
- CVSS v3.1 Score: 9.8/10.0 (Critical)
- EPSS Score: 1.0 (100% probability of exploitation in the wild)
- Attack Complexity: Low
- Privileges Required: None
- User Interaction: None
CVSS Vector Analysis (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
| Metric | Value | Implication |
|---|---|---|
| Attack Vector (AV:N) | Network | Exploitable remotely without physical access |
| Attack Complexity (AC:L) | Low | No special conditions required for exploitation |
| Privileges Required (PR:N) | None | No authentication needed |
| User Interaction (UI:N) | None | Fully automated exploitation possible |
| Scope (S:U) | Unchanged | Impact limited to vulnerable component |
| Confidentiality (C:H) | High | Complete database disclosure possible |
| Integrity (I:H) | High | Total data manipulation capability |
| Availability (A:H) | High | Complete system disruption possible |
Critical Risk Factors
- Unauthenticated exploitation: No credentials required
- Network-accessible: Exploitable from anywhere on the internet
- High EPSS score: Active exploitation confirmed or highly likely
- E-commerce context: Direct access to sensitive customer and payment data
2. Potential Attack Vectors and Exploitation Methods
Vulnerable Component
BdroppyCronModuleFrontController::importProducts
This component appears to be a front-end controller responsible for automated product import operations, likely triggered via cron jobs or direct HTTP requests.
Attack Methodology
Primary Attack Vector
HTTP Request → BdroppyCronModuleFrontController → importProducts() → Unsanitized SQL Query
Exploitation Techniques
1. Direct SQL Injection
GET /module/bdroppy/cron?param=1' UNION SELECT user,password FROM ps_employee--
2. Boolean-Based Blind SQL Injection
POST /module/bdroppy/importProducts
Content-Type: application/x-www-form-urlencoded
product_id=1' AND (SELECT COUNT(*) FROM ps_customer)>0--
3. Time-Based Blind SQL Injection
GET /module/bdroppy/cron?id=1' AND SLEEP(5)--
4. UNION-Based Data Exfiltration
' UNION SELECT 1,2,3,email,password,6,7 FROM ps_customer WHERE id_customer=1--
Exploitation Stages
Stage 1: Reconnaissance
- Identify PrestaShop installation
- Detect bdroppy module presence
- Determine database type (typically MySQL/MariaDB)
Stage 2: Initial Exploitation
- Inject SQL payloads into vulnerable parameters
- Enumerate database structure
- Extract table and column names
Stage 3: Data Exfiltration
- Extract administrator credentials
- Harvest customer PII (names, addresses, emails)
- Obtain payment information (if stored)
- Access order history and business intelligence
Stage 4: Privilege Escalation
- Create administrative accounts
- Modify existing user privileges
- Plant backdoors in database
Stage 5: Persistence & Lateral Movement
- Inject malicious code into database-stored content
- Modify product descriptions with XSS payloads
- Establish persistent access mechanisms
3. Affected Systems and Software Versions
Directly Affected
- Product: bdroppy module for PrestaShop
- Affected Versions: v2.2.12 and all prior versions
- Platform: PrestaShop e-commerce platform (all versions supporting the module)
Deployment Context
- Primary Target: European e-commerce merchants using dropshipping
- Geographic Distribution: EU member states, particularly Spain, France, Italy, and Germany
- Business Sectors:
- Small to medium e-commerce businesses
- Dropshipping operations
- Multi-vendor marketplaces
Infrastructure Dependencies
- Web Server: Apache/Nginx
- Database: MySQL 5.x/8.x or MariaDB
- PHP Version: 7.1+ (PrestaShop requirement)
- Operating Systems: Linux (Ubuntu, Debian, CentOS), Windows Server
Estimated Exposure
Based on bdroppy's market presence and PrestaShop's European adoption:
- Estimated vulnerable installations: 5,000-15,000 active stores
- Potential data subjects affected: Millions of EU customers
- GDPR implications: Significant compliance exposure
4. Recommended Mitigation Strategies
Immediate Actions (Priority 1 - Within 24 Hours)
1. Emergency Patching
# Update bdroppy module immediately
cd /var/www/html/prestashop/modules/bdroppy
# Backup current version
tar -czf bdroppy_backup_$(date +%Y%m%d).tar.gz .
# Update to patched version (>2.2.12)
# Via PrestaShop admin panel or manual installation
2. Temporary Mitigation (If patching delayed)
# Apache .htaccess rule to block access to vulnerable endpoint
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/module/bdroppy/cron [NC,OR]
RewriteCond %{REQUEST_URI} ^/modules/bdroppy/ [NC]
RewriteRule .* - [F,L]
</IfModule>
# Nginx configuration
location ~* ^/module/bdroppy/ {
deny all;
return 403;
}
3. Web Application Firewall (WAF) Rules
# ModSecurity rule example
SecRule ARGS "@detectSQLi" \
"id:1000001,\
phase:2,\
block,\
log,\
msg:'SQL Injection attempt in bdroppy module',\
logdata:'Matched Data: %{MATCHED_VAR}',\
severity:'CRITICAL'"
Short-Term Actions (Priority 2 - Within 72 Hours)
1. Security Audit
-- Check for suspicious database modifications
SELECT * FROM ps_employee WHERE date_add > DATE_SUB(NOW(), INTERVAL 30 DAY);
SELECT * FROM ps_access WHERE id_profile = 1 AND date_add > DATE_SUB(NOW(), INTERVAL 30 DAY);
-- Review administrator accounts
SELECT id_employee, email, active, last_passwd_gen FROM ps_employee WHERE id_profile = 1;
2. Log Analysis
# Search for exploitation attempts
grep -i "bdroppy" /var/log/apache2/access.log | grep -E "(\%27|'|UNION|SELECT|--)"
grep -i "sql" /var/log/apache2/error.log | tail -100
# Check for suspicious POST requests
awk '$6 == "POST" && $7 ~ /bdroppy/' /var/log/apache2/access.log
3. Incident Response Procedures
- Activate incident response team
- Preserve forensic evidence (logs, database snapshots