☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]

CVE-2024-28562

CVE-2024-28562 Buffer Overflow in Freeimage
📅 PUBLISHED: 2024-03-20 00:00 UTC 🔄 UPDATED: 2026-10-02 19:32 UTC
[ ZERO-DAY / UNPATCHED ] [ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.47%
👁️
0.47% probability
11.7× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
VULNERABLE: UNKNOWN / CHECK VENDOR
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
6.8
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2024-28562 is a critical buffer overflow vulnerability discovered in the open-source FreeImage library, version 3.19.0 (r1909). The flaw resides in the Imf_2_2::copyIntoFrameBuffer() component, which is invoked when parsing images in the EXR (OpenEXR) format. A local attacker can exploit this vulnerability to trigger a heap-based buffer overflow, potentially leading to arbitrary code execution in the context of the application using the FreeImage library.

The vulnerability has a CVSS score of 0.0 (unscored) and an EPSS score of 0.0%, indicating low exploitation activity in the wild at the time of analysis. However, the lack of a patch and the library's widespread use in image processing pipelines make this a significant supply chain risk. No public proof-of-concept (PoC) code or exploit is currently available.

⚡ 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

Supply Chain & Package Security

FreeImage is a widely used open-source library for image format parsing, integrated into numerous applications, including those in the NPM, PyPI, and other ecosystems via bindings or wrappers. This vulnerability represents a supply chain risk: any application that bundles or dynamically links against the vulnerable FreeImage version (3.19.0 r1909) is susceptible. Developers and security teams must audit their dependencies for this specific version and apply mitigations until an official patch is released.

CVSS Breakdown & Threat Level

The CVSS score is listed as 0.0, which typically indicates that the NVD has not yet assigned a score. Based on the vulnerability characteristics, a reasonable estimated CVSS v3.1 vector would be:

Estimated CVSS Vector: CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H

  • Attack Vector (AV): Local (L) – The attacker must have local access to the system or be able to deliver a malicious EXR file to the target application.
  • Attack Complexity (AC): Low (L) – No special conditions are required to trigger the overflow.
  • Privileges Required (PR): None (N) – The attacker does not need any privileges.
  • User Interaction (UI): Required (R) – The victim must open or process the malicious EXR file.
  • Scope (S): Unchanged (U) – The vulnerability affects only the vulnerable component.
  • Confidentiality (C): High (H) – Code execution could lead to data exfiltration.
  • Integrity (I): High (H) – Code execution could allow modification of data.
  • Availability (A): High (H) – The overflow could crash the application or be used to execute arbitrary code.

Estimated Base Score: 7.8 (High)

Threat Level: High. The vulnerability is unpatched, and while no public exploit exists, the nature of the flaw (buffer overflow in a widely used library) makes it a prime target for weaponization.

Deep Dive & Mechanics

The vulnerability is a heap-based buffer overflow in the Imf_2_2::copyIntoFrameBuffer() function within FreeImage's EXR parsing code. The EXR format, developed by Industrial Light & Magic, is a high-dynamic-range image format used extensively in visual effects and professional imaging.

Root Cause: The copyIntoFrameBuffer() function is responsible for copying pixel data from the EXR file into a frame buffer allocated by the application. The vulnerability arises from insufficient bounds checking when processing the dataWindow and displayWindow attributes of the EXR file. An attacker can craft a malicious EXR file with manipulated dataWindow dimensions (e.g., extremely large width or height) that cause the function to write pixel data beyond the allocated buffer size.

Triggering Mechanism:

  1. The attacker creates a specially crafted EXR file with a dataWindow that specifies a region larger than the actual allocated frame buffer.
  2. When FreeImage loads this file, it allocates a buffer based on the displayWindow (or a default size) but then uses the dataWindow dimensions to copy pixel data.
  3. The copyIntoFrameBuffer() function iterates over the pixel rows and columns, writing data to memory addresses that exceed the buffer's boundaries.
  4. This overwrites adjacent heap memory, potentially corrupting critical data structures or function pointers.

Impact: Successful exploitation can lead to arbitrary code execution. The attacker can overwrite a function pointer or return address with a controlled value, redirecting execution flow to shellcode embedded in the EXR file or elsewhere in memory.

Vulnerable vs. Patched Code

Since no official patch is available, a direct code comparison cannot be made. However, based on the vulnerability description, the fix would likely involve:

  • Vulnerable Code (Conceptual):

    // In Imf_2_2::copyIntoFrameBuffer()
    for (int y = dataWindow.min.y; y <= dataWindow.max.y; ++y) {
        for (int x = dataWindow.min.x; x <= dataWindow.max.x; ++x) {
            // No bounds check against allocated buffer size
            frameBuffer[y * stride + x] = readPixel();
        }
    }
    
  • Patched Code (Conceptual):

    // In Imf_2_2::copyIntoFrameBuffer()
    int bufferWidth = displayWindow.max.x - displayWindow.min.x + 1;
    int bufferHeight = displayWindow.max.y - displayWindow.min.y + 1;
    for (int y = dataWindow.min.y; y <= dataWindow.max.y; ++y) {
        if (y < 0 || y >= bufferHeight) continue; // Bounds check
        for (int x = dataWindow.min.x; x <= dataWindow.max.x; ++x) {
            if (x < 0 || x >= bufferWidth) continue; // Bounds check
            frameBuffer[y * stride + x] = readPixel();
        }
    }
    

The patched version would validate that the dataWindow coordinates fall within the allocated buffer dimensions before writing.

Exploitation & Lab Setup

Red Team (Exploitation)

Prerequisites:

  • FreeImage version 3.19.0 (r1909) installed on a target system.
  • A vulnerable application that uses FreeImage to parse EXR files (e.g., an image viewer, converter, or web application).

Lab Setup:

  1. Environment: Ubuntu 22.04 LTS with FreeImage 3.19.0 compiled from source.
  2. Target Application: A simple C program that loads an EXR file using FreeImage and prints its dimensions.

Exploitation Steps:

  1. Craft Malicious EXR File: Use a hex editor or a custom script to create an EXR file with a manipulated dataWindow. For example, set dataWindow to (0, 0, 10000, 10000) while the displayWindow is (0, 0, 100, 100).
  2. Deliver Payload: Embed shellcode in the EXR file's pixel data or metadata. The overflow will overwrite a function pointer (e.g., a vtable pointer) with the address of the shellcode.
  3. Trigger: The victim opens the malicious EXR file with the vulnerable application.
  4. Code Execution: The overflow corrupts the heap, and when the application attempts to use the corrupted pointer, it jumps to the shellcode.

Note: No public exploit code is available. The above is a conceptual approach.

Blue Team (Defense)

Detection:

  • Monitor for processes that crash with heap corruption errors when processing EXR files.
  • Use memory integrity tools (e.g., AddressSanitizer) during development to catch overflows.
  • Deploy endpoint detection and response (EDR) solutions that can detect heap spray or shellcode execution.

Mitigation:

  • Immediate: Disable EXR file parsing in applications using FreeImage 3.19.0 r1909 until a patch is available.
  • Workaround: Use a different library for EXR parsing (e.g., OpenEXR directly) or sandbox the FreeImage process.
  • Long-term: Apply the vendor patch when released, or compile FreeImage with stack canaries and ASLR enabled.

Indicators of Compromise (IOCs)

  • File Hashes (Malicious EXR): None available (no public samples).
  • Network Signatures: None (local vulnerability).
  • Process Behavior:
    • Application crash with access violation at an unexpected address.
    • Heap memory corruption detected by tools like Valgrind or Dr. Memory.
  • Registry/File System: Modified FreeImage library files (if attacker replaces with backdoored version).

Detection Engineering

YARA Rule

rule CVE_2024_28562_FreeImage_EXR_Overflow {
    meta:
        description = "Detects malicious EXR files targeting CVE-2024-28562"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2024-28562"
    strings:
        $exr_magic = { 76 2F 31 01 } // EXR magic bytes
        $large_datawindow = /dataWindow.*\d{4,}/ nocase
    condition:
        $exr_magic at 0 and $large_datawindow
}

Sigma Rule

title: Potential Exploitation of CVE-2024-28562 via EXR File
id: 8a4b3c2d-1e5f-4a7b-9c8d-0e1f2a3b4c5d
status: experimental
description: Detects application crashes or heap corruption when processing EXR files
author: Valters IT
logsource:
    category: application
    product: windows
    service: application
detection:
    selection:
        EventID: 1000 (Application Error)
        Application: "*FreeImage*"
        ExceptionCode: 0xc0000005 (Access Violation)
    condition: selection
falsepositives:
    - Legitimate EXR files with large dimensions
level: high

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2024-28562 Potential EXR Exploit Download"; flow:to_server,established; content:"|76 2F 31 01|"; depth:4; content:"dataWindow"; nocase; distance:0; within:100; classtype:attempted-user; sid:1000001; rev:1;)

Remediation & Mitigation

  1. Immediate Actions:

    • Identify all applications and systems using FreeImage version 3.19.0 (r1909).
    • Disable EXR file parsing or block EXR file uploads in web applications.
    • Implement strict input validation for EXR files (e.g., reject files with dataWindow dimensions exceeding a reasonable limit).
  2. Short-term Mitigation:

    • Use a sandbox or container to isolate FreeImage processes.
    • Apply memory protection mechanisms (ASLR, DEP, CFG) at the OS level.
    • Monitor for abnormal application crashes or heap corruption.
  3. Long-term Remediation:

    • Apply the official patch from the FreeImage project when released.
    • Consider migrating to a maintained fork or alternative library (e.g., OpenEXR).
    • Conduct a thorough code audit of all image parsing libraries in use.
  4. Detection:

    • Deploy the YARA, Sigma, and Suricata rules provided in this report.
    • Enable heap corruption detection in development and production environments.

Valters IT
DevSecOps & Cyber Threat Intelligence Division
Report generated for CVE-2024-28562

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2024-28562/ · 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.