Description
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.
Published: 2026-09-14
Score: 6.1 Medium
EPSS: < 1% Very Low
KEV: No
Impact: Memory disclosure and crash via out-of-bounds read
Action: Apply patch
AI Analysis

Impact

Tract is a lightweight inference toolkit that parses NNEF of usize dimensions in the dense numeric tensor path; when a malicious NNEF archive supplies oversized dimensions, the multiplication overflows, causing an allocation that is smaller than the logical data slice. During loading via model_for_path or model_for_read, this leads to an out-of-bounds read that can expose adjacent memory and may trigger a segmentation fault. The bool, String, and block-quant tensor paths are independently guarded, and no out-of-bounds write or code execution was demonstrated.

Affected Systems

The flaw affects Sonos tract binaries in versions earlier than 0.21.16, 0.22.2, and 0.23.1. Any application that loads NNEF archives—either via model_for_path or model_for_read—without validating tensor dimensions is susceptible. Alternative tensor paths for bool, String, or block‑quant remain protected and are not impacted by this issue.

Risk and Exploitability

The CVSS score is 6.1, indicating moderate severity. The EPSS score is < 1 %, and the vulnerability is not listed in the CISA KEV catalog, suggesting a low to moderate exploitation probability once exposed. The attack requires the attacker to supply a malicious NNEF model file; therefore, the likely vector is local or within an environment that accepts untrusted model inputs. The impact includes sensitive data leakage from memory and potential service disruption through crashes, but not remote code execution.

Generated by OpenCVE AI on September 20, 2026 at 23:02 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade tract to any of the patched versions (0.21.16, 0.22.2, or 0.23.1)
  • Restrict or validate the size and dimensions of input tensors before they are fed into tract, ensuring multiplication does not overflow
  • Run tract inside a sandboxed or limited‑privilege environment when processing untrusted models

Generated by OpenCVE AI on September 20, 2026 at 23:02 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-x5mv-8wgw-29hg tract-nnef: integer overflow in NNEF `.dat` tensor parser yields an out-of-bounds read on model load
History

Tue, 15 Sep 2026 00:15:00 +0000

Type Values Removed Values Added
First Time appeared Sonos
Sonos tract
Vendors & Products Sonos
Sonos tract

Mon, 14 Sep 2026 21:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Mon, 14 Sep 2026 21:00:00 +0000

Type Values Removed Values Added
Description 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.
Title tract-nnef: integer overflow in NNEF `.dat` tensor parser yields an out-of-bounds read on model load
Weaknesses CWE-125
CWE-190
References
Metrics cvssV3_1

{'score': 6.1, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:H'}


cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-09-14T20:09:24.411Z

Reserved: 2026-06-16T14:41:54.578Z

Link: CVE-2026-55093

cve-icon Vulnrichment

Updated: 2026-09-14T20:09:20.748Z

cve-icon NVD

Status : Deferred

Published: 2026-09-14T20:16:47.290

Modified: 2026-09-30T17:51:56.193

Link: CVE-2026-55093

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-20T23:15:04Z

Weaknesses