ImageMagick has a NULL pointer dereference in MSL parser via <comment> tag before image load
Summary
NULL pointer dereference in MSL (Magick Scripting Language) parser when processing <comment> tag before any image is loaded.
Version
- ImageMagick 7.x (tested on current main branch)
- Commit: HEAD
Steps to Reproduce
Method 1: Using ImageMagick directly
magick MSL:poc.msl out.png
Method 2: Using OSS-Fuzz reproduce
python3 infra/helper.py build_fuzzers imagemagick
python3 infra/helper.py reproduce imagemagick msl_fuzzer poc.msl
Or run the fuzzer directly:
./msl_fuzzer poc.msl
Expected Behavior
ImageMagick should handle the malformed MSL gracefully and return an error message.
Actual Behavior
convert: MagickCore/property.c:297: MagickBooleanType DeleteImageProperty(Image *, const char *): Assertion `image != (Image *) NULL' failed.
Aborted
Root Cause Analysis
In coders/msl.c:7091, MSLEndElement() calls DeleteImageProperty() on msl_info->image[n] when handling the </comment> end tag without checking if the image is NULL:
if (LocaleCompare((const char *) tag,"comment") == 0 )
{
(void) DeleteImageProperty(msl_info->image[n],"comment"); // No NULL check
...
}
When <comment> appears before any <read> operation, msl_info->image[n] is NULL, causing the assertion failure in DeleteImageProperty() at property.c:297.
Impact
- DoS: Crash via assertion failure (debug builds) or NULL pointer dereference (release builds)
- Affected: Any application using ImageMagick to process user-supplied MSL files
Fuzzer
This issue was discovered using a custom MSL fuzzer:
#include <cstdint>
#include <Magick++/Blob.h>
#include <Magick++/Image.h>
#include "utils.cc"
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size)
{
if (IsInvalidSize(Size))
return(0);
try
{
const Magick::Blob blob(Data, Size);
Magick::Image image;
image.magick("MSL");
image.fileName("MSL:");
image.read(blob);
}
catch (Magick::Exception)
{
}
return(0);
}
This issue was found by Team FuzzingBrain @ Texas A&M University
Affected software
Click a technology to see all vulnerabilities affecting it.
| Platform | Package | Vulnerable versions | Fixed in |
|---|---|---|---|
| .NET (NuGet) | Magick.NET-Q16-AnyCPU | < 14.10.2 | 14.10.2 |
| .NET (NuGet) | Magick.NET-Q16-arm64 | < 14.10.2 | 14.10.2 |
| .NET (NuGet) | Magick.NET-Q16-HDRI-AnyCPU | < 14.10.2 | 14.10.2 |
| .NET (NuGet) | Magick.NET-Q16-HDRI-arm64 | < 14.10.2 | 14.10.2 |
| .NET (NuGet) | Magick.NET-Q16-HDRI-OpenMP-arm64 | < 14.10.2 | 14.10.2 |
| .NET (NuGet) | Magick.NET-Q16-HDRI-OpenMP-x64 | < 14.10.2 | 14.10.2 |
| .NET (NuGet) | Magick.NET-Q16-HDRI-x64 | < 14.10.2 | 14.10.2 |
| .NET (NuGet) | Magick.NET-Q16-HDRI-x86 | < 14.10.2 | 14.10.2 |
| .NET (NuGet) | Magick.NET-Q16-OpenMP-arm64 | < 14.10.2 | 14.10.2 |
| .NET (NuGet) | Magick.NET-Q16-OpenMP-x64 | < 14.10.2 | 14.10.2 |
| .NET (NuGet) | Magick.NET-Q16-OpenMP-x86 | < 14.10.2 | 14.10.2 |
| .NET (NuGet) | Magick.NET-Q16-x64 | < 14.10.2 | 14.10.2 |
| .NET (NuGet) | Magick.NET-Q16-x86 | < 14.10.2 | 14.10.2 |
| .NET (NuGet) | Magick.NET-Q8-AnyCPU | < 14.10.2 | 14.10.2 |
| .NET (NuGet) | Magick.NET-Q8-arm64 | < 14.10.2 | 14.10.2 |
| .NET (NuGet) | Magick.NET-Q8-OpenMP-arm64 | < 14.10.2 | 14.10.2 |
| .NET (NuGet) | Magick.NET-Q8-OpenMP-x64 | < 14.10.2 | 14.10.2 |
| .NET (NuGet) | Magick.NET-Q8-x64 | < 14.10.2 | 14.10.2 |
| .NET (NuGet) | Magick.NET-Q8-x86 | < 14.10.2 | 14.10.2 |
References
- CVSS vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H- Weakness (CWE)
CWE-476- Platform
- .NET (NuGet)
- Package
Magick.NET-Q16-AnyCPU, Magick.NET-Q16-arm64, Magick.NET-Q16-HDRI-AnyCPU- Disclosed
- 21.01.2026
- Updated
- 11.10.2026 11:23
Sources and licenses
OSV / GitHub Advisory Database - GHSA-5vx3-wx4q-6cj8 - CC BY 4.0
Vulnerability history: Magick.NET-Q16-HDRI-AnyCPU
All published vulnerabilities of this package (.NET (NuGet)), newest first. Shows whether this is a one-off slip or a package that needs watching.
- Total entries
- 165
- First → latest
- 09.2023 09.2026
- Without a fix
- 0
- Exploited in attacks
- 1
Severity breakdown
- High 27
- Medium 99
- Low 39
Disclosures per year
- 2023: 1
- 2024: 0
- 2025: 15
- 2026: 149
-
ImageMagick has a NULL pointer dereference in MSL parser via <comment> tag before image load this entry
Know which vulnerabilities affect your application
With the DockRay integration and software inventory enabled, DockRay checks reported component versions against known vulnerabilities and notifies you about confirmed matches. Coverage depends on the supported technology and available advisory data.