CVE-2021-39525

8.8 HIGH

📋 TL;DR

CVE-2021-39525 is a heap-based buffer overflow vulnerability in libredwg's bit_read_fixed() function. This allows attackers to execute arbitrary code or cause denial of service by processing specially crafted DWG files. Users and applications that utilize libredwg for DWG file processing are affected.

💻 Affected Systems

Products:
  • LibreDWG
Versions: All versions through v0.10.1.3751
Operating Systems: All platforms where libredwg is installed
Default Config Vulnerable: ⚠️ Yes
Notes: Any application using libredwg library to process DWG files is vulnerable.

📦 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

Application crash (denial of service) when processing malicious DWG files, potentially disrupting workflows.

🟢

If Mitigated

Limited impact if application runs with minimal privileges and proper sandboxing/isolation.

🌐 Internet-Facing: MEDIUM - Exploitation requires processing attacker-controlled DWG files, which could occur through file upload features.
🏢 Internal Only: MEDIUM - Internal users could trigger the vulnerability by opening malicious DWG files from untrusted sources.

🎯 Exploit Status

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

Proof-of-concept available in GitHub issue. Exploitation requires user/application to process malicious DWG file.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: v0.10.1.3752 and later

Vendor Advisory: https://github.com/LibreDWG/libredwg/issues/261

Restart Required: Yes

Instructions:

1. Update libredwg to version 0.10.1.3752 or later. 2. Rebuild/reinstall any applications using libredwg. 3. Restart affected services/applications.

🔧 Temporary Workarounds

Disable DWG file processing

all

Temporarily disable DWG file processing in applications using libredwg.

Sandbox libredwg usage

linux

Run applications using libredwg in isolated containers or with minimal privileges.

docker run --read-only --cap-drop=ALL your_application

🧯 If You Can't Patch

  • Implement strict file upload validation to reject suspicious DWG files.
  • Deploy application allowlisting to prevent unauthorized code execution.

🔍 How to Verify

Check if Vulnerable:

Check libredwg version: 'dwgread --version' or 'strings /path/to/libredwg.so | grep version'

Check Version:

dwgread --version 2>/dev/null || strings $(ldconfig -p | grep libredwg | head -1 | awk '{print $4}') 2>/dev/null | grep -i version

Verify Fix Applied:

Confirm version is 0.10.1.3752 or later using version check command.

📡 Detection & Monitoring

Log Indicators:

  • Application crashes with segmentation faults when processing DWG files
  • Unusual memory allocation patterns in libredwg processes

Network Indicators:

  • Unexpected DWG file downloads/uploads to/from untrusted sources

SIEM Query:

source="application_logs" AND ("segmentation fault" OR "buffer overflow") AND process="*libredwg*"

🔗 References

📤 Share & Export