CVE-2026-80575
Açıklama
Linux çekirdeğinde aşağıdaki güvenlik açığı giderilmiştir: Input: cs40l50-vibra - kullanıcı alanından gelen özel verileri doğrula cs40l50_add(), FF_PERIODIC/FF_CUSTOM efektinin özel verilerini, kullanıcının EVIOCSFF'e ilettiği ff_effect'ten doğrudan kopyalar ve bu verilerin herhangi bir içerik barındırmasını gerektirmez: work_data.custom_data = memdup_array_user(periodic->custom_data, periodic->custom_len, sizeof(s16)); work_data.custom_len = periodic->custom_len; Sürücü daha sonra bu arabellekten iki kelime okur: cs40l50_effect_bank_set() içinde dalga formu bankası olarak custom_data[0] ve cs40l50_effect_index_set() içinde banka içindeki dizin olarak custom_data[1]. Hiçbir okuma bir uzunluk denetimiyle korunmaz ve custom_len tamamen kullanıcı denetimindedir: - custom_len == 0, memdup_array_user() işlevinin memdup_user() işlevini sıfır uzunlukla çağırmasına neden olur; bu da hata yerine ZERO_SIZE_PTR döndürür, dolayısıyla custom_data[0] bu işaretçiyi başvuruyla çözer. - custom_len == 1 iki bayt ayırır. ROM veya RAM bankası, effect->type değerini OWT durumunun dışında tutar ve ardından custom_data[1] ayırmanın bir kelime ötesinden okunur. Banka değerinin kendisi de yanlış işlenir. CS40L50_CUSTOM_DATA_MASK (0xffff) ile maskelenir ancak bir s16 içinde saklanır, bu nedenle 0x8000 veya üzeri bir custom_data[0] değeri, "bank_type >= CS40L50_WVFRM_BANK_NUM" testini geçen negatif bir değere dönüşür. cs40l50_effect_index_set(), switch deyiminin default durumu bunu reddetme fırsatı bulamadan vib->dsp.banks[] dizisini bu değerle indeksler: base_index = vib->dsp.banks[effect->type].base_index; max_index = vib->dsp.banks[effect->type].max_index; Sürücünün okuduğu iki kelimenin mevcut olmasını zorunlu kıl ve maskelenmiş bankayı bir u32 içinde tut, böylece mevcut üst sınır testi tüm aralığı kapsasın. da7280 dokunsal geri bildirim sürücüsü custom_len değerini zaten bu şekilde aralık denetiminden geçirir.
Nasıl düzeltilir
- Linux Linux3855b6a11f8a7aceb8181cc08c99afef58517006, 52a818c586ae2c36b7324bfaefb547f5e866a8ae, d38554602a0b04e85fad28ce72c7500cf50d419b, 7d5c576cb1c86047b1fcb1aa9532e17fc5e46c1d ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| Linux Linux | c38fe1bb5d21c2ce0857965ee06174ee587d6b42 ≤ v < 3855b6a11f8a7aceb8181cc08c99afef58517006, c38fe1bb5d21c2ce0857965ee06174ee587d6b42 ≤ v < 52a818c586ae2c36b7324bfaefb547f5e866a8ae, c38fe1bb5d21c2ce0857965ee06174ee587d6b42 ≤ v < d38554602a0b04e85fad28ce72c7500cf50d419b, c38fe1bb5d21c2ce0857965ee06174ee587d6b42 ≤ v < 7d5c576cb1c86047b1fcb1aa9532e17fc5e46c1d, 6.11 | 3855b6a11f8a7aceb8181cc08c99afef58517006, 52a818c586ae2c36b7324bfaefb547f5e866a8ae, d38554602a0b04e85fad28ce72c7500cf50d419b, 7d5c576cb1c86047b1fcb1aa9532e17fc5e46c1d |
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.
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.