Back to the CVE list
CVE-2026-87038

Time-of-check/time-of-use double fetch in the Zephyr i3c_transfer() syscall handler allows kernel-mode control-flow hijack from user mode

CVSS score

7.0

EPSS probability

—

Risk score

0.7

Published

2 h ago

Official patch verified

Etkilenen ürün ve sürüm için yayımlanan güvenlik güncellemesini uygulayın.

Impact on My Inventory

Only the personal products you have added to your account are assessed; an organisation's inventory does not appear here.

Checking session…

Vulnerability description

DayBreach AI Explanation

Verified against sources

Zephyr i3c_transfer() double-fetch enables kernel-mode code execution

Sources read

2

Source agreement

Tam uyum

Evidence confidence

%63

Short explanation

In Zephyr 3.2.0‑4.3.2 and 4.4.0‑4.5.0 builds with CONFIG_USERSPACE and an I3C driver, the i3c_transfer() syscall contains a TOCTOU double fetch that creates a race window. An attacker controlling two threads in the same memory domain can modify the descriptor.bus field and achieve kernel-mode code execution.

Why does it matter?

An unprivileged user process can obtain kernel privileges, fully compromising system security.

What should be done?

  • Apply the patch commit 550437b from Zephyr project
  • Upgrade Zephyr to a version containing the fix (see advisory GHSA‑86xj‑2q6x‑h82w)
  • Disable CONFIG_USERSPACE or the I3C driver if patch cannot be applied
  • Monitor Zephyr security advisories for updates
Chain of evidence and sources3 verified claims

CVE-2026-87038, CVSS 7 (Yüksek) puanlı bir çift okuma (TOCTOU) hatasıdır ve çekirdek‑modu kod yürütmesine izin verir.

Zephyr projesi, hatayı gidermek için 550437b commit’inde bir yama yayınlamıştır; yama mevcut (patch_assessment AVAILABLE).

CVE, CISA KEV listesinde yer almamaktadır; aktif istismar raporlanmamıştır.

Show the technical text from the sources

The user-mode verification handler for the i3c_transfer() system call, z_vrfy_i3c_transfer() in drivers/i3c/i3c_handlers.c, validated the caller-supplied struct i3c_device_desc in place instead of snapshotting it. It confirmed only that the descriptor was readable by the calling thread (K_SYSCALL_MEMORY_READ()), read target->bus once to check it with K_SYSCALL_OBJ(), and then passed the caller's live pointer down. The implementation z_impl_i3c_transfer() re-reads target->bus from that user memory and dispatches through it as DEVICE_API_GET(i3c, target->bus)->i3c_xfers(...), so the bus that was validated is not necessarily the bus that is used. DEVICE_API_GET() performs no runtime type check outside CONFIG_DEVICE_API_ASSERT builds. On a build with CONFIG_USERSPACE and an I3C controller driver, a user thread that has been granted an I3C device object can exploit this with a second thread in the same memory domain: one thread calls i3c_transfer() while the other rewrites the bus field of the descriptor. The window between the check and the use spans the num_msgs validation, the message-array access check, a stack VLA allocation and a memcpy() of up to 32 struct i3c_msg, so the race is repeatable and can simply be retried until it lands. When the substitution succeeds, the kernel dereferences an attacker-chosen pointer as a struct device, loads a function pointer from the attacker-controlled api table and calls it in supervisor mode with attacker-influenced arguments. This yields kernel-mode code execution from an unprivileged user thread — a complete escape of the userspace memory-protection sandbox; lesser outcomes are an arbitrary two-level kernel read or a kernel fault. Builds without CONFIG_USERSPACE, or without an I3C driver, are unaffected. The fix copies the descriptor into a kernel-stack local with k_usermode_from_copy(), validates the bus in that copy, and dispatches on the copy, so the validated value is provably the value used.

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

CWE: CWE-367

This explanation was compiled automatically from the source records. Scores, active exploitation, patch and exploit status come straight from the sources.

IMPACT: Affected Products and Software

Affected Products

The following products are affected by CVE-2026-87038 vulnerability. Where our threat engine knows the exact affected versions, they are listed below.

IDVENDORPRODUCTACTION
1zephyrprojectzephyr View
Total affected vendors: 1|Products: 1

RED HAT CSAF/VEX: Product Impact Check

Red Hat has not yet published a CSAF/VEX impact record for this CVE. This does not mean “not affected”.

SCORING: CVSS from Multiple Sources

CVSS Scores

The Common Vulnerability Scoring System is a standardised framework for assessing the severity of vulnerabilities in software and systems. We collect and display CVSS scores from several sources for each CVE.

SCOREVERSIONSEVERITYVECTORSOURCE
7.0CVSS V31HIGHCVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:HNVD
7.0CVSS V3_1HIGHCVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:HCVE CNA

Patch and Remediation Guide

Solution & Remediation Advisory

Patch verified

2 doğrulanmış yama veya düzeltilmiş sürüm kanıtı bulundu.

cvelist

Fix commit

Open source
reference

Fix commit

Open source
Confirm the affected product and version against the source evidence above.
Restrict access to internet-facing services and apply network segmentation.
Apply the official update named in the evidence only to the matching product and version.
Monitor server logs and network endpoints for signs of anomalous execution.

Public exploit and active exploitation status

Verified exploit intelligence

No verified public PoC, exploit repository or Metasploit module has been found for this CVE yet.

Weakness Classification and Attack Patterns (CWE & CAPEC)

CWE - Common Weakness Enumeration

While CVE identifies specific instances of vulnerabilities, CWE categorises the common flaws or weaknesses that can lead to vulnerabilities. CVE-2026-87038 is associated with the following CWEs:

Common Attack Pattern Enumeration and Classification (CAPEC)

Common Attack Pattern Enumeration and Classification (CAPEC) stores attack patterns, which are descriptions of the common attributes and approaches employed by adversaries to exploit the CVE-2026-87038 weaknesses.

Attack Vector and Accessibility

ExposureYerel erişim
PermissionsLow
UserGerekmiyor

Official Sources and Advisories

CVSS Vector Radar Chart

7.0 / 10
Attack VectorLocalComplexityHighPrivilegesLowUser Interact.NoneConfidentialityHighIntegrityNoneAvailabilityHigh

Vulnerability Scoring Details

CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
Attack VectorLocal
Attack ComplexityHigh
Privileges RequiredLow privileges
User InteractionNone required
Confidentiality (Gizlilik)High
Integrity (Bütünlük)None
Availability (Erişilebilirlik)High

Yama doğrulandı

2 doğrulanmış yama veya düzeltilmiş sürüm kanıtı bulundu.

Follow the vendor

Weakness Type (CWE & CAPEC)

Similar Vulnerabilities

Get this vulnerability through the API

Affected products, version ranges, exploitation status and patch information in a single request, with a free key.

curl -H "x-api-key: $DAYBREACH_API_KEY" \
  "https://api.daybreach.dev/api/v1/intel/cves/CVE-2026-87038"
CVE-2026-87038 · Time-of-check/time-of-use double fetch in…