Skip to main content

GNU LibreDWG CVE-2026-9504

| EUVDEUVD-2026-31745 LOW
Out-of-bounds Read (CWE-125)
2026-05-25 VulDB GHSA-7fc3-9hrj-6779
1.9
CVSS 4.0 · Vendor: VulDB
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Gain local OS access (PR:L)
  2. Delivery
    Craft R2007+ DWG file with malformed LTYPE dash text
  3. Exploit
    Supply crafted file to dwggrep execution
  4. Execution
    Trigger unbounded bit_convert_TU read past strings_area
  5. Impact
    Leak partial adjacent heap memory contents

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Bounds checking, read limits
MITRE ATT&CK

1 technique across 1 tactic: Collection

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

The attacker must have local access to the system with at least low-privilege OS credentials (CVSS PR:L, AV:L). The dwggrep utility must be installed and invoked - either directly by the attacker or by an automated pipeline - against a maliciously crafted DWG file. The crafted file must be in R2007-or-later DWG format, contain an LTYPE object with dashes entries, and have a dash text pointer referencing a wide-character string that is not null-terminated within the bounds of the strings_area buffer. Pre-R2007 DWG files do not trigger the vulnerable code path. Exploitation is not automatable (SSVC: no) - there is no network-facing attack surface; dwggrep is a local command-line tool with no daemon or service mode. The impact is limited to reading partial heap contents (VC:L); no privilege escalation, remote code execution, or persistent access is achievable through this vector alone.

Impact

Real-world risk is very low across all available signals. The CVSS 4.0 score of 1.9 with vector AV:L/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N reflects local-only access with low privilege requirement and impact limited to partial confidentiality loss - no integrity or availability impact is indicated. EPSS at 0.01% (2nd percentile) aligns with the low CVSS, suggesting near-zero probability of exploitation in the 30-day window. The vulnerability is not listed in CISA KEV, confirming no confirmed active exploitation. SSVC designates exploitation as poc-only, technical impact as partial, and automatable as no - meaning automated mass exploitation is not feasible. The limiting factors stack: attacker must have local OS access, must be able to supply a crafted DWG file to the dwggrep process, and the impact is read-only heap memory leakage rather than code execution. The public POC is a crafted DWG file (not a weaponized exploit framework), consistent with researcher-grade disclosure rather than opportunistic exploitation. The tags 'Buffer Overflow' from VulDB appear to be a labeling imprecision - the CVSS vector, CWE-125, and commit diff all confirm an out-of-bounds read, not a write/overflow that could achieve code execution.

Exploit ScenarioDerived

An attacker with local OS access places a specially crafted DWG file containing an LTYPE object whose R2007+ dash text field points to a wide-character string that is not null-terminated within the strings_area buffer, then induces a user or automated process to run dwggrep against the file. The original unbounded bit_convert_TU call reads beyond the strings_area allocation, potentially leaking a small number of adjacent heap bytes into output or accessible memory. A public proof-of-concept DWG payload demonstrating this behavior is available at https://github.com/HackC0der/CVE-Repos/blob/main/libredwg/libredwg_6d6a339_heap_overflow_bit_convert_TU.dwg.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
Patch available 0.0% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Jun 08, 2026

Out-of-bounds read in GNU LibreDWG's dwggrep utility exposes heap memory when processing maliciously crafted DWG files containing LTYPE objects with unterminated wide-character dash text strings. Affected versions span 0.1 through 0.14 (CPE: cpe:2.3:a:gnu:libredwg). A local authenticated attacker can trigger partial information disclosure by supplying a crafted DWG file to the dwggrep command-line tool; a public proof-of-concept DWG payload exists, though EPSS of 0.01% (2nd percentile) and absence from CISA KEV indicate no widespread exploitation activity at time of analysis.

RemediationAI

The upstream fix is available as commit be996bf2178a40e98720f18c2414815d244413db in the LibreDWG GitHub repository (https://github.com/LibreDWG/libredwg/commit/be996bf2178a40e98720f18c2414815d244413db). No tagged release version incorporating this fix has been independently confirmed - the fix exists at commit level only, so users should build from source at or after this commit. Downstream package maintainers should backport the patch to their packaged versions. As a compensating control, restrict use of the dwggrep utility to trusted DWG files only, as the vulnerability is triggered exclusively through dwggrep processing of attacker-supplied input. Disabling or removing the dwggrep binary entirely eliminates the attack surface without affecting the core LibreDWG library functionality used by other applications. This workaround has no impact on applications that use libdwg directly rather than the dwggrep utility.

Affected VersionsENISA

libredwg 0.13
libredwg 0.8
libredwg 0.1
libredwg 0.6
libredwg 0.4
libredwg 0.11
libredwg 0.7
libredwg 0.3
libredwg 0.14
libredwg 0.5
libredwg 0.9
libredwg 0.10
libredwg 0.2
libredwg 0.12

Affected Packages

euvd libredwg no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

GNU LibreDWG is an open-source C library for reading and writing AutoCAD DWG binary drawing files. The dwggrep utility (programs/dwggrep.c) searches DWG files for text patterns and, for R2007+ format files, must convert UTF-16LE wide-character strings (BITCODE_TU) to UTF-8 via the bit_convert_TU function in src/bits.c. The root cause (CWE-125, Out-of-bounds Read) is that the original MATCH_OBJECT macro call in match_LTYPE processed LTYPE object dash text entries using the unbounded bit_convert_TU without enforcing the boundary of the strings_area buffer. A DWG file can supply an LTYPE dash text pointer that is not null-terminated within the allocated strings_area, causing bit_convert_TU to walk past the buffer end. The fix introduces a bounded variant, bit_convert_TU_len, which accepts a max_wchars parameter derived from the distance between the text pointer and the end of strings_area, and returns NULL if no null terminator is found within that range. This change is applied only to the R2007+ code path; pre-R2007 files use a separate branch that processes plain char strings and is unaffected.

Know when Libredwg gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (VulDB) PRIMARY 1.9 LOW
CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:P

Primary rating from Vendor (VulDB) · only source for this CVE.

CVSS VectorVendor: VulDB

Attack Vector
Local
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

1
CVSS changed
May 26, 2026 - 16:22 NVD
3.3 (LOW) 1.9 (LOW)

DescriptionCVE.org

A weakness has been identified in GNU LibreDWG up to 0.14. Affected is the function bit_convert_TU of the file programs/dwggrep.c of the component Dwggrep Utility. This manipulation causes out-of-bounds read. The attack needs to be launched locally. The exploit has been made available to the public and could be used for attacks. Patch name: be996bf2178a40e98720f18c2414815d244413db. Applying a patch is the recommended action to fix this issue.

Threat Intelligence Overview

EPSS Score
0.0%
Top 98% exploitable
Exploit
POC
Public exploit code exists
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity LOW
CISA KEV No
Public POC Yes
EPSS 0.0%
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Defer
Exploitation
Poc
System Exposure· derived
Small
Automatable
No
Human Impact· derived
Low
Technical Impact
Partial

Priority Score

30
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +10
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

CVE-2022-35164 CRITICAL POC
9.8 Aug 18

LibreDWG v0.12.4.4608 & commit f2dea29 was discovered to contain a heap use-after-free via bit_copy_chain. Rated critica

CVE-2021-28237 CRITICAL POC
9.8 Dec 02

LibreDWG v0.12.3 was discovered to contain a heap-buffer overflow via decode_preR13. Rated critical severity (CVSS 9.8),

CVE-2020-21844 HIGH POC
8.8 May 17

GNU LibreDWG 0.10 is affected by: memcpy-param-overlap. Rated high severity (CVSS 8.8), this vulnerability is remotely e

CVE-2019-9775 CRITICAL POC
9.1 Mar 14

An issue was discovered in GNU LibreDWG 0.7 and 0.7.1645. Rated critical severity (CVSS 9.1), this vulnerability is remo

CVE-2019-9774 CRITICAL POC
9.1 Mar 14

An issue was discovered in GNU LibreDWG 0.7 and 0.7.1645. Rated critical severity (CVSS 9.1), this vulnerability is remo

CVE-2020-21833 HIGH POC
8.8 May 17

A heap based buffer overflow vulnerability exits in GNU LibreDWG 0.10 via: read_2004_section_classes ../../src/decode.c:

CVE-2020-21841 HIGH POC
8.8 May 17

A heap based buffer overflow vulnerability exits in GNU LibreDWG 0.10 via bit_read_B ../../src/bits.c:135. Rated high se

CVE-2020-21840 HIGH POC
8.8 May 17

A heap based buffer overflow vulnerability exits in GNU LibreDWG 0.10 via bit_search_sentinel ../../src/bits.c:1985. Rat

CVE-2020-21838 HIGH POC
8.8 May 17

A heap based buffer overflow vulnerability exits in GNU LibreDWG 0.10 via: read_2004_section_appinfo ../../src/decode.c:

CVE-2020-21843 HIGH POC
8.8 May 17

A heap based buffer overflow vulnerability exits in GNU LibreDWG 0.10 via bit_read_RC ../../src/bits.c:318. Rated high s

CVE-2020-21842 HIGH POC
8.8 May 17

A heap based buffer overflow vulnerability exists in GNU LibreDWG 0.10 via read_2004_section_revhistory ../../src/decode

CVE-2020-21832 HIGH POC
8.8 May 17

A heap based buffer overflow vulnerability exists in GNU LibreDWG 0.10 via read_2004_compressed_section ../../src/decode

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy