Описание
Withdrawn Advisory: ImageMagick has a use-after-free/double-free risk in Options::fontFamily when clearing family
Withdrawn Advisory
This advisory has been withdrawn because it does not affect the ImageMagick project's NuGet packages.
Original Description
We believe that we have discovered a potential security vulnerability in ImageMagick’s Magick++ layer that manifests when Options::fontFamily is invoked with an empty string.
Vulnerability Details
- Clearing a font family calls
RelinquishMagickMemoryon_drawInfo->font, freeing the font string but leaving_drawInfo->fontpointing to freed memory while_drawInfo->familyis set to that (now-invalid) pointer. Any later cleanup or reuse of_drawInfo->fontre-frees or dereferences dangling memory. DestroyDrawInfoand other setters (Options::font,Image::font) assume_drawInfo->fontremains valid, so destruction or subsequent updates trigger crashes or heap corruption.
- CWE-416 (Use After Free):
_drawInfo->fontis left dangling yet still reachable through the Options object. - CWE-415 (Double Free): DrawInfo teardown frees
_drawInfo->fontagain, provoking allocator aborts.
Affected Versions
- Introduced by commit
6409f34d637a34a1c643632aa849371ec8b3b5a8(“Added fontFamily to the Image class of Magick++”, 2015-08-01, blame line 313). - Present in all releases that include that commit, at least ImageMagick 7.0.1-0 and later (likely late 6.9 builds with Magick++ font family support as well). Older releases without
fontFamilyare unaffected.
Command Line Triggerability
This vulnerability cannot be triggered from the command line interface. The bug is specific to the Magick++ C++ API, specifically the Options::fontFamily() method. The command-line utilities (such as convert, magick, etc.) do not expose this particular code path, as they operate through different internal mechanisms that do not directly call Options::fontFamily() with an empty string in a way that would trigger the use-after-free condition.
Proposed Fix
This frees only the actual family string, leaving _drawInfo->font untouched. Optionally nulling _drawInfo->font when clearing font() itself maintains allocator hygiene.
Ссылки
- https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-q3hc-j9x5-mp9m
- https://nvd.nist.gov/vuln/detail/CVE-2025-65955
- https://github.com/ImageMagick/ImageMagick/commit/6409f34d637a34a1c643632aa849371ec8b3b5a8
- https://github.com/ImageMagick/ImageMagick/commit/6f81eb15f822ad86e8255be75efad6f9762c32f8
Пакеты
Magick.NET-Q16-AnyCPU
<= 14.9.1
Отсутствует
Magick.NET-Q16-HDRI-AnyCPU
<= 14.9.1
Отсутствует
Magick.NET-Q16-HDRI-OpenMP-arm64
<= 14.9.1
Отсутствует
Magick.NET-Q16-HDRI-OpenMP-x64
<= 14.9.1
Отсутствует
Magick.NET-Q16-HDRI-arm64
<= 14.9.1
Отсутствует
Magick.NET-Q16-HDRI-x64
<= 14.9.1
Отсутствует
Magick.NET-Q16-HDRI-x86
<= 14.9.1
Отсутствует
Magick.NET-Q16-OpenMP-arm64
<= 14.9.1
Отсутствует
Magick.NET-Q16-OpenMP-x64
<= 14.9.1
Отсутствует
Magick.NET-Q16-arm64
<= 14.9.1
Отсутствует
Magick.NET-Q16-x64
<= 14.9.1
Отсутствует
Magick.NET-Q16-x86
<= 14.9.1
Отсутствует
Magick.NET-Q8-AnyCPU
<= 14.9.1
Отсутствует
Magick.NET-Q8-OpenMP-arm64
<= 14.9.1
Отсутствует
Magick.NET-Q8-OpenMP-x64
<= 14.9.1
Отсутствует
Magick.NET-Q8-arm64
<= 14.9.1
Отсутствует
Magick.NET-Q8-x64
<= 14.9.1
Отсутствует
Magick.NET-Q8-x86
<= 14.9.1
Отсутствует
Связанные уязвимости
ImageMagick is free and open-source software used for editing and manipulating digital images. Prior to 7.1.2-9 and 6.9.13-34, there is a vulnerability in ImageMagick’s Magick++ layer that manifests when Options::fontFamily is invoked with an empty string. Clearing a font family calls RelinquishMagickMemory on _drawInfo->font, freeing the font string but leaving _drawInfo->font pointing to freed memory while _drawInfo->family is set to that (now-invalid) pointer. Any later cleanup or reuse of _drawInfo->font re-frees or dereferences dangling memory. DestroyDrawInfo and other setters (Options::font, Image::font) assume _drawInfo->font remains valid, so destruction or subsequent updates trigger crashes or heap corruption. This vulnerability is fixed in 7.1.2-9 and 6.9.13-34.
ImageMagick is free and open-source software used for editing and manipulating digital images. Prior to 7.1.2-9 and 6.9.13-34, there is a vulnerability in ImageMagick’s Magick++ layer that manifests when Options::fontFamily is invoked with an empty string. Clearing a font family calls RelinquishMagickMemory on _drawInfo->font, freeing the font string but leaving _drawInfo->font pointing to freed memory while _drawInfo->family is set to that (now-invalid) pointer. Any later cleanup or reuse of _drawInfo->font re-frees or dereferences dangling memory. DestroyDrawInfo and other setters (Options::font, Image::font) assume _drawInfo->font remains valid, so destruction or subsequent updates trigger crashes or heap corruption. This vulnerability is fixed in 7.1.2-9 and 6.9.13-34.
ImageMagick is free and open-source software used for editing and mani ...