🔍 CVE-2026-62250

5.5
CVSS Score
MEDIUM
2026-10-30
2026-11-02 19:35
✅ 완료

🇰🇷 한글 설명

LibreDWG 0.14.8413 이전 버전에서는 조작된 pre-R13 DWG 파일이 decode_preR13_entities() 함수를 무한 루프에 빠뜨려 매 반복마다 객체를 할당하게 만듭니다. 이로 인해 메모리가 고갈되어 프로세스가 OOM으로 종료되는 서비스 거부(DoS) 상태가 발생할 수 있습니다.

💡 쉬운 설명

악의적으로 만들어진 오래된 도면 파일을 LibreDWG 도구로 열면 프로그램이 멈추지 않고 계속 메모리를 사용합니다. 결국 메모리가 바닥나 프로그램이나 자동화 작업이 강제로 종료될 수 있습니다.

🇺🇸 원문 (English)

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.

📍 영향받는 시스템

LibreDWG 0.14.8413 미만 버전 (dwg2dxf, dwgread, dwg2svg 등 dwg_read_file()을 사용하는 도구)

⚔️ 공격 벡터

사용자나 자동화 파이프라인이 신뢰할 수 없는 조작된 pre-R13 DWG 파일을 열 때 원격 또는 로컬에서 전달된 파일을 통해 공격이 성립하며 별도의 인증 정보는 필요하지 않습니다.

🛡️ 대응 방법

LibreDWG를 0.14.8413 이상 버전으로 업데이트하고, 신뢰할 수 없는 DWG 파일은 격리된 환경에서 처리하거나 메모리 제한을 설정하십시오.

🔧 검증 코드

출력된 버전이 0.14.8413 미만이면 취약하므로 업데이트가 필요하고, 0.14.8413 이상이면 수정된 버전입니다 (dwgread가 없으면 설치되지 않은 상태입니다).

Shell / Script
dwgread --version 2>/dev/null | head -n 1

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H