CVE-2023-40921

9.8 CRITICAL

📋 TL;DR

This SQL injection vulnerability in Common Services soliberte allows attackers to manipulate database queries through the lat and lng parameters in point_list.php. Attackers can potentially extract sensitive information from the database, including user credentials and other confidential data. All users running soliberte versions before v4.3.03 are affected.

💻 Affected Systems

Products:
  • Common Services soliberte
Versions: All versions before v4.3.03
Operating Systems: Any OS running soliberte
Default Config Vulnerable: ⚠️ Yes
Notes: The vulnerability exists in the default installation and requires no special configuration to be exploitable.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete database compromise leading to data exfiltration, authentication bypass, privilege escalation, and potential remote code execution through database functions.

🟠

Likely Case

Extraction of sensitive information such as user credentials, personal data, and configuration details from the database.

🟢

If Mitigated

Limited information disclosure if proper input validation and parameterized queries are implemented.

🌐 Internet-Facing: HIGH - The vulnerable endpoint is accessible via web requests, making it directly exploitable from the internet.
🏢 Internal Only: HIGH - Even internally, the vulnerability can be exploited by malicious insiders or compromised internal systems.

🎯 Exploit Status

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

SQL injection vulnerabilities are commonly weaponized, and this one requires no authentication, making exploitation straightforward.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: v4.3.03

Vendor Advisory: https://security.friendsofpresta.org/modules/2023/12/12/soliberte.html

Restart Required: No

Instructions:

1. Download soliberte v4.3.03 or later from the official source. 2. Replace the vulnerable functions/point_list.php file with the patched version. 3. Verify the fix by testing the lat and lng parameters.

🔧 Temporary Workarounds

Input Validation Filter

all

Implement server-side validation to ensure lat and lng parameters contain only numeric values

# In point_list.php, add validation before SQL query:
if (!is_numeric($_GET['lat']) || !is_numeric($_GET['lng'])) {
    die('Invalid parameters');
}

Web Application Firewall Rule

all

Block SQL injection patterns targeting the point_list.php endpoint

# Example ModSecurity rule:
SecRule ARGS_GET "@detectSQLi" "id:1001,phase:2,deny,status:403,msg:'SQLi attempt detected'"

🧯 If You Can't Patch

  • Block external access to functions/point_list.php using network firewall rules or web server configuration
  • Implement strict input validation and parameterized queries in the application code

🔍 How to Verify

Check if Vulnerable:

Test the point_list.php endpoint with SQL injection payloads in lat and lng parameters, such as: ' OR '1'='1

Check Version:

Check the soliberte version in the application's configuration files or admin interface

Verify Fix Applied:

Attempt the same SQL injection tests after patching; successful queries should return error messages or no data instead of executing SQL commands

📡 Detection & Monitoring

Log Indicators:

  • Unusual SQL error messages in web server logs
  • Multiple requests to point_list.php with suspicious parameter values
  • Database query errors containing SQL syntax

Network Indicators:

  • HTTP requests to /functions/point_list.php containing SQL keywords in parameters
  • Unusual database query patterns from the web server

SIEM Query:

source="web_server.log" AND uri="/functions/point_list.php" AND (param="*SELECT*" OR param="*UNION*" OR param="*OR*1*" OR param="*--*" OR param="*;*" OR param="*'*")

🔗 References

📤 Share & Export