CVE-2026-109275 Overview
CVE-2026-109275 is a code injection vulnerability [CWE-74] in ImageMagick affecting the Magick Vector Graphics (MVG) decoder when a PostScript renderer is invoked. An attacker can supply a crafted MVG file that injects attacker-controlled content into the PostScript rendering path during decoding. The flaw affects ImageMagick versions before 6.9.13-57 and 7.x versions before 7.1.2-32. Because ImageMagick is widely embedded in web services, image processing pipelines, and content management systems, any application that decodes untrusted MVG input is exposed.
Critical Impact
Remote attackers can inject code into the PostScript rendering path by submitting a malicious MVG file to any service that processes untrusted images with ImageMagick.
Affected Products
- ImageMagick versions before 6.9.13-57
- ImageMagick 7.x versions before 7.1.2-32
- Applications and services embedding vulnerable ImageMagick builds with PostScript rendering enabled
Discovery Timeline
- 2026-10-12 - CVE-2026-109275 published to NVD
- 2026-10-15 - Last updated in NVD database
Technical Details for CVE-2026-109275
Vulnerability Analysis
The vulnerability resides in the MVG decoder path within ImageMagick's annotate.c component. When a drawing operation requires text rendering through a PostScript backend, ImageMagick constructs a PostScript program that embeds attributes derived from the input, including the font name. The decoder did not validate that the font name contained only safe characters. An attacker-supplied MVG file can specify a font value that breaks out of its intended string context and injects arbitrary PostScript operators. The resulting PostScript program is then executed by the renderer, giving the attacker influence over the rendering process. Successful exploitation yields limited integrity and availability impact on the processing host, consistent with code execution confined to the PostScript interpreter context.
Root Cause
The root cause is missing input validation of font identifiers passed from MVG content into the PostScript rendering routine RenderPostscript. Any character accepted as a font name was concatenated into the PostScript source, enabling classic injection against the downstream interpreter [CWE-74].
Attack Vector
Exploitation is network-reachable and requires no authentication or user interaction beyond submitting an image. A typical attack path targets web applications that accept user-uploaded images, thumbnail generators, or document conversion services. The attacker uploads a crafted MVG file, and ImageMagick triggers the vulnerable PostScript render path during decoding.
// Patch: input validation added to annotate.c (MagickCore/annotate.c)
static MagickBooleanType IsValidPostscriptFontname(const char *font)
{
const unsigned char
*p;
if ((font == (const char *) NULL) || (*font == '\0'))
return(MagickFalse);
for (p=(const unsigned char *) font; *p != '\0'; p++)
{
if ((isalnum(*p) != 0) || (*p == '-') || (*p == '_') || (*p == '.'))
continue;
return(MagickFalse);
}
return(MagickTrue);
}
static MagickBooleanType RenderPostscript(Image *image,
const DrawInfo *draw_info,const PointInfo *offset,TypeMetric *metrics,
ExceptionInfo *exception)
Source: ImageMagick commit 6cfb8d8. The fix introduces IsValidPostscriptFontname, which rejects any font identifier containing characters outside alphanumerics, hyphen, underscore, and period, preventing injection into the generated PostScript program.
Stop Remote Code Execution Before It Runs
Singularity™ Endpoint detects and blocks exploit attempts at machine speed, including zero-days and novel attack techniques.
Stop Exploit AttemptsDetection Methods for CVE-2026-109275
Indicators of Compromise
- MVG, SVG, or image files containing font attributes with characters outside [A-Za-z0-9._-], including parentheses, slashes, or whitespace.
- Unexpected gs (Ghostscript) or pdf2ps child processes spawned by web application or image conversion workers.
- Outbound network connections or file writes originating from ImageMagick worker processes shortly after image upload events.
Detection Strategies
- Hunt for ImageMagick process trees that invoke a PostScript interpreter when processing user-supplied content, which indicates the vulnerable code path is reachable.
- Inspect intermediate PostScript artifacts under temp directories for operators or tokens that should not appear in generated font declarations.
- Correlate image upload endpoints with subsequent anomalous process launches on the same host within short time windows.
Monitoring Recommendations
- Alert on convert, magick, or identify processes spawning shells, interpreters, or network utilities.
- Record file hashes and MIME type mismatches for all user-submitted images processed by ImageMagick pipelines.
- Baseline the normal set of child processes for your image workers and alert on deviations.
How to Mitigate CVE-2026-109275
Immediate Actions Required
- Upgrade ImageMagick to 6.9.13-57 or 7.1.2-32 or later across all hosts and container images.
- Audit all services that accept user-supplied image content and confirm they load the patched library.
- Restrict the MVG, PS, EPS, and PDF coders in policy.xml until patched builds are deployed.
Patch Information
Fixes are available in ImageMagick 7.1.2-32 and ImageMagick6 6.9.13-57. The remediation adds the IsValidPostscriptFontname validator in annotate.c, enforcing a strict allowlist for font identifiers before PostScript generation. Reference the GitHub Security Advisory GHSA-233r-2p53-wqf5, the ImageMagick 7 commit, the ImageMagick6 commit, and the VulnCheck advisory.
Workarounds
- Disable the MVG coder in /etc/ImageMagick-7/policy.xml to block the vulnerable decode path entirely.
- Disable PostScript-adjacent coders (PS, EPS, PDF, XPS) if your workloads do not require them.
- Run ImageMagick workers in sandboxed, non-privileged containers with no outbound network access.
- Validate uploaded file content and reject MVG inputs where font values contain characters outside [A-Za-z0-9._-].
# Configuration example: /etc/ImageMagick-7/policy.xml
<policymap>
<policy domain="coder" rights="none" pattern="MVG" />
<policy domain="coder" rights="none" pattern="PS" />
<policy domain="coder" rights="none" pattern="EPS" />
<policy domain="coder" rights="none" pattern="PDF" />
<policy domain="coder" rights="none" pattern="XPS" />
<policy domain="delegate" rights="none" pattern="gs" />
</policymap>
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

