ODA Drawings SDK CVE-2025-10021
HIGHAttack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessRun application using vulnerable static SDK
-
ExploitStatic init order fiasco accesses uninitialized OdString::kEmpty
-
ImpactApplication crashes on startup (denial of service)
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Variable initialization checks
|
| Exploitation Conditions | Exploitation is limited to applications that link the affected Open Design Alliance Drawings SDK static multithreaded ('mt') builds prior to version 2026.12 and that instantiate the global COdaMfcAppApp theApp object; the crash is triggered deterministically during static-object construction at process startup when OdString::kEmpty is accessed before initialization. Limiting factors: the attack vector is local (AV:L) - not remotely reachable - so an attacker must already be able to run or influence the launch of the vulnerable application; dynamically-linked SDK builds and versions 2026.12 and later are not affected. The impact is reliably a startup denial of service; any escalation to memory corruption or code execution is undefined-behavior-dependent and unproven. |
| Impact | This is a moderate-severity reliability defect that presents as a denial-of-service risk rather than a high-priority exploitation target. The CVSS 4.0 vector (AV:L/AC:L/PR:N/UI:N, VA:H, VI:L, VC:N) scores 7.0 and is consistent with the description: a local, low-complexity flaw whose primary impact is availability (startup crash) with only low integrity impact and no confidentiality impact. Multiple low-risk signals align: EPSS is 0.15% (4th percentile), there is no CISA KEV listing, and no public exploit was identified. The flaw is a Static Initialization Order Fiasco (CWE-457, use of uninitialized variable) - a deterministic startup crash, not a remotely reachable memory-corruption primitive. The description's claim that 'memory corruption and potential arbitrary code execution cannot be ruled out' is explicitly speculative and is NOT supported by any POC or exploitation evidence; it should not be treated as confirmed RCE. Note a signal conflict: the input Tags assert 'RCE' and 'Buffer Overflow,' but the underlying weakness (CWE-457, uninitialized static variable) is neither a buffer overflow nor a demonstrated code-execution bug - verify before escalating. Also note the local attack vector (AV:L) means this is not remotely exploitable despite PR:N; practical risk is confined to environments running vulnerable static (mt) SDK builds. |
| Exploit ScenarioDerived | An application built against the affected Open Design Alliance Drawings SDK static (mt) library loads and, during C++ static-object construction, the global COdaMfcAppApp theApp accesses OdString::kEmpty before it is initialized, reading uninitialized memory and crashing the process on startup. No public exploit exists; the realistic outcome is a reproducible denial of service, with theoretical memory-corruption consequences that remain unverified. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 19, 2026
Startup denial of service affects applications that statically link ODA Drawings SDK multithreaded ('mt') builds before 2026.12 and instantiate the global COdaMfcAppApp theApp object. The static initialization order fiasco causes OdString::kEmpty to be accessed before initialization, deterministically crashing the process at launch. Exploitation requires local access to run or influence the vulnerable application; no public exploit code is identified at time of analysis, EPSS is 0.15% (4th percentile), and any memory-corruption or code-execution escalation remains undefined-behavior-dependent and unproven.
RemediationAI
Vendor-released patch: 2026.12. Upgrade affected applications to Open Design Alliance Drawings SDK 2026.12 or later, and verify the vendor advisory at https://www.opendesign.com/security-advisories for any build-specific notes. If immediate upgrade is not possible, switch from static multithreaded ('mt') linking to dynamically linked SDK builds, which are not affected; the trade-off is added runtime dependency management and DLL deployment complexity. Developers can also eliminate the static initialization order hazard by replacing the global COdaMfcAppApp theApp object with a function-local static or by guaranteeing OdString::kEmpty is initialized before dependent static constructors run, but this requires source changes and thorough validation. Restricting local access to vulnerable applications is a compensating control only and does not remove the flaw.
Affected ProductsAI
Open Design Alliance Drawings SDK static multithreaded ('mt') builds prior to version 2026.12 are affected. The issue triggers in applications that link these static builds and instantiate the global COdaMfcAppApp theApp object. Dynamically linked SDK builds and versions 2026.12 and later are not affected. No CPE strings were provided in the input; consult the vendor advisory at https://www.opendesign.com/security-advisories for product-specific guidance.
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
CWE-457 (Use of Uninitialized Variable) manifests here as the C++ static initialization order fiasco. In static multithreaded ('mt') builds of the ODA Drawings SDK, the global COdaMfcAppApp theApp object's constructor can call code that reads OdString::kEmpty, a static member, before that member's dynamic initialization has completed across translation units. Because C++ does not define the order of dynamic initialization for static objects in different translation units, the read touches uninitialized memory and typically aborts startup, yielding a high availability impact. The flaw is confined to static 'mt' builds before 2026.12; dynamically linked builds and 2026.12+ are not affected. The undefined behavior theoretically permits memory corruption and arbitrary code execution in specific scenarios, but our assessment treats that escalation as unproven.
Know when the next one hits your stack
- 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:N/VC:N/VI:L/VA:H/SC:N/SI:N/SA:N/AU:Y/R:U/V:D/RE:L/U:Amber
Local-only trigger during static init gives AV:L/AC:L/PR:N/UI:N; deterministic startup crash is A:H, undefined behavior yields at most I:L, and no data disclosure means C:N.
Primary rating from Vendor (8a9629cb-c5e7-4d2a-a894-111e8039b7ea).
CVSS VectorVendor: 8a9629cb-c5e7-4d2a-a894-111e8039b7ea
DescriptionCVE.org
A Use of Uninitialized Variable vulnerability exists in Open Design Alliance Drawings SDK static versions (mt) before 2026.12. Static object COdaMfcAppApp theApp may access OdString::kEmpty before its initialization. Due to undefined initialization order of static objects across translation units (Static Initialization Order Fiasco), the application accesses uninitialized memory. This results in application crash on startup, causing denial of service. Due to undefined behavior, memory corruption and potential arbitrary code execution cannot be ruled out in specific exploitation scenarios.
Executive ViewAI
ODA Drawings SDK multithreaded ('mt') builds before 2026.12 that are statically linked and instantiate the global COdaMfcAppApp object can crash deterministically at application startup, creating an availability risk for affected drawing and engineering applications. The issue requires local access, and no public exploit code is identified at time of analysis, so leadership should focus on inventorying affected applications, limiting local exposure, and tracking vendor remediation rather than incident response.
No vendor-released patch identified at time of analysis; interim mitigations include restricting local access to affected applications, running with least privilege, application allowlisting and endpoint controls, monitoring for startup crashes, and engaging ODA for a supported workaround or fixed SDK build.
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
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
NVD
CVE.org
EPSS
VulDB
GitHub PoC
Exploit-DB