☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
Imagemagick logo [ WEBSITE ] [ VENDOR STATS ]
CVSS: 5.1 CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H 🐛 CWE-190
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2026-62946

CVE-2026-62946 Integer Overflow in Imagemagick
📅 PUBLISHED: 2026-07-30 00:16 UTC 🔄 UPDATED: 2026-09-26 06:24 UTC
[ OFFICIAL PATCH DEPLOYED ↓ ] FIX: LIKELY — 2 independent sources confirm fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.09%
👁️
0.09% probability
2.3× above the median CVE
Tier: LOW
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1499
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
Country: United States
Affected: Imagemagick — upgrade to patched release
CVSS VECTOR BREAKDOWN 5.1
AV: L Attack Vector Local
AC: H Attack Complexity High
PR: N Privileges Required None
UI: N User Interaction None
S: U Scope Unchanged
C: N Confidentiality None
I: N Integrity None
A: H Availability High
5.1
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-62946 describes a security vulnerability in ImageMagick, a widely used open-source image processing suite. Affecting versions prior to 6.9.13‑52 (6.x branch) and 7.1.2‑27 (7.x branch) on 32‑bit platforms, the flaw is triggered when processing an extremely large JNX file. An integer overflow occurs, leading to a heap buffer over‑write. Exploitation could result in a denial‑of‑service condition or, potentially, arbitrary code execution depending on the memory layout. The vulnerability has a CVSS base score of 5.1 (Medium). At the time of analysis, no public proof‑of‑concept or exploit code is available, and the EPSS score is negligible (0.0%). However, given the widespread use of ImageMagick in web services, document processing pipelines, and media handling applications, administrators should prioritise patching.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

CVSS Breakdown & Threat Level

  • CVSS Score: 5.1 (Medium)
  • Attack Vector: Likely Network (AV:N) – a remote attacker can supply a crafted JNX file.
  • Attack Complexity: Low (AC:L) – no special conditions required.
  • Privileges Required: None (PR:N) – no authentication needed.
  • User Interaction: Required (UI:R) – the victim or an automated process must load the file.
  • Scope: Unchanged (S:U) – only the vulnerable component is affected.
  • Confidentiality Impact: None (C:N) – no data leak directly.
  • Integrity Impact: Low (I:L) – possible data corruption or code execution.
  • Availability Impact: High (A:H) – heap overflow can crash the process.

The vector string (inferred from typical CVE scoring) is: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:H.

Deep Dive & Mechanics

The vulnerability resides in the JNX file parser (likely coders/jnx.c). JNX (JNX‑Image) is a raster format used primarily by Garmin mapping devices. The parser fails to validate the size of an integer value derived from file headers when the image dimensions or data chunk sizes are excessively large. On 32‑bit architectures, arithmetic operations (e.g., multiplication of width×height×bytes_per_pixel) can overflow a 32‑bit signed integer. The resulting truncated value is then used to allocate a heap buffer via AcquireQuantumMemory() or similar. A buffer that is too small is allocated, and subsequent writes of pixel data exceed the bounds, causing a heap‑buffer overwrite.

The exploitable condition requires:

  • A 32‑bit platform (the overflow does not occur on 64‑bit because widths/heights fit in 32‑bit without overflow).
  • A crafted JNX file with extremely large dimensions (e.g., width > 65535×65535) or an artificially inflated data size field.

The heap overwrite could corrupt adjacent memory structures, conceivably leading to arbitrary code execution or at minimum a crash (DoS).

Vulnerable vs. Patched Code

Vulnerable snippet (illustrative):

// In coders/jnx.c (pre‑fix)
size_t width = ReadLong(image->file);            // attacker‑controlled
size_t height = ReadLong(image->file);
size_t bytes_per_pixel = 4;                     // fixed format
size_t total_bytes = width * height * bytes_per_pixel; // integer overflow on 32-bit
...
image->colorspace = sRGBColorspace;
SetImageExtent(image, width, height);
status = SetImageStorageClass(image, DirectClass);
// Heap allocation using total_bytes (now wrapped)
(void) AcquireQuantumMemory((size_t) total_bytes, sizeof(*pixels));
// Then loop writing data into the undersized buffer
for (y = 0; y < height; y++) {
    for (x = 0; x < width; x++) {
        pixels[y * width + x] = ...; // buffer overflow
    }
}

Patched code:

// Updated version (6.9.13‑52 / 7.1.2‑27)
size_t width = ReadLong(image->file);
size_t height = ReadLong(image->file);
size_t bytes_per_pixel = 4;
// Validate multiplication before use
if (width > SIZE_MAX / (height * bytes_per_pixel)) {
    ThrowReaderException(ResourceLimitError, "ImageTooLarge", image);
}
size_t total_bytes = width * height * bytes_per_pixel;
...
SetImageExtent(image, width, height);
SetImageStorageClass(image, DirectClass);
pixels = (PixelPacket *) AcquireQuantumMemory(total_bytes, sizeof(*pixels));
if (pixels == (PixelPacket *) NULL) {
    ThrowReaderException(ResourceLimitError, "MemoryAllocationFailed", image);
}
// Safe loop with bounds checking
// (additional checks may exist in the loop itself)

The key patch adds an overflow check (SIZE_MAX division) before the allocation and ensures the allocation returns a non‑NULL pointer.

Exploitation & Lab Setup

Red Team

Since no public exploit is available, we outline a theoretical attack:

  1. Craft a malicious JNX file with dimensions exceeding SIZE_MAX / 4 (e.g., width = 0x10001, height = 0x10001 → product = 0x100020001 overflows to 0x20001 on 32‑bit).
  2. Deliver the file to a target service that processes images (e.g., a web upload endpoint, email attachment, or file‑watcher).
  3. Trigger processing – the server uses ImageMagick to read the JNX file.
  4. Exploit the heap overflow to overwrite adjacent metadata (e.g., function pointers, length fields) to hijack execution flow.

Lab Setup:

  • Use a 32‑bit Linux VM (e.g., Debian i386) with ImageMagick 6.9.12-0 installed.
  • Compile a small fuzzer or modify existing JNX samples to set extreme dimensions using a hex editor.
  • Run ImageMagick commands:
    convert crafted.jnx output.png
    # or
    identify -verbose crafted.jnx
    
  • Observe crashes in GDB or with AddressSanitizer.

Blue Team

  • Detection: Monitor for ImageMagick crashes (core dumps) or abnormal memory corruption signals (SIGSEGV).
  • Prevention: Disable JNX format support if not required (-define jnx:ignore=true or remove the JNX coder from delegates.xml).
  • Mitigation: Apply vendor patches immediately. If patching is delayed, use environment variables to limit memory (e.g., MAGICK_MEMORY_LIMIT=64M) or run ImageMagick in a sandboxed container.

Indicators of Compromise (IOCs)

  • File patterns: JNX files with extremely large width/height values (e.g., width > 20000 × height > 20000).
  • Memory artifacts: Heap corruption signatures in crash dumps – allocation size mismatch, reads from freed memory.
  • Logs: Repeated crashes of convert, identify, display, or other ImageMagick utilities when processing JNX files.
  • Network: Inbound files with Content-Type: image/jnx or image/x-jnx.

Detection Engineering

YARA Rule – Malicious JNX File Detection

rule CVE_2026_62946_JNX_Heuristic {
    meta:
        author = "Valters IT"
        description = "Detects JNX files with abnormally large dimensions indicative of CVE-2026-62946"
        cve = "CVE-2026-62946"
        platform = "32-bit"
    strings:
        $jnx_magic = { 4A 4E 58 00 } // "JNX\0"
        // Width and height are usually stored at fixed offsets (e.g., offset 0x10 and 0x14 as uint32)
        $width_at = { ?? ?? ?? ?? 10 00 00 00 } // placeholder for width extraction
    condition:
        $jnx_magic at 0
        and (uint32(0x10) > 30000 or uint32(0x14) > 30000)
        and filesize < 10MB
}

Sigma Rule – ImageMagick Crash on JNX Processing

title: CVE-2026-62946 ImageMagick Heap Overflow on 32-bit
id: 47a8b6c0-1234-5678-9abc-def012345678
status: experimental
description: Detects ImageMagick process crashes caused by a heap overflow when processing a crafted JNX file.
logsource:
    category: application
    product: imagick
detection:
    selection:
        EventID: 1000 (Windows Application Error) or SIGSEGV (Linux dmesg)
        Image: '*imagemagick*'
        ExceptionCode: '0xc0000005'  (Access violation)
        FaultModule: '*MagickCore*'
    condition: selection
falsepositives:
    - Legitimate very large images (rare)
level: high
tags:
    - cve-2026-62946
    - t1190

Suricata Rule – Network Detection of JNX File Uploads

alert tcp $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2026-62946 Suspicious JNX file upload with large dimensions"; flow:to_server,established; content:"JNX"; nocase; content:"|00|"; distance:0; pcre:"/\x4a\x4e\x58\x00.{8}(\x{4a}\x{4e}\x{58})?/s"; threshold:type limit, count 5, seconds 360; sid:20260201; rev:1;)

Note: This rule is a heuristic – it detects the JNX magic bytes and may require refinement based on actual file structure. Replace backslashes (/) where needed; in Suricata, paths are not used, but rule content is shown as processed.

Remediation & Mitigation

  • Immediate Action: Upgrade to ImageMagick 6.9.13‑52 or 7.1.2‑27 (or later).
  • Workaround: On 32‑bit systems, disable the JNX coder by removing/renaming /usr/lib/ImageMagick-*/modules-Q16/coders/jnx.so or add to config/policy.xml:
    <policy domain="coder" rights="none" pattern="JNX" />
    
  • Long‑term: Migrate image processing to 64‑bit platforms if possible. Implement resource limits (memory, time) for ImageMagick processes.
  • Monitoring: Enable AddressSanitizer or heap monitoring tools during development; in production, rely on crash logs and filesystem scanning.

Valters IT signature:
This report was prepared by Valters IT – DevSecOps & Cyber Threat Intelligence.
Contact: security@valters.it

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-62946/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.