Miggo Logo

CVE-2025-53015: ImageMagick has XMP profile write that triggers hang due to unbounded loop

7.5

CVSS Score
3.1

Basic Information

EPSS Score
0.16299%
Published
7/23/2025
Updated
7/23/2025
KEV Status
No
Technology
TechnologyC#

Technical Details

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Package NameEcosystemVulnerable VersionsFirst Patched Version
Magick.NET-Q8-AnyCPUnuget< 14.7.014.7.0
Magick.NET-Q16-AnyCPUnuget< 14.7.014.7.0
Magick.NET-Q16-HDRI-AnyCPUnuget< 14.7.014.7.0
Magick.NET-Q8-x64nuget< 14.7.014.7.0
Magick.NET-Q8-arm64nuget< 14.7.014.7.0
Magick.NET-Q8-x86nuget< 14.7.014.7.0
Magick.NET-Q8-OpenMP-x64nuget< 14.7.014.7.0
Magick.NET-Q8-OpenMP-arm64nuget< 14.7.014.7.0
Magick.NET-Q16-x64nuget< 14.7.014.7.0
Magick.NET-Q16-arm64nuget< 14.7.014.7.0
Magick.NET-Q16-x86nuget< 14.7.014.7.0
Magick.NET-Q16-OpenMP-x64nuget< 14.7.014.7.0
Magick.NET-Q16-OpenMP-arm64nuget< 14.7.014.7.0
Magick.NET-Q16-OpenMP-x86nuget< 14.7.014.7.0
Magick.NET-Q16-HDRI-x64nuget< 14.7.014.7.0
Magick.NET-Q16-HDRI-arm64nuget< 14.7.014.7.0
Magick.NET-Q16-HDRI-x86nuget< 14.7.014.7.0
Magick.NET-Q16-HDRI-OpenMP-x64nuget< 14.7.014.7.0
Magick.NET-Q16-HDRI-OpenMP-arm64nuget< 14.7.014.7.0

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The vulnerability lies in the GetXmpNumeratorAndDenominator function in MagickCore/profile.c. The function is designed to find the numerator and denominator of a floating-point number. However, for certain large input values, the logic within the while loop fails to converge, leading to an infinite loop and a denial-of-service (DoS) condition. The provided stack trace clearly points to this function as the culprit. The two commits, 229fa96a988a21d78318bbca61245a6ed1ee33a0 and 38631605e6ab744548a561797472cf8648bcfe26, directly address this issue by adding boundary checks and special handling for integer values before the loop begins, thus preventing the hang. The first commit adds the initial checks, and the second commit adds a missing return statement to ensure the fix is effective.

Vulnerable functions

Only Mi**o us*rs **n s** t*is s**tion

WAF Protection Rules

WAF Rule

### Summ*ry In*init* lin*s o**ur w**n writin* *urin* * sp**i*i* XMP *il* *onv*rsion *omm*n* ### **t*ils ``` #* **tXmpNum*r*tor*n***nomin*tor (**nomin*tor=<optimiz** out>, num*r*tor=<optimiz** out>, v*lu*=<optimiz** out>) *t M**i*k*or*/pro*il*.*:****

Reasoning

T** vuln*r**ility li*s in t** `**tXmpNum*r*tor*n***nomin*tor` *un*tion in `M**i*k*or*/pro*il*.*`. T** *un*tion is **si*n** to *in* t** num*r*tor *n* **nomin*tor o* * *lo*tin*-point num**r. *ow*v*r, *or **rt*in l*r** input v*lu*s, t** lo*i* wit*in t**