CVE-2021-47391

Yüksek

Açıklama

Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: RDMA/cma: Daha fazla istek gönderilmeden önce rdma_addr_cancel() işleminin gerçekleştiğinden emin olun FSM döngüsel olarak çalışarak rdma_resolve_ip() fonksiyonunun aynı id_priv üzerinde iki kez çağrılmasına izin verebilir. Bu durum işleme girmeden gerçekleşemese de, aynı adres çözümleme arka plan isteğinin iki kez aktif olamayacağı kuralını ihlal eder. CPU 1 CPU 2 rdma_resolve_addr(): RDMA_CM_IDLE -> RDMA_CM_ADDR_QUERY rdma_resolve_ip(addr_handler) #1 process_one_req(): #1 için addr_handler(): RDMA_CM_ADDR_QUERY -> RDMA_CM_ADDR_BOUND mutex_unlock(&id_priv->handler_mutex); [.. handler hala çalışıyor ..] rdma_resolve_addr(): RDMA_CM_ADDR_BOUND -> RDMA_CM_ADDR_QUERY rdma_resolve_ip(addr_handler) !! şu an req_list üzerinde iki istek var rdma_destroy_id(): destroy_id_handler_unlock(): _destroy_id(): cma_cancel_operation(): rdma_addr_cancel() // process_one_req() kendisini kaldırır spin_lock_bh(&lock); cancel_delayed_work(&req->work); if (!list_empty(&req->list)) == true ! rdma_addr_cancel(), process_on_req #1 tamamlandıktan sonra döner kfree(id_priv) process_one_req(): #2 için addr_handler(): mutex_lock(&id_priv->handler_mutex); !! id_priv üzerinde serbest bırakıldıktan sonra kullanım (Use after free) rdma_addr_cancel() listede bir adet req olmasını bekler ve yalnızca ilkini iptal eder. İşlemin kendi kendini kaldırma davranımı ancak handler döndükten sonra gerçekleşir. Bu durum, req_list'in aynı "handle" için iki req içerebildiği ancak rdma_addr_cancel()'ın yalnızca ilkini iptal ettiği senaryolara yol açar. İkinci req, rdma_destroy_id() sonrasında da aktif kalmaya devam eder ve kaçınılmaz olarak tetiklendiğinde id_priv üzerinde serbest bırakıldıktan sonra kullanım hatasına neden olur. Bu sorun, id_priv'in rdma_resolve_ip() fonksiyonunu çağırıp çağırmadığı hatırlanarak ve tekrar çağırmadan önce her zaman iptal işlemi gerçekleştirilerek düzeltilmiştir. Bu sayede req_list'in hiçbir zaman birden fazla öğe içermemesi sağlanmış olup, bu sıra dışı hata yolunu kullanmayan normal akışta herhangi bir maliyet oluşturmamaktadır.

ÖnemYüksek
CVSS7.8
İstismar olasılığı—
ÜrünLinux Kernel
Yayın21 May 2024
İlk görülme21 May 2024

Nasıl düzeltilir

Güncelleyin
  • linux linux_kernel5.10.188, 5.14.10 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
linux linux_kernel2.6.18 ≤ v < 5.10.188, 5.11 ≤ v < 5.14.10, 5.155.10.188, 5.14.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.

Intelligence 360 paketinde

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.

CVE-2021-47391 · Linux Kernel · Dark Radar