CVE-2026-19669

Yüksek

Açıklama

drivers/fuel_gauge/fuel_gauge_syscall_handlers.c dosyasındaki kullanıcı modu syscall doğrulayıcıları z_vrfy_fuel_gauge_get_props() ve z_vrfy_fuel_gauge_set_props(), boyutları doğrudan çağırıcı tarafından sağlanan len argümanı ile belirlenen iki değişken uzunluklu dizi (VLA), union fuel_gauge_prop_val k_vals[len] ve fuel_gauge_prop_t k_props[len] tanımlamıştır. len, syscall ABI üzerinden doğrudan alınan ve doğrulanmamış bir size_t değeridir ve VLA'lar, K_SYSCALL_DRIVER_FUEL_GAUGE() nesne izin kontrolü de dahil olmak üzere herhangi bir kontrolden önce tahsis edilmiştir. Sonraki k_usermode_from_copy() çağrıları yalnızca kullanıcı kaynak tamponunun okunabilir olduğunu doğrulamıştır; çekirdek hedefi, saldırgan tarafından seçilen aynı len değeriyle boyutlandırıldığı için hiçbir zaman sınır kontrolüne tabi tutulmamıştır. CONFIG_USERSPACE etkinleştirilmiş durumdayken kullanıcı modunda çalışan herhangi bir iş parçacığı, büyük bir len değeri ile fuel_gauge_get_props() veya fuel_gauge_set_props() fonksiyonlarını çağırabilir. Bu işlem öncelikle denetleyici yığın işaretçisini (supervisor stack pointer), saldırgan tarafından seçilen rastgele bir miktarda kaydırır; Zephyr, stack-clash probing özelliği ile derlenmediği için bu kaydırmanın kendisi hata oluşturmaz ve doğrulayıcı tarafından yapılan iç içe çağrılar daha sonra ayrıcalıklı yığının altına çerçeveler (frames) yazar. Eğer çağırıcıya bir fuel-gauge cihaz nesnesine erişim izni verilmişse, k_usermode_from_copy() içerisindeki memcpy ek olarak, yığın tabanının oldukça altından başlayarak tamamen saldırgan kontrollü len * sizeof(union fuel_gauge_prop_val) bayt veri yazar. CONFIG_PRIVILEGED_STACK_SIZE varsayılan olarak 1024 bayttır, dolayısıyla yaklaşık 170'lik bir len değeri bunu zaten tüketmektedir. Sonuç, denetleyici modda, saldırgan kontrollü uzunlukta ve izin verilen yolda saldırgan kontrollü içerikle gerçekleşen bir sınır dışı yazma (out-of-bounds write) işlemidir; bu durum, kullanıcı modu sandbox'ından çekirdek belleğine sızılmasına yol açarak çekirdek kodu yürütülmesine veya sistem çökmesine neden olur. Bir yığın koruma bölgesi (stack guard region) bunu engelleyemez çünkü kopyalama işlemi korumanın altında başlar ve yukarı doğru ilerler, böylece korumaya ulaşmadan önce korunmayan belleği bozar. Düzeltme, çekirdek tarafındaki kopyaları tamamen kaldırır ve çağırıcının dizilerini, len * size çarpım taşmasını da yöneten K_SYSCALL_MEMORY_ARRAY_READ() / K_SYSCALL_MEMORY_ARRAY_WRITE() ile yerinde doğrular; ne fuel_gauge_prop_t ne de union fuel_gauge_prop_val gömülü işaretçiler içerdiğinden bu yöntem güvenlidir.

ÖnemYüksek
CVSS7.8
İstismar olasılığı—
ÜrünZephyr
Yayın11 Eki 2026
İlk görülme11 Eki 2026

Nasıl düzeltilir

Güncelleyin
  • zephyrproject zephyr4.5.0 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
zephyrproject zephyr3.4.0 ≤ v < 4.5.04.5.0

Sürümünüzü kontrol edin

Ürünü seçin ve kullandığınız sürümü yazın; sürümün etkilenen aralıkta olup olmadığını görün.

Intelligence 360 paketinde

Attack Surface Management

Alan adlarınıza bağlı varlıkları, bu varlıklarda çalışan teknolojileri ve bilinen zafiyetleri tek listede görün.

CVE-2026-19669 · Zephyr · Dark Radar