CVE-2022-49647

Yüksek

Açıklama

Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: cgroup: Migration için css_sets ön yüklemesi yapılırken ayrı src/dst düğümleri kullanın Her bir cset (css_set), görevleri tarafından sabitlenir. Bir migration işlemi için görevleri cset'ler arasında taşıdığımızda, görevleri taşırken yok olmadıklarından emin olmak için kaynak ve hedef cset'leri tutmamız gerekir. Bu işlem, cset->mg_preload_node'un ya mgctx->preloaded_src_csets ya da mgctx->preloaded_dst_csets listesine bağlanmasıyla gerçekleştirilir. Bir cset aynı anda hem kaynak hem de hedef olamayacağı için, hem src hem de dst listeleri için aynı cset->mg_preload_node'un kullanılması uygun görülmüştü. Ne yazık ki bu aşırı yükleme, bir migration işlemine birden fazla görevin dahil olduğu ve bunlardan bazılarının kimlik noop migration'ları iken diğerlerinin gerçekten cgroup'lar arasında taşındığı durumlarda sorunlu hale gelmektedir. Örneğin, cgroup1 üzerinde şu sıra ile gerçekleşebilir: #1> mkdir -p /sys/fs/cgroup/misc/a/b #2> echo $$ > /sys/fs/cgroup/misc/a/cgroup.procs #3> RUN_A_COMMAND_WHICH_CREATES_MULTIPLE_THREADS & #4> PID=$! #5> echo $PID > /sys/fs/cgroup/misc/a/b/tasks #6> echo $PID > /sys/fs/cgroup/misc/a/cgroup.procs grup liderini içeren süreç tekrar a'ya döner. Bu son migration işleminde, lider olmayan thread'ler kimlik migration'ı yaparken grup lideri gerçek bir migration yapar. #3 adımından sonra tüm sürecin cset A'da olduğunu ve #4 adımından sonra liderin cset B'ye geçtiğini varsayalım. Ardından, #6 sırasında şunlar gerçekleşir: 1. Lider için B üzerinde cgroup_migrate_add_src() çağrılır. 2. Diğer thread'ler için A üzerinde cgroup_migrate_add_src() çağrılır. 3. cgroup_migrate_prepare_dst() çağrılır. Src listesini tarar. 4. B'nin A'ya migrate olmak istediğini fark eder, bu nedenle A'yı dst listesine eklemeye çalışır ancak ->mg_preload_node'un zaten meşgul olduğunu görür. 5. Daha sonra A'nın bir kimlik migration'ı olduğu için A'ya migrate olmak istediğini fark eder; bunun üzerine ->mg_preload_node'unu list_del_init() yaparak onu ayıklar ve referansları buna göre yerleştirir. 6. Migration işleminin geri kalanı, src listesinde B varken dst listesinde hiçbir şey olmadan gerçekleşir. Bu durum, migration devam ederken A'nın tutulmadığı anlamına gelir. Eğer tüm görevler migration bitmeden önce A'dan ayrılırsa ve gelen görev onu sabitlerse, cset imha edilecek ve bu da serbest bırakıldıktan sonra kullanım (use-after-free) hatasına yol açacaktır. Buna, cset->mg_preload_node'un hem src hem de dst ön yükleme listeleri için aşırı yüklenmiş olması neden olmaktadır. Cset'i src listesinden hariç tutmak isterken yanlışlıkla dst listesinden de hariç tutmuş olduk. Bu yama, cset->mg_preload_node'u ->mg_src_preload_node ve ->mg_dst_preload_node olarak ayırarak sorunu düzeltmekte, böylece src ve dst ön yüklemelerinin birbirini etkilememesi sağlanmaktadır.

ÖnemYüksek
CVSS7.8
İstismar olasılığı—
ÜrünLinux Kernel
Yayın26 Şub 2025
İlk görülme26 Şub 2025

Nasıl düzeltilir

Güncelleyin
  • linux linux_kernel4.14.289, 4.19.253, 5.4.207, 5.10.132, 5.15.56, 5.18.13 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
linux linux_kernel3.16 ≤ v < 4.14.289, 4.15 ≤ v < 4.19.253, 4.20 ≤ v < 5.4.207, 5.5 ≤ v < 5.10.132, 5.11 ≤ v < 5.15.56, 5.16 ≤ v < 5.18.13, 5.194.14.289, 4.19.253, 5.4.207, 5.10.132, 5.15.56, 5.18.13

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-2022-49647 · Linux Kernel · Dark Radar