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

CVE-2024-24584

CVE-2024-24584 Out-of-Bounds Access in Libigl
📅 PUBLISHED: 2024-05-28 14:02 UTC 🔄 UPDATED: 2026-08-12 09:04 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.26%
👁️
0.26% probability
6.6× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1190
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
VULNERABLE: v2.5.0
CVSS VECTOR BREAKDOWN 4.3
AV: L Attack Vector Local
AC: L Attack Complexity Low
PR: N Privileges Required None
UI: R User Interaction Required
S: U Scope Unchanged
C: L Confidentiality Low
I: N Integrity None
A: N Availability None
4.3
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2024-24584 is a medium-severity out-of-bounds read vulnerability in the readMSH function of libigl v2.5.0. The flaw is triggered when parsing specially crafted .msh files containing MshLoader::ELEMENT_TET elements. An attacker can exploit this by providing a malicious mesh file, leading to an out-of-bounds read that may leak sensitive memory contents. The vulnerability has a CVSS score of 4.3, indicating a moderate risk primarily due to the requirement for user interaction (opening a malicious file). No public exploit code or patch 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

libigl is a widely used C++ geometry processing library, often integrated into scientific computing, 3D modeling, and visualization pipelines. This vulnerability could affect downstream applications that rely on libigl for mesh file parsing. Since no patch is available, users must rely on input validation and sandboxing to mitigate risk.

CVSS Breakdown & Threat Level

  • CVSS Vector: CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:N
  • Base Score: 4.3 (Medium)
  • Attack Vector: Local (requires opening a malicious file)
  • Attack Complexity: Low
  • Privileges Required: None
  • User Interaction: Required
  • Scope: Unchanged
  • Confidentiality Impact: Low (potential memory leak)
  • Integrity Impact: None
  • Availability Impact: None

The threat level is moderate. Exploitation requires user interaction, but the impact is limited to information disclosure.

Deep Dive & Mechanics

The vulnerability resides in the readMSH function of libigl v2.5.0, specifically when processing MshLoader::ELEMENT_TET elements. The .msh file format is a standard for storing finite element mesh data. The readMSH function parses element connectivity data without proper bounds checking on the node indices. When a malicious .msh file provides an out-of-range node index for a tetrahedral element, the function reads beyond the allocated buffer, causing an out-of-bounds read.

The root cause is insufficient validation of node indices against the total number of nodes in the mesh. This can lead to reading adjacent memory, potentially exposing sensitive data such as other mesh data, application variables, or cryptographic keys.

Vulnerable vs. Patched Code

Since no patch is available, a comparison cannot be made. However, a secure implementation would validate that each node index in an element is within the range [0, num_nodes - 1] before accessing the node array.

Vulnerable code (conceptual):

void readMSH(const std::string &filename, ...) {
    // ... parsing ...
    for (int i = 0; i < num_elements; i++) {
        int node_idx = read_int(); // no bounds check
        node = nodes[node_idx]; // out-of-bounds read
    }
}

Patched code (conceptual):

void readMSH(const std::string &filename, ...) {
    // ... parsing ...
    for (int i = 0; i < num_elements; i++) {
        int node_idx = read_int();
        if (node_idx < 0 || node_idx >= num_nodes) {
            // handle error
            continue;
        }
        node = nodes[node_idx];
    }
}

Exploitation & Lab Setup

Red Team

To exploit this vulnerability, an attacker crafts a malicious .msh file with a tetrahedral element containing a node index larger than the total number of nodes. When the victim opens the file with an application using libigl v2.5.0, the out-of-bounds read occurs.

Example malicious .msh file structure:

$MeshFormat
2.2 0 8
$EndMeshFormat
$Nodes
3
1 0.0 0.0 0.0
2 1.0 0.0 0.0
3 0.0 1.0 0.0
$EndNodes
$Elements
1
1 4 2 0 0 1 2 3 9999
$EndElements

In this example, node index 9999 is out of bounds (only 3 nodes exist), triggering the vulnerability.

Blue Team

To detect exploitation attempts, monitor for:

  • Unusual .msh files with excessively large node indices.
  • Applications crashing or exhibiting abnormal memory access patterns when processing mesh files.
  • Network traffic containing .msh files from untrusted sources.

Mitigation:

  • Use file integrity monitoring to detect malicious .msh files.
  • Implement application sandboxing to limit the impact of memory leaks.
  • Apply input validation at the application level before passing data to libigl.

Indicators of Compromise (IOCs)

  • File Hashes: (No known samples)
  • Network Indicators: (No known C2)
  • Behavioral Indicators:
    • Application crash when opening a .msh file.
    • Unexpected memory access patterns in libigl's readMSH function.
    • Log entries indicating out-of-bounds read errors.

Detection Engineering

YARA Rule

rule CVE_2024_24584_libigl_msh_oob_read {
    meta:
        description = "Detects malicious .msh files exploiting CVE-2024-24584"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2024-24584"
    strings:
        $msh_header = "$MeshFormat"
        $tet_element = "4 2" // tetrahedral element type
        $node_section = "$Nodes"
        $element_section = "$Elements"
    condition:
        $msh_header at 0 and $node_section and $element_section and $tet_element
}

Sigma Rule

title: CVE-2024-24584 libigl MSH File Out-of-Bounds Read
id: cve-2024-24584
status: experimental
description: Detects attempts to exploit out-of-bounds read in libigl via malicious .msh files
author: Valters IT
logsource:
    category: process_creation
    product: windows
detection:
    selection:
        Image|endswith: '\app.exe'  # Replace with target application
        CommandLine|contains: '.msh'
    condition: selection
falsepositives:
    - Legitimate mesh file processing
level: medium

Suricata Rule

alert tcp $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2024-24584 libigl MSH File Out-of-Bounds Read"; flow:to_server,established; content:"$MeshFormat"; content:"$Elements"; content:"4 2"; distance:0; within:100; classtype:attempted-recon; sid:1000001; rev:1;)

Remediation & Mitigation

  1. Immediate: Avoid opening .msh files from untrusted sources.
  2. Short-term: Implement input validation in applications using libigl to check node indices before processing.
  3. Long-term: Monitor libigl repository for a patch and update to a fixed version when available.
  4. Compensating Controls: Use application sandboxing, memory protection (ASLR, DEP), and runtime bounds checking tools.

Valters IT
DevSecOps & Cyber Threat Intelligence

👁️ SHODAN DORKS (THREAT HUNTING)

What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.

libigl
msh file parsing
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2024-24584/ · 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.