CVE-2023-26034

9.6 CRITICAL

📋 TL;DR

ZoneMinder versions before 1.36.33 and 1.37.33 contain a SQL injection vulnerability in the filter query parameter. Attackers with View or Edit permissions can execute arbitrary SQL commands, potentially leading to data theft, authentication bypass, or remote code execution. This affects all ZoneMinder installations using vulnerable versions.

💻 Affected Systems

Products:
  • ZoneMinder
Versions: All versions before 1.36.33 and 1.37.33
Operating Systems: Linux
Default Config Vulnerable: ⚠️ Yes
Notes: Requires user with View or Edit permissions on Events. Default installations with admin accounts are vulnerable.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Remote code execution leading to complete system compromise, data exfiltration, and lateral movement within the network.

🟠

Likely Case

Unauthorized data access and modification of surveillance footage and system configurations.

🟢

If Mitigated

Limited impact if proper input validation and least privilege access controls are implemented.

🌐 Internet-Facing: HIGH
🏢 Internal Only: HIGH

🎯 Exploit Status

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

Exploitation requires valid user credentials with View or Edit permissions. SQL injection is well-documented and easy to weaponize.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 1.36.33 or 1.37.33

Vendor Advisory: https://github.com/ZoneMinder/zoneminder/security/advisories/GHSA-222j-wh8m-xjrx

Restart Required: Yes

Instructions:

1. Backup your ZoneMinder configuration and database. 2. Update ZoneMinder to version 1.36.33 or 1.37.33 using your package manager or from source. 3. Restart the ZoneMinder service. 4. Verify the update was successful.

🔧 Temporary Workarounds

Input Validation Filter

linux

Implement web application firewall rules or input validation to block SQL injection patterns in the filter parameter.

# Example mod_security rule: SecRule ARGS:filter "@detectSQLi" "id:1001,phase:2,deny,status:403"

🧯 If You Can't Patch

  • Restrict network access to ZoneMinder interface to trusted IPs only using firewall rules.
  • Implement strict least privilege access controls and monitor for unusual SQL queries in database logs.

🔍 How to Verify

Check if Vulnerable:

Check ZoneMinder version via web interface or command line. If version is below 1.36.33 or 1.37.33, it is vulnerable.

Check Version:

zmupdate.pl --version or check web interface footer

Verify Fix Applied:

Confirm ZoneMinder version is 1.36.33 or higher (stable) or 1.37.33 or higher (development). Test the filter parameter with SQL injection payloads to ensure they are blocked.

📡 Detection & Monitoring

Log Indicators:

  • Unusual SQL queries in database logs
  • Multiple failed login attempts followed by filter parameter exploitation

Network Indicators:

  • HTTP requests containing SQL keywords in filter[Query][terms][0][attr] parameter

SIEM Query:

source="web_logs" AND uri_path="/zm/index.php" AND query_string="*filter*" AND (query_string="*SELECT*" OR query_string="*UNION*" OR query_string="*OR*1=1*")

🔗 References

📤 Share & Export