Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCraft malicious .md2 with overflowing numFrames/numVertices
-
DeliveryDeliver file to victim application using Assimp
-
ExploitApplication imports file via MD2 importer
-
Execution32-bit size product wraps, bypassing bounds check
-
PersistHeap out-of-bounds read triggered
-
ImpactApplication crash or adjacent heap memory disclosure
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Integer overflow checks
MITRE ATT&CK
1 technique across 1 tactic: Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires a victim application that uses Assimp's MD2 (Quake II model) importer to parse an attacker-supplied .md2 file; the trigger is attacker-controlled numFrames and numVertices header fields whose product overflows the 32-bit size calculation in MD2Importer::ValidateHeader() and wraps past the fileSize bounds check. No authentication is required (PR:N), but the attack is local/file-based (AV:L) and needs the file to be delivered to and processed by the host application (UI:P) - there is no standalone network-reachable service. Limiting factors: the target application must accept and import untrusted .md2 files, the impact is confined to a crash and limited adjacent-heap disclosure (no code execution or write), and systems updated past 6.0.5 are not affected. |
| Impact | This is a medium-severity (CVSS 4.0 base 6.9) memory-safety flaw in the Assimp MD2 importer, and the signals are internally consistent rather than conflicting. The 4.0 vector (AV:L/AC:L/AT:N/PR:N/UI:P/VC:L/VI:N/VA:H) describes an unauthenticated (PR:N) but local, file-parsing issue: the attacker does not supply credentials, yet the malicious .md2 must be delivered to and processed by an application that embeds Assimp, and passive user/application interaction is required (UI:P). The dominant impact is availability (VA:H, application crash) with only limited confidentiality exposure (VC:L, adjacent heap memory via out-of-bounds read); there is no integrity impact (VI:N), consistent with CWE-190 leading to a heap OOB read rather than write/code execution. No EPSS score is provided and the flaw is not on the CISA KEV list, so there is no evidence of active exploitation; the vulnerability was reported by VulnCheck and the vendor has shipped a patch. The vuln.today decision label is 'this_month' (not act_now/emergency), which matches a patchable DoS/info-leak in a widely embedded library rather than an urgent RCE. Net: a real but moderate-priority issue - prioritize patching in software that ingests untrusted 3D assets, but it is not a drop-everything emergency on the available signals. EPSS is absent, so probabilistic exploitation likelihood could not be weighed. |
| Exploit ScenarioDerived | An attacker crafts a malicious Quake II .md2 model file whose numFrames and numVertices header fields are chosen so their 32-bit product wraps past the file-size bounds check in MD2Importer::ValidateHeader(). When a victim application that uses Assimp (e.g. a game engine, 3D asset pipeline, or model viewer) imports the file, the bypassed check lets the parser read beyond the allocated buffer, crashing the application or leaking adjacent heap memory. A public PoC reference exists (vendor issue report); it is not verified as working exploit code. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 28, 2026
Heap out-of-bounds reads in Assimp's MD2 (Quake II model) importer (all versions through 6.0.5) let an attacker who supplies a crafted .md2 file crash the importing application and potentially expose adjacent heap memory. Attacker-controlled numFrames and numVertices header fields overflow the 32-bit frame-size product used in MD2Importer::ValidateHeader(), wrapping the computed offsets past the fileSize bounds check so later parsing reads outside the allocated buffer. The attack is local and file-based: it needs a host application that feeds an untrusted .md2 file to Assimp, requires no authentication and no network reachability, and yields only denial of service plus limited disclosure (no code execution or write). No public exploit code or active exploitation was identified at time of analysis, and an upstream fix has been merged.
RemediationAI
Upstream fix available (PR/commit); released patched version not independently confirmed. The vendor-corrected code is in pull request https://github.com/assimp/assimp/pull/6963, merged as commit 7dbc85d9218fae017d4fad70269e7569f7b0c870, which recomputes frameSize and all offset-plus-count comparisons in uint64_t; build Assimp from a revision that contains that commit or apply the change to your vendored copy of code/AssetLib/MD2/MD2Loader.cpp, and confirm the exact fixed release tag with the project at https://github.com/assimp/assimp before relying on a packaged version. Until the fix is deployed, the exposure reduction that follows from the reported exploit preconditions is to stop passing untrusted .md2 files to Assimp's MD2 importer - reject .md2 uploads at the application boundary or run the import in a sandboxed/out-of-process worker whose crash and heap contents do not affect the host - accepting that this removes MD2 support from the affected workflow rather than fixing the parser. No other mitigating control is described in the available sources.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Assimp is a widely used open-source 3D asset import library, and its MD2 importer parses the id Software Quake II model format, whose header contains raw uint32 counts (numSkins, numTexCoords, numTriangles, numFrames, numVertices) and byte offsets into the file. ValidateHeader() is the trust boundary that is supposed to confirm each section (offset + count * sizeof(element)) lies inside the file before the loader walks it. The root cause is CWE-190 integer overflow: frameSize is computed as sizeof(MD2::Frame) + (numVertices - 1) * sizeof(MD2::Vertex) in 32-bit arithmetic, and that value is then multiplied by numFrames, also in 32 bits. Because both factors are attacker-controlled, the product can wrap to a small value that passes the '>= fileSize' rejection test, while the real per-frame stride is vastly larger; the adjacent AI_MAX_ALLOC guards only bound each individual count against sizeof(element) and never validate the product. The upstream patch (PR 6963, commit 7dbc85d) fixes this by promoting the offsets, counts and frameSize computation to uint64_t so the comparison against fileSize is performed without truncation. CPE cpe:2.3:a:assimp:assimp covers all releases up to and including 6.0.5.
Know when Assimp gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:L/VI:N/VA:H/SC:N/SI:N/SA:N
Local untrusted-file parsing needing the app/user to import the file (AV:L, UI:R) with no auth (PR:N); integer overflow reliably crashes (A:H) and leaks limited adjacent heap data (C:L), with no integrity impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Assimp through 6.0.5 contains an integer overflow vulnerability in MD2Importer::ValidateHeader() that allows attackers to bypass frame table bounds checks using crafted header fields. Attackers can supply a malicious .md2 file whose numFrames and numVertices values wrap the 32-bit size check, causing heap out-of-bounds reads that crash applications or expose adjacent heap memory.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Integer overflow occurs when an arithmetic operation produces a result that exceeds the maximum value a given integer type can store.
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
An issue in assimp v.5.4.3 allows a local attacker to execute arbitrary code via the CallbackToLogRedirector function wi
Open Asset Import Library (assimp) commit 3c253ca was discovered to contain a segmentation violation via the component A
A heap-buffer-overflow vulnerability was discovered in the SkipSpacesAndLineEnd function in Assimp v5.4.3. Rated medium
A segmentation fault (SEGV) was detected in the SortByPTypeProcess::Execute function in the Assimp library during fuzz t
A segmentation fault (SEGV) was detected in the Assimp::SplitLargeMeshesProcess_Triangle::UpdateNode function within the
A heap-buffer-overflow vulnerability has been identified in the OpenDDLParser::parseStructure function within the Assimp
A vulnerability classified as problematic was found in Open Asset Import Library Assimp 5.4.3. Rated medium severity (CV
A vulnerability was found in Open Asset Import Library Assimp 5.4.3 and classified as problematic.h of the component CSM
A vulnerability classified as critical has been found in Open Asset Import Library Assimp 5.4.3. Rated medium severity (
A vulnerability, which was classified as critical, has been found in Open Asset Import Library Assimp 5.4.3.cpp. Rated m
A vulnerability classified as critical was found in Open Asset Import Library Assimp 5.4.3. Rated medium severity (CVSS
A vulnerability classified as critical has been found in Open Asset Import Library Assimp 5.4.3. Rated medium severity (
EUVD-2026-111543
GHSA-jr35-9ffc-pmf8
NVD
CVE.org
EPSS
Exploit-DB