CVE-2026-46690
Awaiting Analysis Awaiting Analysis - Queue
Unbounded OOB Read in unbounded_spsc Queue

Publication date: 2026-06-12

Last updated on: 2026-06-12

Assigner: GitHub, Inc.

Description
unbounded_spsc is an "unbounded" extension of bounded_spsc_queue. In versions 0.2.0 and prior, sender::send pointer-as-value transmute causes OOB read and fake-Arc drop under TX/RX race. At time of publication, there are no publicly available patches.
CVSS Scores
EPSS Scores
Probability:
Percentile:
Meta Information
Published
2026-06-12
Last Modified
2026-06-12
Generated
2026-06-12
AI Q&A
2026-06-12
EPSS Evaluated
N/A
NVD
EUVD
Affected Vendors & Products
Currently, no data is known.
Helpful Resources
Exploitability
CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-787 The product writes data past the end, or before the beginning, of the intended buffer.
CWE-125 The product reads data past the end, or before the beginning, of the intended buffer.
CWE-415 The product calls free() twice on the same memory address.
CWE-704 The product does not correctly convert an object, resource, or structure from one type to a different type.
Attack-Flow Graph
AI Quick Actions
Instant insights powered by AI
Compliance Impact

CVE-2026-46690 causes memory safety issues including out-of-bounds reads and writes, allocator corruption, and potential arbitrary code execution. These impacts affect confidentiality, integrity, and availability of data handled by the affected software.

Such impacts on confidentiality and integrity could lead to non-compliance with standards and regulations like GDPR and HIPAA, which require protection of sensitive data and system reliability.

However, there is no explicit mention in the provided resources about direct compliance violations or regulatory impacts.

Executive Summary

CVE-2026-46690 affects the unbounded-spsc crate (versions 0.2.0 and prior) and involves a critical memory safety vulnerability in the Sender::send function.

The issue arises from an unsafe transmute operation that incorrectly converts a raw pointer to a Producer<T> into a Consumer<T>, leading to severe consequences.

This vulnerability is triggered by a race condition between a sender thread calling tx.send(msg) and a receiver thread dropping the receiver (rx.drop()).

When this race occurs, the sender enters an unsafe block that misinterprets memory, causing an out-of-bounds (OOB) read and creating a fake Consumer<T> that reads memory adjacent to the Sender<T> struct.

Additionally, when the fake Consumer<T> is dropped, it incorrectly decrements a counter that is actually part of the Sender's internal Arc pointer, resulting in double-free or memory corruption.

This can cause segmentation faults or immediate aborts in hardened allocators, and the flaw is reachable from 100% safe Rust code through the standard channel pattern.

Impact Analysis

The vulnerability can lead to out-of-bounds reads and writes, allocator corruption, and potential arbitrary code execution due to memory corruption.

It can cause segmentation faults or immediate program aborts, impacting the availability of the affected software.

The CVSS score of 5.8 indicates a moderate severity with impacts on confidentiality, integrity, and availability.

Detection Guidance

This vulnerability arises from a race condition in the `unbounded-spsc` crate's `Sender::send` function, causing out-of-bounds reads and memory corruption. Detection involves monitoring for symptoms such as segmentation faults, allocator aborts, or unexpected panics related to message sending and receiver dropping in Rust applications using this crate.

Since the issue is triggered by a race condition in Rust code, direct network detection commands are not applicable. Instead, detection should focus on runtime behavior and logs of the affected application.

Suggested commands to help detect issues related to this vulnerability include:

  • Using Rust's built-in thread sanitizer (TSAN) to detect data races during testing: `cargo +nightly test -- --test-threads=1` with TSAN enabled.
  • Monitoring application logs for segmentation faults or aborts.
  • Using system tools like `dmesg` or `journalctl` to check for kernel messages related to memory corruption or crashes.
  • Running the regression test provided in the patch to verify if the race condition can be reproduced.
Mitigation Strategies

At the time of publication, there are no publicly available patches for this vulnerability.

Immediate mitigation steps include:

  • Avoid using versions 0.2.0 and prior of the `unbounded-spsc` crate in your projects.
  • If possible, refactor code to avoid the race condition by ensuring the sender does not send messages concurrently with the receiver being dropped.
  • Monitor application behavior closely for crashes or memory corruption symptoms.
  • Apply the suggested fix from the advisory when it becomes available, which involves replacing the pointer-as-value transmute with a safer value-level read using `ptr::read` and `ManuallyDrop` or restructuring the `Sender<T>` to avoid unsafe transmute.
Chat Assistant
Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-46690. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70
EPSS Chart