(Introduction)
A critical heap buffer overflow vulnerability has been discovered in the highly popular LibreDWG v.12.5 library, which could potentially allow remote attackers to highjack systems running the vulnerable software. Identified as CVE-2023-36274, the vulnerability entails a heap buffer overflow via the function bit_write_TF in the bits.c file. In this detailed post, we will not only share the code snippets and exploit details but also provide links to the original references.

(Background)
The LibreDWG library is widely used across the open-source community for reading and writing DWG files, a common file format in the AutoCAD ecosystem. As this library is often embedded in various applications using AutoCAD, the discovery of such a critical vulnerability is a cause for alarm.

(Findings)
A security researcher discovered that the problematic function, bit_write_TF, within the bits.c file, causes a heap buffer overflow. The crux of the problem is that the function does not properly manage memory allocations when writing data to a buffer, potentially allowing a remote attacker to trigger the buffer overflow and execute arbitrary code on the affected system.

(Code Snippet)

The vulnerable piece of code in the bits.c file is as follows

void
bit_write_TF(Bit_Chain* dat, const char* value, int length)
{
  if (length < )
    return;
  if (dat->byte + length > dat->size-1)
    bit_chain_alloc(dat);

  memcpy(&dat->chain[dat->byte], value, length);
  dat->byte += length;
}

The issue resides in the fact that the code is missing a crucial check for buffer length. If the length parameter is negative, the function simply returns without performing any memory-related actions. However, it only allocates new memory if the expected dat->byte + length exceeds the current data size. This behavior could lead to memory corruption and arbitrary code execution.

(In-depth Analysis)
The crux of the problem is that the bit_write_TF function doesn't validate and ensure that the buffer has the appropriate length before writing data to the buffer. With the help of specifically crafted inputs, an attacker could exploit this vulnerability to cause a heap buffer overflow, leading to the execution of arbitrary malicious code.

Specifically, a skilled attacker could manipulate the length parameter and cause the memory allocation process in the bit_chain_alloc function to behave unexpectedly, ultimately overflowing the buffer on the heap. Consequently, this may lead to a buffer overflow, which potentially enables the attacker to execute arbitrary code and compromise the victim's system.

(Suggested Fix)
It is recommended that developers using LibreDWG v.12.5 immediately update to the latest patched version, which contains essential fixes addressing this vulnerability. Furthermore, proper input validation and thorough checks for buffer length in the bit_write_TF function should be implemented, ensuring that memory allocation and data writing operations are handled securely.

(Original References)
For further reading and technical details on this vulnerability, please refer to the following authoritative sources:

- CVE-2023-36274 Official Entry: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-36274
- LibreDWG Official Repository: https://github.com/LibreDWG/libredwg

(Conclusion)
The discovery of heap buffer overflow vulnerability CVE-2023-36274 in a widely-used library such as LibreDWG is concerning, especially considering the large user base that may be affected by this flaw. It underscores the importance of securing and maintaining open-source libraries that are often incorporated into multiple applications. In order to protect their systems, developers must ensure that they apply the latest security patches and follow secure coding practices.

Timeline

Published on: 06/23/2023 15:15:00 UTC
Last modified on: 06/27/2023 12:41:00 UTC