CVE-2024-42271
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: net/iucv: iucv_sock_close() fonksiyonundaki serbest bırakıldıktan sonra kullanım (use after free) hatası düzeltildi iucv_sever_path() hem süreç bağlamından (process context) hem de bh bağlamından çağrılmaktadır. iucv->path, yolun kesilmesiyle başka birinin ilgilenip ilgilenmediğini (veya yolun zaten kaldırılmış olduğunu / hiç var olmadığını) belirten bir gösterge olarak kullanılır. Bunun atomik karşılaştır ve değiştir (atomic compare and swap) işlemi ile yapılması gerekir; aksi takdirde iucv_sock_close(), iucv_tasklet_fn() tarafından çağrılan iucv_callback_connrej() aracılığıyla halihazırda kesilmiş ve serbest bırakılmış bir yol üzerinde işlemeye çalışacağı küçük bir zaman aralığı oluşur. Örnek: [452744.123844] Call Trace: [452744.123845] ([<0000001e87f03880>] 0x1e87f03880) [452744.123966] [<00000000d593001e>] iucv_path_sever+0x96/0x138 [452744.124330] [<000003ff801ddbca>] iucv_sever_path+0xc2/0xd0 [af_iucv] [452744.124336] [<000003ff801e01b6>] iucv_sock_close+0xa6/0x310 [af_iucv] [452744.124341] [<000003ff801e08cc>] iucv_sock_release+0x3c/0xd0 [af_iucv] [452744.124345] [<00000000d574794e>] __sock_release+0x5e/0xe8 [452744.124815] [<00000000d5747a0c>] sock_close+0x34/0x48 [452744.124820] [<00000000d5421642>] __fput+0xba/0x268 [452744.124826] [<00000000d51b382c>] task_work_run+0xbc/0xf0 [452744.124832] [<00000000d5145710>] do_notify_resume+0x88/0x90 [452744.124841] [<00000000d5978096>] system_call+0xe2/0x2c8 [452744.125319] Last Breaking-Event-Address: [452744.125321] [<00000000d5930018>] iucv_path_sever+0x90/0x138 [452744.125324] [452744.125325] Kernel panic - not syncing: Fatal exception in interrupt bh_lock_sock() fonksiyonunun, sock_owned_by_user() kontrolü ve ilgili işlemenin eksik olması nedeniyle, tasklet bağlamını süreç bağlamına karşı serileştirmediğine dikkat edilmelidir. Gelecekteki temizleme yamaları için fikirler: A) Gerektiğinde Re-enqueue kısmında açıklandığı gibi, tasklet bağlamında bh_lock_sock() kullanımı düzeltilmelidir. Bu durum, tasklet fonksiyonlarına dönüş değerleri eklenmesini ve dolayısıyla tüm iucv kullanıcılarında değişiklik yapılmasını gerektirebilir. B) iucv tasklet'i bir worker'a dönüştürülmeli ve af_iucv içinde yalnızca lock_sock() kullanılmalıdır.
Nasıl düzeltilir
- linux linux_kernel4.19.320, 5.4.282, 5.10.224, 5.15.165, 6.1.104, 6.6.45, 6.10.4 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 | 3.4 ≤ v < 4.19.320, 4.20 ≤ v < 5.4.282, 5.5 ≤ v < 5.10.224, 5.11 ≤ v < 5.15.165, 5.16 ≤ v < 6.1.104, 6.2 ≤ v < 6.6.45, 6.7 ≤ v < 6.10.4, 6.11 | 4.19.320, 5.4.282, 5.10.224, 5.15.165, 6.1.104, 6.6.45, 6.10.4 |
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.