CVE-2026-15890

MEDIUMPre-NVD 5.35.3—
EchelonGraph scoreMEDIUM confidence

This medium-severity CVE scores 5.3 under a secondary CVSS source (NVD's own analysis pending). EPSS exploit probability: <0.1% (below the 1st percentile of EPSS-scored CVEs). GitHub Security Advisory data not yet ingested — confidence will rise once GHSA publishes (typical lag: hours to days for open-source ecosystem CVEs; never for infrastructure-only CVEs).

Triggered by: NVD CVSS baseline
Sources: epss, secondary
5.3EG
EchelonGraph verdictMonitorLow exploitation likelihood right now — keep watching.
  • Lower severity and no public exploit yet
CISA-KEV: Not listedEPSS PROB: <0.1%CVSS: 5.3Exploit: None knownExposed services: Not assessed

A fix is available — apply it.

The default AEAD nonce provider for the PSA Internal Trusted Storage transform module, secure_storage_its_transform_aead_get_nonce() in subsys/secure_storage/src/its/transform/aead_get.c, stores its nonce counter in unsynchronized function-local static variables (s_nonce and s_nonce_initialized). Every ITS write obtains its AES-GCM or ChaCha20-Poly1305 nonce here via secure_storage_its_transform_to_store().

Because the function held no lock, two threads calling it concurrently race on the shared statics: the initialization path (psa_generate_random() followed by memcpy()) and the non-atomic increment-then-copy path can each hand the same nonce value to two distinct encryption operations, and can lose increments so the counter repeats values it was designed never to repeat. The ITS layer (secure_storage_its_set() in subsys/secure_storage/src/its/implementation.c) performs no serialization of its own, so concurrent same-UID writes reach the racy provider directly.

Reusing a nonce with the same key under AES-GCM or ChaCha20-Poly1305 is a catastrophic AEAD failure: it leaks the XOR of the two plaintexts (ITS routinely stores secrets, including PSA persistent keys) and, for GCM, exposes the authentication key, enabling forgery of stored entries. Because the AEAD key is derived per entry UID, the security-relevant collision is two concurrent writes to the same UID both receiving the same nonce; an adversary able to read the raw backing storage can then exploit the reuse.

Both ITS store back-ends shipped with Zephyr, zms.c and the settings/NVS back-end in settings.c, are log-structured flash stores with deferred garbage collection, so an entry superseded by a rewrite remains physically present in the partition until its sector is reclaimed. Two same-UID writes that race therefore leave both ciphertexts readable in the raw image at once, which is the condition the nonce reuse needs to be exploitable. The trigger remains narrow: both built-in key providers (DEVICE_ID_HASH and ENTRY_UID_HASH) salt the derived key with the entry UID, so reuse across different UIDs is harmless, and the exposure requires an application that writes the same UID concurrently from two threads.

The fix serializes the provider with a K_MUTEX_DEFINE(s_nonce_mutex) held for the duration of nonce generation.

CVSS v3
5.3
EG Score
5.3MEDIUMmedium confidence
EG Risk
24
EG Risk 24/100CISA SSVC

EG Risk is EchelonGraph's 0–100 priority score: it fuses intrinsic severity with real-world exploitation and automatability so you can rank equal-severity CVEs and fix the most dangerous first. Higher = act sooner. Distinct from the 0–10 EG Score (severity).

How it’s computed
Severity53% × 45%
Exploitation0% × 40%
Automatability0% × 15%
CISA SSVC: Track at every mission impact level.
Action: A fix is available. Apply it within your standard update timelines.
EPSS PROB
<0.1%
EPSS %ILE
below the 1st
KEV
Not listed

CISA SSVCTrack at every mission impact level.

A fix is available. Apply it within your standard update timelines.

Exploitation none (CISA Vulnrichment) · Automatable no (CISA Vulnrichment) · Technical impact partial (CISA Vulnrichment). Mission impact is CISA's Mission & Well-being decision point, and only you can judge it: high means the affected system is essential to your organisation's mission, or its compromise could cause irreversible harm to people. CISA's decision table

Published

September 21, 2026

Last Modified

September 22, 2026

Advisory Details (2)

Auto-updated Sep 21, 2026
Patch available. Sources: github_commit, github.
github Patch Available

AEAD nonce reuse in Zephyr secure_storage ITS default nonce provider due to missing thread synchronization · Advisory · zephyrproject-rtos/zephyr · GitHub

https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-23jw-7xv2-xr28
github_commit

commit dc6639730924 (zephyrproject-rtos/zephyr)

Fix landed in zephyrproject-rtos/zephyr commit dc6639730924 — awaiting tagged release

https://github.com/zephyrproject-rtos/zephyr/commit/dc66397309248271df1fd0131d68ce8ea62bf91b

Weakness Classification(2)

MITRE Common Weakness Enumeration — the root-cause categories this CVE belongs to.

Data Freshness Timeline

(refreshed 4× in last 7d / 11× in last 30d)

Each row is a source pipeline that fetched or updated this CVE on that date, with what changed. For example, "NVD update" means NVD published or revised its analysis for this CVE; "MITRE cvelistV5" means we ingested or refreshed it from the CNA feed. Most recent first.

  1. 2026-10-03 16:57 UTCEG score recompute
  2. 2026-10-03 14:25 UTCEPSS rescore
  3. 2026-10-02 14:51 UTCEG score recompute
  4. 2026-09-29 08:32 UTCEG score recompute
  5. 2026-09-25 00:05 UTCEG score recompute
  6. 2026-09-23 21:59 UTCEG score recompute
  7. 2026-09-22 16:22 UTCEG score recompute
  8. 2026-09-22 16:00 UTCEG score recompute
  9. 2026-09-21 22:27 UTCEG score recompute
  10. 2026-09-21 21:27 UTCEG score recompute
  11. 2026-09-21 21:26 UTCMITRE cvelistV5first tracked

Frequently asked(5)

What is CVE-2026-15890?
CVE-2026-15890 is a medium vulnerability published on September 21, 2026. The default AEAD nonce provider for the PSA Internal Trusted Storage transform module, securestorageitstransformaeadgetnonce() in subsys/securestorage/src/its/transform/aeadget.c, stores its nonce counter in unsynchronized function-local static variables (snonce and snonceinitialized). Every ITS…
When was CVE-2026-15890 disclosed?
CVE-2026-15890 was first published on September 21, 2026, with the most recent update on September 22, 2026. EchelonGraph re-ingests CVE updates from NVD on a 2-hour cycle, so this page reflects the latest published state.
Is CVE-2026-15890 actively exploited?
CVE-2026-15890 is not currently on CISA's Known Exploited Vulnerabilities catalog. FIRST EPSS estimates a <0.1% probability of exploitation in the next 30 days (below the 1st percentile of EPSS-scored CVEs).
What is the CVSS score of CVE-2026-15890?
CVE-2026-15890 has a CVSS base score of 5.3 (a secondary CVSS source that NVD displays; NVD's own analysis pending).
How do I remediate CVE-2026-15890?
A fix for CVE-2026-15890 is available: update to the fixed version the vendor names in its advisory.

Dependency Blast Radius

Explore the affected products and dependency analysis for CVE-2026-15890

Explore →

Is Your Infrastructure Affected by CVE-2026-15890?

EchelonGraph automatically scans your cloud infrastructure and maps CVE exposure using blast radius analysis.