Use-after-free via dynamically allocated message queue retained by the CAN RX filter
CVSS Skor
8.8
EPSS İhtimal
—
Risk Skoru
0.9
Yayın
5 sa önce
Etkilenen ürün ve sürüm için yayımlanan güvenlik güncellemesini uygulayın.
Envanterimdeki Etkisi
Yalnızca hesabınıza eklediğiniz kişisel ürünler değerlendirilir; kurumsal envanter burada görünmez.
Oturum kontrol ediliyor…
Zafiyet Açıklaması
DayBreach AI Açıklaması
Kaynakla doğrulandıOkunan kaynak
1
Kaynak uyumu
Tam uyum
Kanıt güveni
%55
Kısa açıklama
Zephyr projesindeki can_add_rx_filter_msgq() sistem çağrısı, dinamik olarak ayrılmış mesaj kuyruklarının yaşam döngüsünün çekirdek tarafından takip edilmemesi nedeniyle bir kullanım sonrası serbest bırakma (use-after-free) zafiyetine açıktır. Ayrıcalıksız bir kullanıcı modu iş parçacığı, çekirdek yığınında bozulmaya yol açabilecek şekilde bu açığı istismar edebilir.
Bu zafiyet, CONFIG_USERSPACE=y ve CONFIG_DYNAMIC_OBJECTS=y yapılandırmalarına sahip sistemlerde ayrıcalıksız bir kullanıcının çekirdek yığınını bozmasına ve kullanıcı ile çekirdek modu izolasyonunu aşmasına olanak tanır.
Ne yapılmalı?
- Kuyruğu K_SYSCALL_OBJ_STATIC() ile doğrulayan düzeltmeyi uygulayın
- Yalnızca statik olarak tanımlanmış kuyrukların (CAN_MSGQ_DEFINE()) kullanıcı modundan kaydedilmesini sağlayın
- Satıcı danışmanlıklarını ve yama referanslarını takip edin
Kanıt zinciri ve kaynaklar
can_add_rx_filter_msgq() sistem çağrısı, dinamik olarak ayrılmış mesaj kuyruğu işaretçisini tutar ancak nesne ömrünü doğrulamadığı için kullanım sonrası serbest bırakma zafiyetine neden olur.
Zafiyet, CONFIG_USERSPACE=y ve CONFIG_DYNAMIC_OBJECTS=y yapılandırmalarında ayrıcalıksız bir kullanıcı modu iş parçacığının çekirdek yığınını bozmasına olanak tanır.
Sorun, kuyruğu nesne bayraklarını reddeden K_SYSCALL_OBJ_STATIC() ile doğrulayarak çözülür.
Kaynaklardaki teknik metni göster
The can_add_rx_filter_msgq() system call installs a CAN RX filter whose callback (can_msgq_put() in drivers/can/can_common.c) is handed the caller's struct k_msgq * as user_data. The controller driver stores that raw pointer in its filter table and dereferences it from the RX path every time a matching frame arrives. The system call verifier z_vrfy_can_add_rx_filter_msgq() in drivers/can/can_handlers.c validated the queue only with K_SYSCALL_OBJ(), which is a point-in-time check of type, initialization and caller permission and says nothing about the object's lifetime. On a build with CONFIG_USERSPACE=y and CONFIG_DYNAMIC_OBJECTS=y, an unprivileged user-mode thread that has been granted access to a CAN device can obtain a message queue whose lifetime it fully controls: k_object_alloc(K_OBJ_MSGQ) followed by k_msgq_alloc_init(). The lifetime of such an object is driven solely by its permission bitmask, and a pointer retained by the kernel is not represented there. After registering the filter, the thread calls k_object_release() — or simply terminates — and unref_check() frees the struct k_msgq storage while the CAN driver still holds the pointer. The next matching CAN frame causes k_msgq_put() to run in supervisor context against freed memory that the attacker can have groomed with another kernel allocation: the frame payload is memcpy()d through the reused block's write_ptr, and the queue's wait_q (and poll_events under CONFIG_POLL) list nodes are manipulated. This yields kernel-heap corruption reachable from a user-mode thread, defeating the isolation CONFIG_USERSPACE is intended to provide; the same dangling pointer also arises benignly when an application thread exits without calling can_remove_rx_filter(). The fix validates the queue with K_SYSCALL_OBJ_STATIC(), which additionally rejects objects carrying K_OBJ_FLAG_ALLOC, so only statically defined queues (CAN_MSGQ_DEFINE()) may be registered from user mode. Supervisor-mode callers bypass the verifier and must themselves keep the queue valid until the filter is removed.
CVSS vektörü: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
CWE: CWE-416
Açıklama kaynak kayıtlardan otomatik derlendi. Puanlar, aktif sömürü, yama ve exploit durumları doğrudan kaynaklardan gelir.
IMPACT — Etkilenen Ürünler ve Yazılımlar
Affected Products
The following products are affected by CVE-2026-85035 vulnerability. Even if our threat engine is aware of the exact versions of the products that are affected, the information is represented below.
| ID | VENDOR | PRODUCT | ACTION |
|---|---|---|---|
| 1 | zephyrproject | zephyr | İncele |
RED HAT CSAF/VEX — Ürün Etki Kontrolü
SCORING — CVSS Çoklu Kaynak Skoru
CVSS Scores
The Common Vulnerability Scoring System is a standardized framework for assessing the severity of vulnerabilities in software and systems. We collect and display CVSS scores from various sources for each CVE.
| SCORE | VERSION | SEVERITY | VECTOR | SOURCE |
|---|---|---|---|---|
| 8.8 | CVSS V3_1 | HIGH | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H | CVE CNA |
| 8.8 | CVSS V31 | HIGH | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H | NVD |
Yama ve İyileştirme Rehberi (Solution)
Solution & Remediation Advisory
2 doğrulanmış yama veya düzeltilmiş sürüm kanıtı bulundu.
Public exploit ve aktif sömürü durumu
Doğrulanmış exploit istihbaratı
Bu CVE için henüz doğrulanmış public PoC, exploit repository’si veya Metasploit modülü bulunamadı.
Zafiyet Dağılımı ve Saldırı Kalıpları (CWE & CAPEC)
CWE - Common Weakness Enumeration
While CVE identifies specific instances of vulnerabilities, CWE categorizes the common flaws or weaknesses that can lead to vulnerabilities. CVE-2026-85035 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-85035 weaknesses.
Saldırı Vektörü ve Erişilebilirlik Karakteristiği
Resmi Kaynaklar ve Danışma Bültenleri
CVSS Vektör Radar Grafiği
8.8 / 10Vulnerability Scoring Details
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:HYama doğrulandı
Zafiyet Türü (CWE & CAPEC)
İlgili Benzer Açıklar
Bu açığı API ile alın
Etkilenen ürünler, sürüm aralıkları, istismar durumu ve yama bilgisi tek istekte; ücretsiz anahtarla.
curl -H "x-api-key: $DAYBREACH_API_KEY" \ "https://api.daybreach.dev/api/v1/intel/cves/CVE-2026-85035"