CVE-2021-47391

Yüksək

Təsvir

Linux kernel-də aşağıdakı zəiflik aradan qaldırılıb: RDMA/cma: Daha çox sorğu göndərməzdən əvvəl rdma_addr_cancel()-in baş verdiyinə əmin olun FSM dairəvi şəkildə işləyərək rdma_resolve_ip()-in eyni id_priv üzərində iki dəfə çağırılmasına imkan verə bilər. Bu, iş növbəsindən keçmədən baş verə bilməsə də, eyni ünvan həlli fon sorğusunun iki dəfə aktiv ola bilməyəcəyi invariantını pozur. CPU 1 CPU 2 rdma_resolve_addr(): RDMA_CM_IDLE -> RDMA_CM_ADDR_QUERY rdma_resolve_ip(addr_handler) #1 process_one_req(): #1 üçün addr_handler(): RDMA_CM_ADDR_QUERY -> RDMA_CM_ADDR_BOUND mutex_unlock(&id_priv->handler_mutex); [.. handler hələ də işləyir ..] rdma_resolve_addr(): RDMA_CM_ADDR_BOUND -> RDMA_CM_ADDR_QUERY rdma_resolve_ip(addr_handler) !! artıq req_list-də iki sorğu var rdma_destroy_id(): destroy_id_handler_unlock(): _destroy_id(): cma_cancel_operation(): rdma_addr_cancel() // process_one_req() özünü silir spin_lock_bh(&lock); cancel_delayed_work(&req->work); if (!list_empty(&req->list)) == true ! rdma_addr_cancel() process_on_req #1 bitdikdən sonra qayıdır kfree(id_priv) process_one_req(): #2 üçün addr_handler(): mutex_lock(&id_priv->handler_mutex); !! id_priv üzərində istifadədən sonra azad etmə (use after free) rdma_addr_cancel() siyahıda bir req olmasını gözləyir və yalnız birincisini ləğv edir. İşin özünü silmə davranışı yalnız handler qayıtdıqdan sonra baş verir. Bu, req_list-in eyni "handle" üçün iki req ehtiva edə biləcəyi, lakin rdma_addr_cancel()-in yalnız birincisini ləğv etdiyi vəziyyətlər yaradır. İkinci req rdma_destroy_id()-dən sonra da aktiv qalır və qaçılmaz olaraq tetikləndikdə id_priv üzərində istifadədən sonra azad etməyə səbəb olacaq. Bunu düzəltmək üçün id_priv-in rdma_resolve_ip() çağırıb-çağırmadığını yadda saxlayın və onu yenidən çağırmazdan əvvəl həmişə ləğv edin. Bu, req_list-in heç vaxt birdən çox element ehtiva etməməsini təmin edir və bu qəribə xəta yolundan heç vaxt istifadə etməyən normal axında heç bir xərc tələb etmir.

CiddilikYüksək
CVSS7.8
İstismar ehtimalı—
MəhsulLinux Kernel
Dərc21 may 2024
İlk görülmə21 may 2024

Necə düzəltmək olar

Yeniləyin
  • linux linux_kernel5.10.188, 5.14.10 və ya daha yeni versiya

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
linux linux_kernel2.6.18 ≤ v < 5.10.188, 5.11 ≤ v < 5.14.10, 5.155.10.188, 5.14.10

Versiyanızı yoxlayın

Məhsulu seçin və istifadə etdiyiniz versiyanı yazın; versiyanın təsirlənən aralıqda olub-olmadığını görün.

Intelligence 360 paketində

Attack Surface Management

Domenlərinizə bağlı aktivləri, onlarda işləyən texnologiyaları və məlum zəiflikləri bir siyahıda görün.

CVE-2021-47391 · Linux Kernel · Dark Radar