Skip to main content

LibreDWG EUVDEUVD-2026-114463

| CVE-2026-62250 MEDIUM
Loop with Unreachable Exit Condition (Infinite Loop) (CWE-835)
2026-10-30 GitHub_M
5.5
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Craft malformed pre-R13 DWG (AC1.40)
  2. Delivery
    Deliver file to user or automated pipeline
  3. Exploit
    Tool calls dwg_read_file() on untrusted file
  4. Execution
    decode_preR13_entities enters nonterminating allocation loop
  5. Impact
    Unbounded memory growth triggers OOM-kill

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Loop termination conditions
MITRE ATT&CK

1 technique across 1 tactic: Impact

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

Exploitation Conditions

Exploitation requires the target to parse an attacker-supplied, untrusted pre-R13 DWG file (the minimized PoC uses the AC1.40 magic header) through dwg_read_file() using an affected LibreDWG build (<=0.14, prior to nightly 0.14.8413); all bundled tools sharing this decode path are affected, including dwg2dxf, dwgread and dwg2svg. No authentication or privileges are required (PR:N). Limiting factors: impact is availability-only (process memory exhaustion/OOM-kill - no code execution, data disclosure or integrity loss); the file must actually be opened/processed by a user or an automated pipeline (UI:R), so the attacker needs a delivery channel into such a workflow; and the specific trigger path is the pre-R13 entity decoder, so only files reaching that decoder are relevant.

Impact

This is a genuine but bounded issue - a denial-of-service only, not a path to code execution or data exposure. The NVD vector CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H (5.5 Medium) reflects that: the only impact metric set is A:H, with C:N and I:N. The LibreDWG advisory independently scores it AV:N (6.5 Medium); this attack-vector disagreement is unresolved in the available data - AV:L fits a user opening a file in a local tool, while AV:N fits an untrusted file reaching a network-facing converter or CI pipeline, so the real figure depends on deployment. No CISA KEV listing and no EPSS score are present in the input, so there is no signal of active or probable exploitation; exploitation status is best described as a public PoC reference existing (see below) rather than confirmed exploitation. The vuln.today decision label is 'this_month', i.e. prioritized but explicitly not an emergency - consistent with a credible, reproducible DoS that lacks the integrity/confidentiality impact or active-exploitation evidence that would justify emergency handling. Net: a real, worth-patching availability bug for anyone parsing untrusted DWG files, not a high-CVSS-but-low-real-risk phantom, but also not a drop-everything priority.

Exploit ScenarioDerived

An attacker crafts a malformed pre-R13 DWG file (magic header AC1.40) and delivers it to a target that parses DWGs via LibreDWG - for example a document-conversion service, a CAD viewer, or a CI asset pipeline that runs dwg2dxf, dwgread or dwg2svg. When dwg_read_file() processes the file, decode_preR13_entities() enters a nonterminating loop that allocates a new object every iteration, consuming memory without bound until the process is OOM-killed or realloc fails. The GHSA advisory includes a verified 496-byte minimized PoC and reproduction steps, so the trigger is demonstrated rather than theoretical.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 30, 2026

Memory-exhaustion denial of service in LibreDWG 0.14 and earlier lets a crafted pre-R13 DWG file drive the pre-R13 entity decoder into a loop with no reachable normal exit, allocating a new object on every iteration until the process is OOM-killed or realloc fails. Any application or tool that calls dwg_read_file() on untrusted input is affected - including the bundled dwg2dxf, dwgread and dwg2svg - so a CAD viewer, document converter or CI asset pipeline that processes a malformed file supplied by a user or an automated feed can be taken down; the impact is availability only, with no code execution or data disclosure. No authentication is required, but the file must actually be opened by the target workflow. A 496-byte minimized proof-of-concept (magic header AC1.40) is published in the upstream advisory together with reproduction steps using dwgread; that PoC is a denial-of-service reproducer, not verified exploit code for other impact classes, and no CISA KEV entry exists for this issue.

RemediationAI

Vendor-released patch: upgrade to nightly version 0.14.8413 (https://github.com/LibreDWG/libredwg/releases/tag/0.14.8413); distributions and downstream packagers still carrying <=0.14 can instead backport commit 4e14952c43be5b8feff6e54a61af3425d6ca95a4, which recalculates size from the clamped end and adds a per-iteration no-advance check. Note that the clamping and no-progress changes shipped for issue #1131 do not close this hole, so a build carrying only those earlier fixes remains vulnerable. Where upgrading is not immediately possible, the effective compensating controls are containment and input filtering: run converters and any dwg_read_file() consumer inside a cgroup / RLIMIT_AS memory cap or a disposable container so allocation failure surfaces as DWG_ERR_OUTOFMEM and the job dies alone instead of OOM-killing the host - the trade-off is that the malicious file still fails to process and the worker must be restarted; and reject or quarantine pre-R13 DWG inputs (files whose first bytes are the AC1.x magic, as in the 496-byte PoC) at the ingestion boundary before they reach the decoder, which costs legitimate legacy-file support. Because exploitation requires the victim to open or pipeline a supplied file, treating DWG attachments from untrusted sources as hostile until they have been through a patched decoder is the practical preventive measure; no credentials or privileges are needed by the attacker, so authentication controls alone do not help.

Affected VersionsENISA

libredwg < 0.14.8413

Affected Packages

euvd libredwg fix: 0.14.8413

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

The flaw lives in LibreDWG's pre-R13 DWG decoder, which is fed by two raw, file-controlled header fields, entities_start and entities_end, both of type BITCODE_RL. In decode_preR13 (src/decode_r11.c) the caller computes the loop bound as size = entities_end - entities_start before the call and passes it into decode_preR13_entities (src/decode.c) as a separate argument. The callee clamps the end argument to dat->size when the header value is corrupt (logging 'Corrupt end ... fixed to filesize') but never recomputes size from the clamped end, so the iteration loop continues to test dat->byte < oldpos + size against the original, file-controlled length. Once dat->byte reaches the real end of the buffer, bit_read_RC and bit_read_RS stop advancing and emit 'buffer overflow' errors, and both escape hatches fail: the overflow abort requires dat->byte != end, which is now false because end equals dat->size, and the no-advance guard compares against oldpos saved once before the loop rather than the previous iteration, so it can never fire after the first entity is decoded. Each iteration still performs num++ with dwg->object reallocated in doubling steps plus a memset of the new slot, so resident memory climbs steadily (the advisory's sampling shows roughly 17 MB/s) until allocation fails with DWG_ERR_OUTOFMEM or the process is OOM-killed. The issue is filed as CWE-835 (loop with unreachable exit condition) and is rooted in unchecked quantity validation (CWE-1284) leading to uncontrolled resource consumption (CWE-400/CWE-789). It persists despite the entities_end clamping and no-progress abort added for the earlier issue #1131; commit 4e14952c43be5b8feff6e54a61af3425d6ca95a4 fixes it by recalculating size from the clamped end (or zeroing it) and by saving a per-iteration iter_start to compare against instead of the pre-loop oldpos.

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 (GitHub_M) PRIMARY 5.5 MEDIUM
AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H
vuln.today AI 5.5 MEDIUM

Local tool must parse an attacker-supplied file (AV:L, UI:R); no auth needed (PR:N); deterministic trigger (AC:L); only availability affected via memory exhaustion (A:H, C:N/I:N).

3.1 AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H
4.0 AV:L/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Local
Attack Complexity
Low
Privileges Required
None
User Interaction
Required
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

1
Patch available
Oct 30, 2026 - 22:03 EUVD

DescriptionCVE.org

LibreDWG is a free C library to read and write DWG files. Prior to 0.14.8413, a crafted pre-R13 DWG can make decode_preR13_entities() in src/decode.c enter a nonterminating loop that allocates a new object each iteration. decode_preR13 in src/decode_r11.c computes size from the raw file-controlled entities_start and entities_end header bounds; the callee clamps end to dat->size but never recalculates size. At end of input, bit_read_RC and bit_read_RS stop advancing dat->byte, the overflow guard fails because end equals dat->size, and the no-advance check compares against oldpos saved before the loop instead of the previous iteration. This leaves repeated allocation of dwg->object entries until allocation fails or the process is OOM-killed, not merely a constant-memory CPU hang. The defect remains after the clamping and no-progress changes associated with the earlier issue 1131. Applications and tools calling dwg_read_file() on untrusted files, including dwg2dxf, dwgread and dwg2svg, can suffer denial of service when a user or automated pipeline opens a malformed file; no attacker credentials are required. This issue is fixed in repository nightly version 0.14.8413.

Threat Intelligence Overview

EPSS Score
0.2%
Top 94% exploitable
Prevalence
Low
niche open-source CAD/DWG library, limited enterprise footprint
Data Quality
6 sources
Confidence: High

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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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
None
System Exposure· derived
Small
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

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

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

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