Описание
ImageMagick MSL: Stack overflow via infinite recursion in ProcessMSLScript
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
Method 2: Using OSS-Fuzz reproduce
Or run the fuzzer directly:
Expected Behavior
ImageMagick should handle recursive MSL references gracefully by detecting the loop and returning an error.
Actual Behavior
Stack overflow causes process crash:
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:
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:
This issue was found by Team FuzzingBrain @ Texas A&M University
Пакеты
Magick.NET-Q8-x64
< 14.10.2
14.10.2
Magick.NET-Q8-arm64
< 14.10.2
14.10.2
Magick.NET-Q8-x86
< 14.10.2
14.10.2
Magick.NET-Q8-OpenMP-x64
< 14.10.2
14.10.2
Magick.NET-Q8-OpenMP-arm64
< 14.10.2
14.10.2
Magick.NET-Q16-x64
< 14.10.2
14.10.2
Magick.NET-Q16-arm64
< 14.10.2
14.10.2
Magick.NET-Q16-x86
< 14.10.2
14.10.2
Magick.NET-Q16-OpenMP-x64
< 14.10.2
14.10.2
Magick.NET-Q16-OpenMP-arm64
< 14.10.2
14.10.2
Magick.NET-Q16-HDRI-x64
< 14.10.2
14.10.2
Magick.NET-Q16-HDRI-arm64
< 14.10.2
14.10.2
Magick.NET-Q16-HDRI-x86
< 14.10.2
14.10.2
Magick.NET-Q16-HDRI-OpenMP-x64
< 14.10.2
14.10.2
Magick.NET-Q16-HDRI-OpenMP-arm64
< 14.10.2
14.10.2
Magick.NET-Q8-AnyCPU
< 14.10.2
14.10.2
Magick.NET-Q16-AnyCPU
< 14.10.2
14.10.2
Magick.NET-Q16-HDRI-AnyCPU
< 14.10.2
14.10.2
Связанные уязвимости
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.
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.
ImageMagick is free and open-source software used for editing and mani ...
Уязвимость команды MSL (Magick Scripting Language) <write> консольного графического редактора ImageMagick, позволяющая нарушителю вызвать отказ в обслуживании