CVE-2026-102739: ESPectre: Unsafe Deserialization on .npz dataset leads to Code Execution
ESPectre is a Wi-Fi motion sensing platform for ESP32. Prior to 3.0.0-rc1, Micro-ESPectre analysis tools, including tools/6optimizefilterparams.py, tools/1analyzerawdata.py, and tools/10trainmlmodel.py, load NPZ datasets with NumPy pickle support enabled through micro-espectre/tools/csiutils.py and a direct loader. A malicious dataset contributor or pull-request author can place an object-typed array in a .npz file under micro-espectre/data, causing pickle-controlled code to execute as the maintainer or developer when a documented analysis tool accesses the field. This issue is fixed in version 3.0.0-rc1.
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
ESPectreto a version that resolves this vulnerability.Fixed in 3.0.0-rc1
Event History
Frequently Asked Questions
Who is exposed to exploitation?
Maintainers and developers using affected Micro-ESPectre analysis tools are exposed when they process an attacker-controlled NPZ dataset. The described attacker paths are a malicious dataset contributor or pull-request author who can place a crafted file under micro-espectre/data.
What must happen for the malicious code to run?
A documented analysis tool must load the crafted NPZ file and access the object-typed array placed in it. The affected loaders enable NumPy pickle support, allowing pickle-controlled code to execute in the context of the user running the tool.
Which tools are identified as affected?
The advisory identifies tools/6_optimize_filter_params.py, tools/1_analyze_raw_data.py, and tools/10_train_ml_model.py. It also identifies loading behavior in micro-espectre/tools/csi_utils.py and a direct loader.
What version contains the fix?
The issue is fixed in version 3.0.0-rc1. Versions prior to 3.0.0-rc1 are described as affected.