CVE-2023-48050

9.8 CRITICAL

📋 TL;DR

This CVE describes a critical SQL injection vulnerability in the Cams Biometrics Zkteco/eSSL integration module for Odoo HR attendance systems. It allows remote attackers to execute arbitrary SQL commands via the 'db' parameter, potentially leading to full system compromise. Organizations using affected versions of the odoo-biometric-attendance module (v13.0 through 16.0.1) are at risk.

💻 Affected Systems

Products:
  • Cams Biometrics Zkteco Integration Module
  • Cams Biometrics eSSL Integration Module
  • odoo-biometric-attendance
Versions: 13.0 through 16.0.1
Operating Systems: Any OS running Odoo with the biometric module
Default Config Vulnerable: ⚠️ Yes
Notes: Affects the controllers/controllers.py component specifically. Requires the biometric attendance module to be installed and active in Odoo.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete system takeover: attacker gains administrative privileges, executes arbitrary code, steals sensitive biometric/HR data, and pivots to other systems.

🟠

Likely Case

Data breach and system compromise: attacker extracts sensitive HR/attendance data, modifies database records, and potentially installs backdoors.

🟢

If Mitigated

Limited impact with proper network segmentation and input validation, potentially only affecting the biometric module database.

🌐 Internet-Facing: HIGH - The vulnerability is remotely exploitable via the web interface, making internet-facing instances immediately vulnerable.
🏢 Internal Only: HIGH - Even internally, any user with network access to the Odoo instance could exploit this vulnerability.

🎯 Exploit Status

Public PoC: ⚠️ Yes
Weaponized: LIKELY
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

Public exploit code exists in the OdZoo repository. The vulnerability requires no authentication and has straightforward exploitation.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Not specified

Vendor Advisory: Not available

Restart Required: No

Instructions:

1. Check for official patch from Cams Biometrics/Zkteco/eSSL. 2. If no patch, consider removing or disabling the biometric attendance module. 3. Apply manual code fixes to sanitize the 'db' parameter input.

🔧 Temporary Workarounds

Input Validation Patch

all

Manually patch the controllers.py file to sanitize the 'db' parameter input

Edit controllers/controllers.py to add proper parameter validation and SQL escaping for the 'db' parameter

Web Application Firewall

all

Deploy WAF rules to block SQL injection patterns targeting the biometric module endpoints

Add WAF rules to block SQL injection patterns in requests to /biometric/* endpoints

🧯 If You Can't Patch

  • Network segmentation: Isolate the Odoo instance from internet access and restrict internal access to authorized users only.
  • Disable the biometric module: Remove or disable the odoo-biometric-attendance module if not critically needed.

🔍 How to Verify

Check if Vulnerable:

Check Odoo installed modules for 'odoo-biometric-attendance' and verify version is between 13.0 and 16.0.1. Examine controllers/controllers.py for lack of input validation on 'db' parameter.

Check Version:

In Odoo: Settings → Apps → find 'Biometric Attendance' module and check version

Verify Fix Applied:

Verify the 'db' parameter in controllers.py now uses parameterized queries or proper input sanitization. Test with SQL injection payloads that should be rejected.

📡 Detection & Monitoring

Log Indicators:

  • Unusual SQL queries in Odoo logs
  • Multiple failed login attempts followed by successful biometric module access
  • Unexpected database operations from biometric endpoints

Network Indicators:

  • SQL injection patterns in HTTP requests to /biometric/* endpoints
  • Unusual outbound connections from Odoo server post-exploitation

SIEM Query:

source="odoo.log" AND ("SELECT" OR "UNION" OR "INSERT" OR "UPDATE" OR "DELETE") AND "/biometric/"

🔗 References

📤 Share & Export