CVE-2024-50254
Açıklama
Linux çekirdeğinde aşağıdaki güvenlik açığı giderilmiştir: bpf: bpf_iter_bits_destroy() içinde dinamik olarak ayrılan bitleri serbest bırakma bpf_iter_bits_destroy(), bitlerin dinamik olarak ayrılıp ayrılmadığını kontrol etmek için "kit->nr_bits <= 64" ifadesini kullanır. Ancak bu kontrol hatalıdır ve aşağıda gösterildiği gibi bir kmemleak'e neden olabilir: unreferenced object 0xffff88812628c8c0 (size 32): comm "swapper/0", pid 1, jiffies 4294727320 hex dump (first 32 bytes): b0 c1 55 f5 81 88 ff ff f0 f0 f0 f0 f0 f0 f0 f0 ..U........... f0 f0 f0 f0 f0 f0 f0 f0 00 00 00 00 00 00 00 00 .............. backtrace (crc 781e32cc): [<00000000c452b4ab>] kmemleak_alloc+0x4b/0x80 [<0000000004e09f80>] __kmalloc_node_noprof+0x480/0x5c0 [<00000000597124d6>] __alloc.isra.0+0x89/0xb0 [<000000004ebfffcd>] alloc_bulk+0x2af/0x720 [<00000000d9c10145>] prefill_mem_cache+0x7f/0xb0 [<00000000ff9738ff>] bpf_mem_alloc_init+0x3e2/0x610 [<000000008b616eac>] bpf_global_ma_init+0x19/0x30 [<00000000fc473efc>] do_one_initcall+0xd3/0x3c0 [<00000000ec81498c>] kernel_init_freeable+0x66a/0x940 [<00000000b119f72f>] kernel_init+0x20/0x160 [<00000000f11ac9a7>] ret_from_fork+0x3c/0x70 [<0000000004671da4>] ret_from_fork_asm+0x1a/0x30 Bunun nedeni, tüm bitler yinelendikten sonra bpf_iter_bits_next() içinde nr_bits değerinin sıfır olarak ayarlanmasıdır. Sorunu, bpf_iter_bits_next() içinde yineleme tamamlandığında kit->nr_bits değerini sıfıra ayarlamak yerine kit->bit değerini kit->nr_bits olarak ayarlayarak düzeltin. Ayrıca, yinelemenin tamamlanıp tamamlanmadığını kontrol etmek için "!nr_bits || bits >= nr_bits" ifadesini kullanın ve bitlerin dinamik olarak ayrılıp ayrılmadığını belirtmek için hâlâ "nr_bits > 64" ifadesini kullanın. "!nr_bits" kontrolü gereklidir çünkü bpf_iter_bits_new(), kit->nr_bits değerini ayarlamadan önce başarısız olabilir ve bu koşul, sıfırlanmış veya serbest bırakılmış kit->bits'e erişmek yerine yinelemeyi erken durdurur. kit->bits'in başlangıç değerinin -1 ve kit->nr_bits'in türünün unsigned int olması göz önüne alındığında, kit->nr_bits'in türünü int olarak değiştirin. Olası taşma sorunu sonraki yamada ele alınacaktır.
Nasıl düzeltilir
- linux linux_kernel6.11.7 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.11 ≤ v < 6.11.7, 6.12 | 6.11.7 |
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.