CVE-2023-53623
Açıklama
Linux çekirdeğinde aşağıdaki güvenlik açığı giderilmiştir: mm/swap: swapoff ile get_swap_pages() arasındaki swap_info_struct yarış durumunu düzelt si, kullanılabilir listeden silinirken si->lock tutulmalıdır. Aksi takdirde başka bir iş parçacığı si'yi kullanılabilir listeye yeniden ekleyebilir ve bu da bellek bozulmasına yol açabilir. Bunun meydana geldiğini tespit ettiğimiz tek yer swapoff yoludur. Bu durum aşağıdaki gibi açıklanabilir: core 0 core 1 swapoff del_from_avail_list(si) bekliyor si->lock kilitlemeyi dene swap_avail_lock edin ve si'yi swap_avail_head içine yeniden ekle si->lock edinir ancak si'nin zaten yeniden eklendiğini kaçırır ve SWP_WRITEOK vb. temizlemeye devam eder. Bazı özel durumlarda, örneğin dokunulmuş bellek blokları üzerinde eşzamanlı olarak madvise(MADV_PAGEOUT) çağırırken aynı zamanda çok sayıda swapon-swapoff işlemi (ör. stress-ng-swap) çalıştırıldığında, get_swap_pages() içinde çok sayıda uyarı mesajının tetiklenebildiği kolayca görülebilir. Ancak en kötü durumda, yukarıdaki senaryo paniğe neden olabilir. swapoff() içinde, bir swap kapatıldıktan sonra si tarafından kullanılan bellek swap_info[] içinde tutulabilir. Bu, bellek bozulmasının hemen meydana gelmeyeceği, ancak swapon yolunda yeni bir swap için ayrılıp sıfırlanana kadar gerçekleşmeyeceği anlamına gelir. Neden olduğu panik mesajı: (CONFIG_PLIST_DEBUG etkinleştirilmişken) ------------[ cut here ]------------ top: 00000000e58a3003, n: 0000000013e75cda, p: 000000008cd4451a prev: 0000000035b1e58a, n: 000000008cd4451a, p: 000000002150ee8d next: 000000008cd4451a, n: 000000008cd4451a, p: 000000008cd4451a WARNING: CPU: 21 PID: 1843 at lib/plist.c:60 plist_check_prev_next_node+0x50/0x70 Modules linked in: rfkill(E) crct10dif_ce(E)... CPU: 21 PID: 1843 Comm: stress-ng Kdump: ... 5.10.134+ Hardware name: Alibaba Cloud ECS, BIOS 0.0.0 02/06/2015 pstate: 60400005 (nZCv daif +PAN -UAO -TCO BTYPE=--) pc : plist_check_prev_next_node+0x50/0x70 lr : plist_check_prev_next_node+0x50/0x70 sp : ffff0018009d3c30 x29: ffff0018009d3c40 x28: ffff800011b32a98 x27: 0000000000000000 x26: ffff001803908000 x25: ffff8000128ea088 x24: ffff800011b32a48 x23: 0000000000000028 x22: ffff001800875c00 x21: ffff800010f9e520 x20: ffff001800875c00 x19: ffff001800fdc6e0 x18: 0000000000000030 x17: 0000000000000000 x16: 0000000000000000 x15: 0736076307640766 x14: 0730073007380731 x13: 0736076307640766 x12: 0730073007380731 x11: 000000000004058d x10: 0000000085a85b76 x9 : ffff8000101436e4 x8 : ffff800011c8ce08 x7 : 0000000000000000 x6 : 0000000000000001 x5 : ffff0017df9ed338 x4 : 0000000000000001 x3 : ffff8017ce62a000 x2 : ffff0017df9ed340 x1 : 0000000000000000 x0 : 0000000000000000 Call trace: plist_check_prev_next_node+0x50/0x70 plist_check_head+0x80/0xf0 plist_add+0x28/0x140 add_to_avail_list+0x9c/0xf0 _enable_swap_info+0x78/0xb4 __do_sys_swapon+0x918/0xa10 __arm64_sys_swapon+0x20/0x30 el0_svc_common+0x8c/0x220 do_el0_svc+0x2c/0x90 el0_svc+0x1c/0x30 el0_sync_handler+0xa8/0xb0 el0_sync+0x148/0x180 irq event stamp: 2082270 Artık, diğer iş parçacığının si'nin silindiğini ve SWP_WRITEOK'un birlikte temizlendiğini görmesini ve yeniden eklememesi için 'del_from_avail_list()' çağrılmadan önce si->lock kilitlenir. Bu sorun stable 5.10.y sonrası sürümlerde mevcuttur.
Nasıl düzeltilir
- linux linux_kernel4.14.313, 4.19.281, 5.4.241, 5.10.178, 5.15.107, 6.1.24, 6.2.11 ya da sonraki bir sürüm
- git.kernel.org/stable/c/111a79d9b92f0a679fe300ccd3119ae9741f3d54
- git.kernel.org/stable/c/4bdf1514b4268d29360ba9e43becdd49955bc7ae
- git.kernel.org/stable/c/6fe7d6b992113719e96744d974212df3fcddc76c
- git.kernel.org/stable/c/85cc118ce6f1a627901b6db50c9d01f2ad78cdbf
- git.kernel.org/stable/c/a55f268abdb74ac5633b75a09fefb58458e9d2a2
- git.kernel.org/stable/c/b9927d3a60ca9ed35625470888629c074e687ba0
- git.kernel.org/stable/c/e7bba7ddb4318d5ea939c8db747c2c2780ab66f4
- git.kernel.org/stable/c/ea8c42b3b6d95ced3a4f555f04686d00ef0bb206
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| linux linux_kernel | 4.14 ≤ v < 4.14.313, 4.15 ≤ v < 4.19.281, 4.20 ≤ v < 5.4.241, 5.5 ≤ v < 5.10.178, 5.11 ≤ v < 5.15.107, 5.16 ≤ v < 6.1.24, 6.2 ≤ v < 6.2.11, 6.3 | 4.14.313, 4.19.281, 5.4.241, 5.10.178, 5.15.107, 6.1.24, 6.2.11 |
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.