CVE-2020-13567

9.8 CRITICAL

📋 TL;DR

CVE-2020-13567 is a critical SQL injection vulnerability in phpGACL 3.3.7 that allows attackers to execute arbitrary SQL commands via specially crafted HTTP requests. This affects all systems running the vulnerable phpGACL version, potentially compromising database integrity and confidentiality. Attackers can exploit this without authentication to manipulate or extract sensitive data.

💻 Affected Systems

Products:
  • phpGACL (Generic Access Control Lists for PHP)
Versions: Version 3.3.7 specifically
Operating Systems: Any OS running PHP with phpGACL
Default Config Vulnerable: ⚠️ Yes
Notes: All installations of phpGACL 3.3.7 are vulnerable regardless of configuration.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete database compromise including data theft, modification, deletion, or potential remote code execution if database functions allow it.

🟠

Likely Case

Unauthorized data access, privilege escalation, and potential administrative control over the phpGACL system.

🟢

If Mitigated

Limited impact with proper input validation, parameterized queries, and network segmentation in place.

🌐 Internet-Facing: HIGH - Exploitable via HTTP requests without authentication, making internet-facing instances immediate targets.
🏢 Internal Only: HIGH - Even internal systems are vulnerable to insider threats or compromised internal accounts.

🎯 Exploit Status

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

SQL injection vulnerabilities are commonly weaponized, and public PoC details exist in the Talos reports.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Version 3.3.8 or later

Vendor Advisory: https://github.com/phpGACL/phpGACL

Restart Required: No

Instructions:

1. Backup current phpGACL installation and database. 2. Download phpGACL 3.3.8 or later from official repository. 3. Replace vulnerable files with patched version. 4. Verify functionality and test access controls.

🔧 Temporary Workarounds

Input Validation Filter

all

Implement strict input validation and sanitization for all HTTP parameters before processing.

# Example PHP input sanitization
$clean_input = filter_var($_GET['param'], FILTER_SANITIZE_STRING);

Web Application Firewall

all

Deploy WAF with SQL injection rules to block malicious requests.

# ModSecurity rule example
SecRule ARGS "@detectSQLi" "id:1000,phase:2,deny"

🧯 If You Can't Patch

  • Isolate phpGACL system behind firewall with strict network access controls
  • Implement database user with minimal privileges and enable query logging

🔍 How to Verify

Check if Vulnerable:

Check phpGACL version in configuration files or admin interface. Version 3.3.7 is vulnerable.

Check Version:

grep -r 'version' /path/to/phpgacl/ | grep -i '3.3.7'

Verify Fix Applied:

Confirm version is 3.3.8 or later and test SQL injection attempts are properly rejected.

📡 Detection & Monitoring

Log Indicators:

  • Unusual SQL error messages in application logs
  • Multiple failed login attempts with SQL-like patterns
  • Unexpected database queries from web application

Network Indicators:

  • HTTP requests containing SQL keywords (SELECT, UNION, etc.)
  • Unusual traffic patterns to phpGACL endpoints

SIEM Query:

source="web_logs" AND ("SELECT" OR "UNION" OR "INSERT" OR "DELETE") AND uri="/phpgacl/*"

🔗 References

📤 Share & Export