CVE-2022-49607
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: perf/core: perf_event_set_output() ve perf_mmap_close() arasındaki veri yarışı (data race) düzeltildi Yang Jihing, perf_event_set_output() ve perf_mmap_close() arasında bir yarış durumu raporlamıştır: CPU1 CPU2 perf_mmap_close(e2) if (atomic_dec_and_test(&e2->rb->mmap_count)) // 1 - > 0 detach_rest = true ioctl(e1, IOC_SET_OUTPUT, e2) perf_event_set_output(e1, e2) ... list_for_each_entry_rcu(e, &e2->rb->event_list, rb_entry) ring_buffer_attach(e, NULL); // e1 henüz eklenmedi ve // bu nedenle ayrılmadı ring_buffer_attach(e1, e2->rb) list_add_rcu(&e1->rb_entry, &e2->rb->event_list) Bundan sonra; e1 eşlenmemiş (unmapped) bir rb'ye bağlanır ve ardından gelen bir perf_mmap() sonsuza kadar döngüye girer: again: mutex_lock(&e->mmap_mutex); if (event->rb) { ... if (!atomic_inc_not_zero(&e->rb->mmap_count)) { ... mutex_unlock(&e->mmap_mutex); goto again; } } perf_mmap_close() içerisindeki döngü e2->mmap_mutex kilidini tutarken, perf_event_set_output() içerisindeki bağlama işlemi e1->mmap_mutex kilidini tutmaktadır. Bu nedenle, bu yarışı önleyecek bir serileştirme bulunmamaktadır. Bu sorunu gidermek için perf_event_set_output() fonksiyonu hem e1->mmap_mutex hem de e2->mmap_mutex kilitlerini alacak şekilde değiştirilmiştir. Ek olarak, perf_mmap() içerisindeki döngünün rb'yi doğrudan ayırması sağlanmıştır; bu sayede ilerleme kaydetmek için eşzamanlı çalışan perf_mmap_close() işleminin bunu yapmasını beklemek zorunda kalınmaz.
Nasıl düzeltilir
- linux linux_kernel3.3, 3.5, 4.9.325, 4.14.290, 4.19.254, 5.4.208, 5.10.134, 5.15.58, 5.18.15 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.2.49 ≤ v < 3.3, 3.4.52 ≤ v < 3.5, 3.9.8 ≤ v < 4.9.325, 4.10 ≤ v < 4.14.290, 4.15 ≤ v < 4.19.254, 4.20 ≤ v < 5.4.208, 5.5 ≤ v < 5.10.134, 5.11 ≤ v < 5.15.58, 5.16 ≤ v < 5.18.15, 5.19 | 3.3, 3.5, 4.9.325, 4.14.290, 4.19.254, 5.4.208, 5.10.134, 5.15.58, 5.18.15 |
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.