CVE-2020-26154

9.8 CRITICAL

📋 TL;DR

CVE-2020-26154 is a critical buffer overflow vulnerability in libproxy's url.cpp component when PAC (Proxy Auto-Configuration) is enabled. Attackers can exploit this by delivering a large PAC file without a Content-length header, potentially leading to remote code execution. Systems using libproxy versions through 0.4.15 with PAC enabled are affected.

💻 Affected Systems

Products:
  • libproxy
Versions: Versions through 0.4.15
Operating Systems: Linux distributions including Debian, Ubuntu, openSUSE, and others using vulnerable libproxy versions
Default Config Vulnerable: ⚠️ Yes
Notes: Vulnerability only triggers when PAC is enabled and a large PAC file is delivered without Content-length header.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Remote code execution with root/system privileges, allowing complete system compromise and lateral movement.

🟠

Likely Case

Denial of service through application crashes, with potential for remote code execution in vulnerable configurations.

🟢

If Mitigated

Limited impact if PAC is disabled or proper input validation is implemented.

🌐 Internet-Facing: HIGH - Exploitable remotely via malicious PAC file delivery without authentication.
🏢 Internal Only: MEDIUM - Requires internal network access but can be exploited via internal proxy configurations.

🎯 Exploit Status

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

Proof of concept exists in GitHub pull request #126. Exploitation requires delivering malicious PAC file to vulnerable system.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: libproxy 0.4.16 and later

Vendor Advisory: http://lists.opensuse.org/opensuse-security-announce/2020-10/msg00030.html

Restart Required: Yes

Instructions:

1. Update libproxy to version 0.4.16 or later using your distribution's package manager. 2. For Debian/Ubuntu: sudo apt update && sudo apt upgrade libproxy. 3. For openSUSE: sudo zypper update libproxy. 4. Restart affected services using libproxy.

🔧 Temporary Workarounds

Disable PAC functionality

all

Disable Proxy Auto-Configuration to prevent exploitation

Configure system/proxy settings to not use PAC files
Remove or disable PAC URL configurations

Network filtering

all

Block delivery of large PAC files without Content-length headers

Configure WAF or proxy to reject PAC files > 1MB without Content-length
Implement network monitoring for suspicious PAC file delivery

🧯 If You Can't Patch

  • Disable PAC functionality completely in system and application proxy settings
  • Implement strict network controls to prevent delivery of PAC files from untrusted sources

🔍 How to Verify

Check if Vulnerable:

Check libproxy version: dpkg -l | grep libproxy or rpm -qa | grep libproxy. If version is 0.4.15 or earlier, system is vulnerable.

Check Version:

dpkg -l | grep libproxy  # Debian/Ubuntu
rpm -qa | grep libproxy  # RHEL/CentOS/Fedora
pacman -Q libproxy       # Arch

Verify Fix Applied:

Verify libproxy version is 0.4.16 or later: dpkg -l | grep libproxy or rpm -qa | grep libproxy. Check that version shows 0.4.16+.

📡 Detection & Monitoring

Log Indicators:

  • Application crashes in libproxy-related processes
  • Large PAC file downloads in proxy logs
  • Memory access violation errors

Network Indicators:

  • Large PAC file downloads without Content-length headers
  • Unusual proxy configuration requests

SIEM Query:

source="proxy.log" AND ("PAC" OR "libproxy") AND (size>1048576 OR "Content-length: none")

🔗 References

📤 Share & Export