CVE-2019-11068

9.8 CRITICAL

📋 TL;DR

This vulnerability in libxslt allows attackers to bypass URL access controls by crafting malicious URLs that cause xsltCheckRead to return -1 error codes, which callers incorrectly interpret as permission to load the URL. This affects any application using vulnerable versions of libxslt for XML/XSLT processing, potentially enabling unauthorized file access or remote code execution.

💻 Affected Systems

Products:
  • libxslt
  • Applications using libxslt (e.g., web applications, XML processors, document converters)
Versions: libxslt through version 1.1.33
Operating Systems: Linux, Unix-like systems, Windows (if libxslt is installed)
Default Config Vulnerable: ⚠️ Yes
Notes: Any application that uses libxslt to process XML/XSLT from untrusted sources is vulnerable. Common in web applications, document processing systems, and XML transformation tools.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Remote code execution leading to complete system compromise, data theft, or ransomware deployment.

🟠

Likely Case

Unauthorized file access, information disclosure, or denial of service through crafted XSLT transformations.

🟢

If Mitigated

Limited impact with proper network segmentation, application sandboxing, and input validation.

🌐 Internet-Facing: HIGH - Applications processing untrusted XML/XSLT from external sources are directly exploitable.
🏢 Internal Only: MEDIUM - Internal applications processing user-supplied XML/XSLT could be exploited by authenticated users.

🎯 Exploit Status

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

Exploitation requires crafting malicious URLs in XSLT documents. Public proof-of-concept demonstrates the bypass mechanism.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: libxslt 1.1.34 and later

Vendor Advisory: http://xmlsoft.org/XSLT/

Restart Required: Yes

Instructions:

1. Update libxslt to version 1.1.34 or later using your system package manager. 2. For Linux: Use 'apt-get upgrade libxslt1.1' (Debian/Ubuntu) or 'yum update libxslt' (RHEL/CentOS). 3. Restart any services or applications using libxslt. 4. Recompile any statically linked applications with the updated library.

🔧 Temporary Workarounds

Disable external entity processing

all

Configure XML processors to disable external entity resolution and URL fetching in XSLT transformations.

For libxml2: Set XML_PARSE_NOENT and XML_PARSE_NONET parser options to prevent network access

Input validation and sanitization

all

Validate and sanitize all XML/XSLT input before processing to reject malicious URLs.

🧯 If You Can't Patch

  • Implement strict network segmentation to isolate systems using libxslt from untrusted networks.
  • Use application sandboxing or containerization to limit the impact of potential exploitation.

🔍 How to Verify

Check if Vulnerable:

Check libxslt version with 'xsltproc --version' or 'dpkg -l libxslt1.1' (Debian) or 'rpm -q libxslt' (RHEL). If version is 1.1.33 or earlier, system is vulnerable.

Check Version:

xsltproc --version | head -1

Verify Fix Applied:

After update, verify version is 1.1.34 or later using the same commands. Test with known malicious XSLT samples if available.

📡 Detection & Monitoring

Log Indicators:

  • Unusual file access patterns from XML processing applications
  • Errors in application logs related to XSLT parsing failures
  • Unexpected network connections from XML processors

Network Indicators:

  • Outbound connections from XML processors to unexpected URLs
  • Large or unusual data transfers following XML processing

SIEM Query:

source="application_logs" AND ("xslt" OR "libxslt") AND (error OR failure OR "-1")

🔗 References

📤 Share & Export