/

CVE-2026-102739

Severity:

HIGH RISK

(7.8)

Unsafe Deserialization (CWE-502) in ESPectre Analysis Tools

CVE-2026-102739

Received

Vulnerability type

Category:

Unsafe Deserialization

CWE:

CWE-502

Impact:

Arbitrary code execution in the process running an analysis tool

Severity:

HIGH RISK

(7.8)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

ESPectre analysis tools load NPZ datasets with NumPy pickle support enabled, allowing object arrays in a dataset to trigger unsafe deserialization. If a maintainer or developer runs an affected tool on a maliciously contributed dataset, code may execute with that user's privileges.

ESPectre analysis tools load NPZ datasets with NumPy pickle support enabled, allowing object arrays in a dataset to trigger unsafe deserialization. If a maintainer or developer runs an affected tool on a maliciously contributed dataset, code may execute with that user's privileges.

Affected context

Before version 3.0.0-rc1, ESPectre's Micro-ESPectre analysis tools load NPZ datasets with pickle support enabled, either through shared CSI utilities or a direct loader. The affected tools include tools/6_optimize_filter_params.py, tools/1_analyze_raw_data.py, and tools/10_train_ml_model.py. Risk arises when a tool processes a dataset containing an object-typed array, such as one supplied under micro-espectre/data.

Before version 3.0.0-rc1, ESPectre's Micro-ESPectre analysis tools load NPZ datasets with pickle support enabled, either through shared CSI utilities or a direct loader. The affected tools include tools/6_optimize_filter_params.py, tools/1_analyze_raw_data.py, and tools/10_train_ml_model.py. Risk arises when a tool processes a dataset containing an object-typed array, such as one supplied under micro-espectre/data.

Exploit preconditions

  • Attack surface: NPZ datasets processed by the Micro-ESPectre analysis tools
  • Required access: Ability to contribute or modify a dataset, for example through a pull request
  • Trigger point: A maintainer or developer runs an affected tool that loads or accesses the contributed dataset field
  • Why exploitation is possible: Pickle-enabled loading can deserialize attacker-controlled objects during dataset processing
  • Attack surface: NPZ datasets processed by the Micro-ESPectre analysis tools
  • Required access: Ability to contribute or modify a dataset, for example through a pull request
  • Trigger point: A maintainer or developer runs an affected tool that loads or accesses the contributed dataset field
  • Why exploitation is possible: Pickle-enabled loading can deserialize attacker-controlled objects during dataset processing

Why this happens

The tools use NumPy loading paths with pickle support enabled for NPZ datasets. When an object-typed array is deserialized, the loader may process attacker-controlled pickle data rather than treating the dataset as inert input. This is CWE-502: Deserialization of Untrusted Data—untrusted serialized content is allowed to influence object construction and execute code.

The tools use NumPy loading paths with pickle support enabled for NPZ datasets. When an object-typed array is deserialized, the loader may process attacker-controlled pickle data rather than treating the dataset as inert input. This is CWE-502: Deserialization of Untrusted Data—untrusted serialized content is allowed to influence object construction and execute code.

Potential impact

  • Arbitrary code could execute in the maintainer's or developer's process
  • Local files or credentials accessible to that account may be exposed or modified
  • Development environments or related systems could be compromised
  • Malicious changes could be introduced into project data or workflows
  • Arbitrary code could execute in the maintainer's or developer's process
  • Local files or credentials accessible to that account may be exposed or modified
  • Development environments or related systems could be compromised
  • Malicious changes could be introduced into project data or workflows

General mitigation guidance

Defensive approaches focus on treating contributed datasets as untrusted and avoiding executable serialization formats.

  • Disable pickle support when loading datasets that do not require it
  • Prefer non-executable data formats and validate inputs against a strict schema
  • Separate dataset validation from analysis and run processing in a restricted environment
  • Limit the privileges and accessible secrets of accounts and processes that handle contributed data
  • Apply review and access controls to changes that add or modify datasets

Defensive approaches focus on treating contributed datasets as untrusted and avoiding executable serialization formats.

  • Disable pickle support when loading datasets that do not require it
  • Prefer non-executable data formats and validate inputs against a strict schema
  • Separate dataset validation from analysis and run processing in a restricted environment
  • Limit the privileges and accessible secrets of accounts and processes that handle contributed data
  • Apply review and access controls to changes that add or modify datasets

How teams detect issues like this

  • Use static analysis to identify NumPy loading calls that enable pickle support, including indirect calls through shared utilities
  • Review data-processing paths for object-typed arrays and assumptions that repository datasets are trusted
  • Add CI checks or repository policies that reject unsafe dataset formats and unexpected object arrays
  • Use automated code review tools to flag unsafe deserialization patterns and verify that input validation occurs before processing
  • Use static analysis to identify NumPy loading calls that enable pickle support, including indirect calls through shared utilities
  • Review data-processing paths for object-typed arrays and assumptions that repository datasets are trusted
  • Add CI checks or repository policies that reject unsafe dataset formats and unexpected object arrays
  • Use automated code review tools to flag unsafe deserialization patterns and verify that input validation occurs before processing

Sources

SourceLink
github.comgithub.com/francescopace/espectre/commit/adf495ceed41840497347f0196ba4a6968fc4ee1
github.comgithub.com/francescopace/espectre/pull/154
github.comgithub.com/francescopace/espectre/releases/tag/3.0.0-rc1
github.comgithub.com/francescopace/espectre/security/advisories/GHSA-g96x-h6rg-cqq3

Frequently asked

questions

It is not triggered simply by network access. The risk arises when an affected tool processes a malicious dataset, such as one submitted by a contributor.

An attacker needs a way to provide or modify a dataset and have a maintainer or developer run an affected analysis tool on it.

Avoid pickle-enabled loading for untrusted data. Prefer non-executable formats, and validate dataset structure before analysis.

Treat contributed datasets as untrusted, enforce format and schema checks in CI, and run analysis with least privilege in an isolated environment.

It is not triggered simply by network access. The risk arises when an affected tool processes a malicious dataset, such as one submitted by a contributor.

An attacker needs a way to provide or modify a dataset and have a maintainer or developer run an affected analysis tool on it.

Avoid pickle-enabled loading for untrusted data. Prefer non-executable formats, and validate dataset structure before analysis.

Treat contributed datasets as untrusted, enforce format and schema checks in CI, and run analysis with least privilege in an isolated environment.

Find out what's already
exploitable in your codebase.