CVE-2024-36892
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: mm/slub: tekli serbest bırakma işlemi için nesne dışı freepointer sıfırlamasından kaçının 284f17ac13fe numaralı commit ("mm/slub: handle bulk and single object freeing separately"), tekli ve toplu nesne serbest bırakma işlemlerini slab_free() ve slab_free_bulk() şeklinde iki ayrı fonksiyona ayırmıştır; bu durum slab_free()'nin slab_free_freelist_hook() yerine doğrudan slab_free_hook() fonksiyonunu çağırmasına yol açmaktadır. Eğer `init_on_free` ayarlıysa, slab_free_hook() nesneyi sıfırlar. Ardından, eğer `slub_debug=F` ve `CONFIG_SLAB_FREELIST_HARDENED` ayarları etkinse, do_slab_free() yavaş yolu (slowpath) freelist tutarlılık kontrollerini yürütür ve sıfırlanmış bir freepointer'ı çözmeye çalışır; bu da check_object() içerisinde "Freepointer corrupt" tespitine neden olur. Toplu serbest bırakma sırasında, slab_free_freelist_hook() etkilenmez çünkü `init_on_free` işleminden sonra yeniden oluşturulan freelist yapısını korumak için her zaman set_freepointer() kullanarak nesnelerin freepointer değerlerini ayarlar. Tekli serbest bırakma için, `init_on_free` ayarlı olduğunda, nesnenin freepointer değeri nesne dışında saklanıyorsa sıfırlamadan kaçınılmalıdır. Freepointer olduğu gibi bırakılırsa, check_object() daha sonra nesne taşması nedeniyle geçersiz bir işaretçi değeri tespit edebilir. Yeniden üretmek için, `CONFIG_SLAB_FREELIST_HARDENED=y` ile derlenmiş bir çekirdeğin komut satırında `slub_debug=FU init_on_free=1 log_level=7` ayarlarını yapılandırın. dmesg örnek günlüğü: [ 10.708715] ============================================================================= [ 10.710323] BUG kmalloc-rnd-05-32 (Tainted: G B T ): Freepointer corrupt [ 10.712695] ----------------------------------------------------------------------------- [ 10.712695] [ 10.712695] Slab 0xffffd8bdc400d580 objects=32 used=4 fp=0xffff9d9a80356f80 flags=0x200000000000a00(workingset|slab|node=0|zone=2) [ 10.716698] Object 0xffff9d9a80356600 @offset=1536 fp=0x7ee4f480ce0ecd7c [ 10.716698] [ 10.716698] Bytes b4 ffff9d9a803565f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ [ 10.720703] Object ffff9d9a80356600: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ [ 10.720703] Object ffff9d9a80356610: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ [ 10.724696] Padding ffff9d9a8035666c: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ [ 10.724696] Padding ffff9d9a8035667c: 00 00 00 00 .... [ 10.724696] FIX kmalloc-rnd-05-32: Object at 0xffff9d9a80356600 not freed
Nasıl düzeltilir
- linux linux_kernel6.8.10 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| linux linux_kernel | 6.8 ≤ v < 6.8.10, 6.9 | 6.8.10 |
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.