Public mode

No access to your tenant or devices. Every item links to its source. What this means

Sources need attention Customize Public modeDiscuss ChangeIntel on Discord

ImageMagick's MSL: Stack overflow via infinite recursion in ProcessMSLScript

Exploitation and risk

Source status

CISA KEV lists vulnerabilities known to be exploited. FIRST EPSS estimates the likelihood of exploitation in the next 30 days. An unavailable score does not mean zero risk.

Which CVEs have scores here?

This view includes predictions for CVE identifiers explicitly listed in public NuGet advisories. Microsoft release pages have their own prediction coverage. Check source status for the scope and latest checks.

CVE-2026-23874

No CISA KEV listing is included in this saved record. Exploitation may still have occurred.

FIRST EPSS: 0.19 % · percentile 8.45 % · scored 14 Nov 2026.

Saved 14 Nov 2026 16:37:01 UTC · View this risk record (JSON)

cve-program · CVE-2026-23874

Published

ImageMagick is free and open-source software used for editing and manipulating digital images. Versions prior to 7.1.2-13 have a stack overflow via infinite recursion in MSL (Magick Scripting Language) `<write>` command when writing to MSL format. Version 7.1.2-13 fixes the issue.

Source published
20 Jan 2026 00:52:52 UTC
Source modified
20 Jan 2026 21:43:48 UTC
Saved here
23 Oct 2026 15:48:27 UTC
Source terms
CVE Program Terms of Use

Original source record · Cite this exact observation · Complete original publisher JSON

Source: cve-program · CVE Program Terms of Use. The publisher's wording is preserved. ChangeIntel groups the information and labels changes. The JSON record includes additional source fields.

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

euvd · EUVD-2026-3588

Published

ImageMagick is free and open-source software used for editing and manipulating digital images. Versions prior to 7.1.2-13 have a stack overflow via infinite recursion in MSL (Magick Scripting Language) `<write>` command when writing to MSL format. Version 7.1.2-13 fixes the issue.

Additional publisher context

EUVD source date text has no stated timezone and is retained without inventing a UTC instant. Related bulletin membership is not an alias, common cause or applicability claim. A missing vector with a zero score is treated as unrated. Complete vendor/product and underlying source evidence remains in the original JSON.

Original publisher date fields

datePublished: Jan 20, 2026, 12:52:52 AM

dateUpdated: Jan 20, 2026, 9:43:48 PM

7 related source bulletins · separate from aliases

openSUSE-SU-2026:10119-1: ImageMagick-7.1.2.13-2.1 on GA media

CVE-2026-22770 · CVE-2026-23874 · CVE-2026-23876 · CVE-2026-23952

openSUSE-SU-2026:20337-1: Security update for ImageMagick

CVE-2026-22770 · CVE-2026-23874 · CVE-2026-23876 · CVE-2026-23952 · CVE-2026-24481 · CVE-2026-24484 · CVE-2026-24485 · CVE-2026-25576 · CVE-2026-25637 · CVE-2026-25638 · CVE-2026-25794 · CVE-2026-25795 · CVE-2026-25796 · CVE-2026-25797 · CVE-2026-25798 · CVE-2026-25799 · CVE-2026-25897 · CVE-2026-25898 · CVE-2026-25965 · CVE-2026-25966 · CVE-2026-25967 · CVE-2026-25968 · CVE-2026-25969 · CVE-2026-25970 · CVE-2026-25971 · CVE-2026-25982 · CVE-2026-25983 · CVE-2026-25985 · CVE-2026-25986 · CVE-2026-25987 · CVE-2026-25988 · CVE-2026-25989 · CVE-2026-26066 · CVE-2026-26283 · CVE-2026-26284 · CVE-2026-26983 · CVE-2026-27798 · CVE-2026-27799

SUSE-SU-2026:0503-1: Security update for ImageMagick

CVE-2026-23874 · CVE-2026-23876 · CVE-2026-23952

SUSE-SU-2026:0384-1: Security update for ImageMagick

CVE-2026-23874 · CVE-2026-23876 · CVE-2026-23952

SUSE-SU-2026:0437-1: Security update for ImageMagick

CVE-2026-22770 · CVE-2026-23874 · CVE-2026-23876 · CVE-2026-23952

SUSE-SU-2026:0438-1: Security update for ImageMagick

CVE-2026-22770 · CVE-2026-23874 · CVE-2026-23876 · CVE-2026-23952

WID-SEC-W-2026-0148: ImageMagick: Mehrere Schwachstellen

CVE-2026-22770 · CVE-2026-23874 · CVE-2026-23876 · CVE-2026-23952

Source published
Jan 20, 2026, 12:52:52 AM (timezone not stated)
Source modified
Jan 20, 2026, 9:43:48 PM (timezone not stated)
Saved here
13 Nov 2026 15:58:58 UTC
Source terms
ENISA EUVD · source terms and attribution apply

Original source record · Cite this exact observation · Complete original publisher JSON

Source: euvd · ENISA EUVD · source terms and attribution apply. The publisher's wording is preserved. ChangeIntel groups the information and labels changes. The JSON record includes additional source fields.

EUVD CVSS 3.1 · 5.5 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H

nvd · CVE-2026-23874

Published

ImageMagick is free and open-source software used for editing and manipulating digital images. Versions prior to 7.1.2-13 have a stack overflow via infinite recursion in MSL (Magick Scripting Language) `<write>` command when writing to MSL format. Version 7.1.2-13 fixes the issue.

Additional publisher context

NVD analysis and CPE criteria are source context, not proof that a package or your environment is affected. Complete affected data, logical configurations and SSVC are retained in the original JSON.

Source analysis status: Analyzed

Weakness classifications: CWE-835

Original publisher date fields

published: 2026-01-20T01:15:57.300

lastModified: 2026-06-17T10:22:14.233

1 source CPE criteria · context only
  • cpe:2.3:a:imagemagick:imagemagick:*:*:*:*:*:*:*:*

The original JSON retains the logical configuration operators, exclusions and version bounds.

Source published
20 Jan 2026 01:15:57 UTC
Source modified
17 Jun 2026 10:22:14 UTC
Saved here
25 Oct 2026 05:17:36 UTC
Source terms
NIST NVD usage terms; underlying source attribution retained

Original source record · Cite this exact observation · Complete original publisher JSON

Source: nvd · NIST NVD usage terms; underlying source attribution retained. The publisher's wording is preserved. ChangeIntel groups the information and labels changes. The JSON record includes additional source fields.

CVSS 3.1 · [email protected] · Secondary · 5.5 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H

osv · GHSA-9vj4-wc7r-p844

Published

## Summary Stack overflow via infinite recursion in MSL (Magick Scripting Language) `<write>` command when writing to MSL format. ## Version - ImageMagick 7.x (tested on current main branch) - Commit: HEAD - Requires: libxml2 support (for MSL parsing) ## Steps to Reproduce ### Method 1: Using ImageMagick directly ```bash magick MSL:recursive.msl out.png ``` ### Method 2: Using OSS-Fuzz reproduce ```bash python3 infra/helper.py build_fuzzers imagemagick python3 infra/helper.py reproduce imagemagick msl_fuzzer recursive.msl ``` Or run the fuzzer directly: ```bash ./msl_fuzzer recursive.msl ``` ## Expected Behavior ImageMagick should handle recursive MSL references gracefully by detecting the loop and returning an error. ## Actual Behavior Stack overflow causes process crash: ``` AddressSanitizer:DEADLYSIGNAL ==PID==ERROR: AddressSanitizer: stack-overflow #0 MSLStartElement /src/imagemagick/coders/msl.c:7045 #1 xmlParseStartTag /src/libxml2/parser.c #2 xmlParseChunk /src/libxml2/parser.c:11273 #3 ProcessMSLScript /src/imagemagick/coders/msl.c:7405 #4 WriteMSLImage /src/imagemagick/coders/msl.c:7867 #5 WriteImage /src/imagemagick/MagickCore/constitute.c:1346 #6 MSLStartElement /src/imagemagick/coders/msl.c:7045 ... (infinite recursion, 287+ frames) ``` ## Root Cause Analysis In `coders/msl.c`, the `<write>` command handler in `MSLStartElement()` (line ~7045) calls `WriteImage()`. When the output filename specifies MSL format (`msl:filename`), `WriteMSLImage()` is called, which parses the MSL file again via `ProcessMSLScript()`. If the MSL file references itself (directly or indirectly), this creates an infinite recursion loop: ``` MSLStartElement() → WriteImage() → WriteMSLImage() → ProcessMSLScript() → xmlParseChunk() → MSLStartElement() → ... (infinite loop) ``` ## Impact - **DoS**: Guaranteed crash via stack exhaustion - **Affected**: Any application using ImageMagick to process user-supplied MSL files ## Additional Trigger Paths The `<read>` command can also trigger recursion: Indirect recursion is also possible (a.msl → b.msl → a.msl). ## Fuzzer This issue was discovered using a custom MSL fuzzer: ```cpp #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

Source published
21 Jan 2026 01:05:23 UTC
Source modified
10 Sep 2026 03:50:36 UTC
Saved here
23 Oct 2026 16:01:25 UTC
Source terms
GitHub Advisory Database · CC-BY-4.0

Original source record · Cite this exact observation · Complete original publisher JSON

Source: osv · GitHub Advisory Database · CC-BY-4.0. The publisher's wording is preserved. ChangeIntel groups the information and labels changes. The JSON record includes additional source fields.

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

Publisher rating · MODERATE

ChangeIntel

An IT change radar: releases, security, known issues, retirements, documentation changes, and service status from public sources. Every item links to supporting evidence; dates and statuses can change after they are read.

Sources read 15 Nov 11:08 UTC · 256 of 275 readable · 252 fully read · documentation 469/469 current