Skip to main content

Boteraser | Website and Server Security Solutions

🛡️ JLSEC-2026-924 — imagemagick-jll (CVE-2025-55298)

⚪ Unknown ✅ No Known Exploit OSV
N/A
CVSS Score
0 Low4 Medium7 High9 Critical10

Description

ImageMagick has a Format String Bug in InterpretImageFilename leads to arbitrary code execution

Summary

A format string bug vulnerability exists in InterpretImageFilename function where user input is directly passed to FormatLocaleString without proper sanitization. An attacker can overwrite arbitrary memory regions, enabling a wide range of attacks from heap overflow to remote code execution.

<br>

Details

root cause

```

MagickExport size_t InterpretImageFilename(const ImageInfo *image_info,

Image *image,const char *format,int value,char *filename,

ExceptionInfo *exception)

{

...

while ((cursor=strchr(cursor,'%')) != (const char *) NULL)

{

const char

*q = cursor;

ssize_t

offset = (ssize_t) (cursor-format);

cursor++; /* move past '%' */

if (*cursor == '%')

{

/*

Escaped %%.

*/

cursor++;

continue;

}

/*

Skip padding digits like %03d.

*/

if (isdigit((int) ((unsigned char) *cursor)) != 0)

(void) strtol(cursor,(char **) &cursor,10);

switch (*cursor)

{

case 'd':

case 'o':

case 'x':

{

ssize_t

count;

count=FormatLocaleString(pattern,sizeof(pattern),q,value);

if ((count <= 0) || (count >= MagickPathExtent) ||

((offset+count) >= MagickPathExtent))

return(0);

(void) CopyMagickString(p+offset,pattern,(size_t) (MagickPathExtent-

offset));

cursor++;

break;

}

```

When the InterpretImageFilename function processes a filename beginning with format specifiers such as %d, %o, or %x, the filename string is directly passed as a parameter to the FormatLocaleString function.

<br>

```

MagickExport ssize_t FormatLocaleString(char *magick_restrict string,

const size_t length,const char *magick_restrict format,...)

{

ssize_t

n;

va_list

operands;

va_start(operands,format);

n=FormatLocaleStringList(string,length,format,operands);

va_end(operands);

return(n);

}

```

```

MagickPrivate ssize_t FormatLocaleStringList(char *magick_restrict string,

const size_t length,const char *magick_restrict format,va_list operands)

{

...

n=(ssize_t) _vsnprintf_l(string,length,format,locale,operands);

```

Inside FormatLocaleString, the variable argument list is initialized through va_start, after which the format string processing occurs by interpreting the format specifiers and using corresponding values from CPU registers and the call stack as arguments for the formatting operations.

<br>

PoC

1. Heap overflow read tested on development container

```

root@9184bf32bd0f:/workspaces/ImageMagick# mogrify %o%n

=================================================================

==55653==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x603000000001 at pc 0x5bdccaae689e bp 0x7fff6882c410 sp 0x7fff6882c408

READ of size 8 at 0x603000000001 thread T0

#0 0x5bdccaae689d in SplaySplayTree splay-tree.c

#1 0x5bdccaae865e in GetValueFromSplayTree (/ImageMagick/bin/magick+0x59165e) (BuildId: 2e7da788e419b6541dccde47c7b6e784063d1171)

#2 0x5bdccaa8e47b in GetImageOption (/ImageMagick/bin/magick+0x53747b) (BuildId: 2e7da788e419b6541dccde47c7b6e784063d1171)

#3 0x5bdccaa63c39 in SyncImageSettings (/ImageMagick/bin/magick+0x50cc39) (BuildId: 2e7da788e419b6541dccde47c7b6e784063d1171)

#4 0x5bdccaa63036 in AcquireImage (/ImageMagick/bin/magick+0x50c036) (BuildId: 2e7da788e419b6541dccde47c7b6e784063d1171)

#5 0x5bdccaa70cc4 in SetImageInfo (/ImageMagick/bin/magick+0x519cc4) (BuildId: 2e7da788e419b6541dccde47c7b6e784063d1171)

#6 0x5bdccae42e13 in ReadImages (/ImageMagick/bin/magick+0x8ebe13) (BuildId: 2e7da788e419b6541dccde47c7b6e784063d1171)

#7 0x5bdccb11ee08 in MogrifyImageCommand (/ImageMagick/bin/magick+0xbc7e08) (BuildId: 2e7da788e419b6541dccde47c7b6e784063d1171)

#8 0x5bdccb103ca9 in MagickCommandGenesis (/ImageMagick/bin/magick+0xbacca9) (BuildId: 2e7da788e419b6541dccde47c7b6e784063d1171)

#9 0x5bdccaa5f939 in main (/ImageMagick/bin/magick+0x508939) (BuildId: 2e7da788e419b6541dccde47c7b6e784063d1171)

#10 0x73b2102b2d8f (/lib/x86_64-linux-gnu/libc.so.6+0x29d8f) (BuildId: d5197096f709801829b118af1b7cf6631efa2dcd)

#11 0x73b2102b2e3f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e3f) (BuildId: d5197096f709801829b118af1b7cf6631efa2dcd)

#12 0x5bdcca99f404 in _start (/ImageMagick/bin/magick+0x448404) (BuildId: 2e7da788e419b6541dccde47c7b6e784063d1171)

0x603000000001 is located 15 bytes to the left of 24-byte region [0x603000000010,0x603000000028)

allocated by thread T0 here:

#0 0x5bdccaa2224e in malloc (/ImageMagick/bin/magick+0x4cb24e) (BuildId: 2e7da788e419b6541dccde47c7b6e784063d1171)

#1 0x73b21031915a (/lib/x86_64-linux-gnu/libc.so.6+0x9015a) (BuildId: d5197096f709801829b118af1b7cf6631efa2dcd)

SUMMARY: AddressSanitizer: heap-buffer-overflow splay-tree.c in SplaySplayTree

Shadow bytes around the buggy

How this vulnerability can be exploited

This issue can be reached over the network, attack complexity is low, an attacker needs low-level privileges on the target. No user interaction is required. The scope is unchanged, so the impact stays within the vulnerable component. Rated impact: confidentiality high, integrity high, availability high.

CVSS metrics in full

The score comes from this vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

  • Attack vector: Network — reachable from anywhere that can route to the service.
  • Attack complexity: Low — the attack works reliably, with no preparation.
  • Privileges required: Low — an ordinary user account is enough.
  • User interaction: None — nobody has to be tricked into anything.
  • Scope: Unchanged — the damage stays inside the vulnerable component.
  • Confidentiality impact: High — total loss, or loss the attacker controls.
  • Integrity impact: High — total loss, or loss the attacker controls.
  • Availability impact: High — total loss, or loss the attacker controls.

Affected software

JLSEC-2026-924 is recorded against 1 package.

  • imagemagick-jll

Timeline and source

Published on 30 July 2026. No public exploit is currently recorded for this entry. Record sourced from OSV.

References

github.com (Web)
github.com (Web)
github.com (Web)
github.com (Web)
lists.debian.org (Web)
nvd.nist.gov (Web)

Other advisories for this package

imagemagick-jll has other advisories on record. If you are patching this one, these are worth checking on the same host:

Details

Severity Unknown
CVSS Score N/A
CVSS Vector CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CWE N/A
Public Exploit ✅ No
Source OSV
Published 2026-07-30
Updated 2026-08-20
Modified 2026-07-30
Fix URL N/A

Affected Packages

Software From version Fixed in
imagemagick-jll — —

Similar Threats

Free Vulnerability Check

Is your site affected by JLSEC-2026-924?

BotEraser helps you identify potentially vulnerable plugins and themes by checking your installation against JLSEC-2026-924 and other known CVE records.

Scan My Site Free →

No credit card required  ·  Results in minutes

ⓘ Data Notice: The information presented above has been compiled from publicly available internet sources. Boteraser aggregates this data solely for informational purposes and does not independently classify, evaluate, or endorse any findings about the vulnerabilities listed. The accuracy and completeness of this information is the sole responsibility of the original publishers. Boteraser and its operators accept no liability for any decisions made based on this data.

Browse related advisories

All advisoriesJlsecJlsec 2026
✓