CVE-2026-55093: tract-nnef: integer overflow enables heap OOB read, crash

MEDIUMCISA: TRACK*
Published September 14, 2026
CISO Take

CVE-2026-55093 is an integer overflow in the Rust tract inference toolkit's NNEF loader: a crafted model archive makes the size check pass on a tiny allocation while the tensor is treated as a much larger slice, leaking adjacent heap memory and later crashing the process with a segfault. Exposure is limited by a local attack vector and required user interaction (the victim must load a malicious model), and there is no public exploit, no Nuclei template and no CISA KEV listing. EPSS is low in absolute terms (0.00181) though it sits in the top 93rd percentile, and CISA SSVC says TRACK*, so this is a watch item rather than an emergency. The practical risk is organizations that ingest third-party or user-uploaded NNEF models into edge or embedded inference services, where a crash means denial of service and a leak could expose adjacent memory. Upgrade tract-nnef to 0.21.16, 0.22.2 or 0.23.1, and until then only load NNEF archives from trusted, verified sources.

Sources:NVDEPSSGitHub AdvisoryATLAS

What is the risk?

Medium overall (CVSS 6.1). Exploitation needs a victim to load an attacker-crafted NNEF archive (local vector, user interaction required), with low complexity and no privileges. Impact is a limited confidentiality loss (heap over-read) and a high availability impact (segfault). No out-of-bounds write or code execution was demonstrated. No public exploit, no scanner template, not in KEV. EPSS of 0.00181 (top 93rd percentile) indicates low but non-trivial relative likelihood. Exposure rises in services that accept untrusted models automatically. Downstream dependent counts and package health are unknown.

How does the attack unfold?

Craft malicious model
Attacker builds an NNEF archive with tensor dimensions that overflow the usize size calculation.
AML.T0010.003
Delivery and loading
Victim or automated pipeline loads the archive via model_for_path or model_for_read.
AML.T0011.000
Memory over-read
as_uniform reads beyond the undersized heap allocation, disclosing adjacent data.
Crash
Later access to the oversized slice causes a segfault, terminating the inference process.
AML.T0029

How severe is it?

CVSS 3.1
6.1 / 10
EPSS
0.2%
chance of exploitation in 30 days
Higher than 8% of all CVEs
Exploitation Status
Exploit Available
Exploitation: MEDIUM
Sophistication
Moderate
Exploitation Confidence
medium
○CISA SSVC: Public PoC
Composite signal derived from CISA KEV, VulnCheck KEV, CISA SSVC, EPSS, Metasploit, Exploit-DB, trickest/cve, Nuclei templates, and inthewild.io exploitation reports.

What is the attack surface?

AVACPRUISCIA
AVLocal
ACLow
PRNone
UIRequired
SUnchanged
CLow
INone
AHigh

What should I do?

1 step
  1. 1) Upgrade tract-nnef/tract to 0.21.16, 0.22.2 or 0.23.1 (or later) and rebuild and redeploy affected binaries. 2) Use cargo tree or cargo audit and the GHSA-x5mv-8wgw-29hg advisory to find tract-nnef in your dependency graph, including transitive use. 3) Until patched, load NNEF archives only from trusted, integrity-verified sources (signatures or hashes) and reject user-supplied models. 4) Run model loading in a sandboxed, low-privilege process with memory and crash isolation, and use automatic restart for inference workers. 5) Monitor for unexpected segfaults or crash loops during model loading, and for model files with abnormally large declared tensor dimensions relative to file size.

What does CISA's SSVC say?

DecisionTrack*
Exploitationpoc
AutomatableNo
Technical Impactpartial

Source: CISA Vulnrichment (SSVC v2.0). Decision based on the CISA Coordinator decision tree.

How is it classified?

Which compliance frameworks are affected?

This CVE is relevant to:

EU AI Act
Article 15-Accuracy, robustness and cybersecurity
ISO 42001
A.7.4-Quality of data for AI systems
NIST AI RMF
MANAGE 2.3-Procedures to respond to and recover from previously unknown risks
OWASP LLM Top 10
LLM03-Supply Chain

Frequently Asked Questions

What is CVE-2026-55093?

CVE-2026-55093 is an integer overflow in the Rust tract inference toolkit's NNEF loader: a crafted model archive makes the size check pass on a tiny allocation while the tensor is treated as a much larger slice, leaking adjacent heap memory and later crashing the process with a segfault. Exposure is limited by a local attack vector and required user interaction (the victim must load a malicious model), and there is no public exploit, no Nuclei template and no CISA KEV listing. EPSS is low in absolute terms (0.00181) though it sits in the top 93rd percentile, and CISA SSVC says TRACK*, so this is a watch item rather than an emergency. The practical risk is organizations that ingest third-party or user-uploaded NNEF models into edge or embedded inference services, where a crash means denial of service and a leak could expose adjacent memory. Upgrade tract-nnef to 0.21.16, 0.22.2 or 0.23.1, and until then only load NNEF archives from trusted, verified sources.

Is CVE-2026-55093 actively exploited?

No confirmed active exploitation of CVE-2026-55093 has been reported, but organizations should still patch proactively.

How to fix CVE-2026-55093?

1) Upgrade tract-nnef/tract to 0.21.16, 0.22.2 or 0.23.1 (or later) and rebuild and redeploy affected binaries. 2) Use cargo tree or cargo audit and the GHSA-x5mv-8wgw-29hg advisory to find tract-nnef in your dependency graph, including transitive use. 3) Until patched, load NNEF archives only from trusted, integrity-verified sources (signatures or hashes) and reject user-supplied models. 4) Run model loading in a sandboxed, low-privilege process with memory and crash isolation, and use automatic restart for inference workers. 5) Monitor for unexpected segfaults or crash loops during model loading, and for model files with abnormally large declared tensor dimensions relative to file size.

What systems are affected by CVE-2026-55093?

This vulnerability affects the following AI/ML architecture patterns: edge inference, embedded ML, model serving, model loading pipelines, on-device inference.

What is the CVSS score for CVE-2026-55093?

CVE-2026-55093 has a CVSS v3.1 base score of 6.1 (MEDIUM). The EPSS exploitation probability is 0.18%.

What is the AI security impact?

Affected AI Architectures

edge inferenceembedded MLmodel servingmodel loading pipelineson-device inference

MITRE ATLAS Techniques

AML.T0010.003Model
AML.T0011.000Unsafe AI Artifacts
AML.T0029Denial of AI Service

Compliance Controls Affected

EU AI Act: Article 15
ISO 42001: A.7.4
NIST AI RMF: MANAGE 2.3
OWASP LLM Top 10: LLM03

What are the technical details?

Original Advisory

Tract is a tiny, no-nonsense, self-contained TensorFlow and ONNX inference toolkit. Prior to 0.21.16, 0.22.2, and 0.23.1, tract-nnef uses unchecked usize multiplication in nnef/src/tensors.rs read_tensor for attacker-controlled tensor dimensions, the allocation size, and the reported tensor length. Loading a crafted NNEF archive through model_for_path or model_for_read reaches the default DatLoader and can make the wrapped size check accept a small allocation while data/src/tensor.rs as_slice_unchecked creates a much larger logical slice. Model construction through as_uniform can then read beyond the heap allocation and disclose adjacent data, and later access can terminate the process with a segmentation fault. The affected dense numeric tensor path does not include the independently guarded bool, String, or block-quant paths, and no out-of-bounds write or code execution was demonstrated. This issue is fixed in versions 0.21.16, 0.22.2, and 0.23.1.

Exploitation Scenario

An attacker publishes or uploads a crafted NNEF archive whose tensor dimensions are chosen so the usize multiplication wraps, producing a small allocation but a very large logical length. A developer or an automated pipeline loads the model with model_for_path or model_for_read. During model construction, as_uniform reads past the heap buffer and exposes adjacent memory, which may land in logs, outputs or later model state. Subsequent access to the oversized slice triggers a segmentation fault that kills the inference process, causing denial of service on an edge device or model-serving worker.

Weaknesses (CWE)

CWE-125 — Out-of-bounds Read: The product reads data past the end, or before the beginning, of the intended buffer.

  • [Implementation] Assume all input is malicious. Use an "accept known good" input validation strategy, i.e., use a list of acceptable inputs that strictly conform to specifications. Reject any input that does not strictly conform to specifications, or transform it into something that does. When performing input validation, consider all potentially relevant properties, including length, type of input, the full range of acceptable values, missing or extra inputs, syntax, consistency across related fields, and conformance to business rules. As an example of business rule logic, "boat" may be syntactically valid because it only contains alphanumeric characters, but it is not valid if the input is only expected to contain colors such as "red" or "blue." Do not rely exclusively on looking for malicious or malformed inputs. This is likely to miss at least one undesirable input, especially if the code's environment changes. This can give attackers enough room to bypass the intended validation. However, denylis
  • [Architecture and Design] Use a language that provides appropriate memory abstractions.

Source: MITRE CWE corpus.

CVSS Vector

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

Timeline

Published
September 14, 2026
Last Modified
September 30, 2026
First Seen
September 14, 2026

Related Vulnerabilities