CVE-2026-53062
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: dm cache policy smq: önbellek bloklarını geçersiz kılarken eksik olan kilitlerin düzeltilmesi Passthrough modunda, politika invalidate_mapping işlemi birden fazla worker tarafından eş zamanlı olarak çağrılır, bu nedenle bir kilit ile korunmalıdır. Aksi takdirde, tahsis edilen bloklar sayacı üzerinde veri yarışları (data race) veya eş zamanlı yazmalar sırasında dahili veri yapılarıyla ilgili serbest bırakıldıktan sonra kullanım (use-after-free) sorunları ortaya çıkabilir. smq_invalidate_mapping() içerisindeki mevcut FIXME notunun, migrasyon görevleri orada bulunmadığı için passthrough modunu etkilemediği ancak hedef yeniden yükleme olmadan askıya alma/devam ettirme yoluyla hızlı cihaz küçültmeyi desteklemesi durumunda dikkat gerektireceği unutulmamalıdır. Yeniden üretme adımları: 1. 1024 önbellek girişinden oluşan bir önbellek aygıtı oluşturun dmsetup create cmeta --table "0 8192 linear /dev/sdc 0" dmsetup create cdata --table "0 131072 linear /dev/sdc 8192" dmsetup create corig --table "0 262144 linear /dev/sdc 262144" dd if=/dev/zero of=/dev/mapper/cmeta bs=4k count=1 oflag=direct dmsetup create cache --table "0 262144 cache /dev/mapper/cmeta \ /dev/mapper/cdata /dev/mapper/corig 128 2 metadata2 writethrough smq 0" 2. Önbelleği doldurun ve önbelleğe alınan blok sayısını kaydedin fio --name=populate --filename=/dev/mapper/cache --rw=randwrite --bs=4k \ --size=64m --direct=1 nr_cached=$(dmsetup status cache | awk '{split($7, a, "/"); print a[1]}') 3. Önbelleği passthrough modunda yeniden yükleyin dmsetup suspend cache dmsetup reload cache --table "0 262144 cache /dev/mapper/cmeta \ /dev/mapper/cdata /dev/mapper/corig 128 2 metadata2 passthrough smq 0" dmsetup resume cache 4. Passthrough önbelleğine yazın. G/Ç boyutu önbellek blok boyutuna eşit olacak şekilde birden fazla iş tanımlayarak, önbellek bloklarının farklı worker'lar tarafından eş zamanlı olarak geçersiz kılınması sağlanır. fio --filename=/dev/mapper/cache --name=test --rw=randwrite --bs=64k \ --direct=1 --numjobs=2 --randrepeat=0 --size=64m 5. Demote edilen miktarın önbelleğe alınan blok sayısı ile eşleşip eşleşmediğini kontrol edin. Bu rakamların eşleşmesi gerekir ancak veri yarışı nedeniyle farklılık gösterebilirler. nr_demoted=$(dmsetup status cache | awk '{print $12}') echo "$nr_cached, $nr_demoted"
Nasıl düzeltilir
- linux linux_kernel5.10.258, 5.15.209, 6.1.175, 6.6.141, 6.12.91, 6.18.33, 7.0.10 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 | 4.12 ≤ v < 5.10.258, 5.11 ≤ v < 5.15.209, 5.16 ≤ v < 6.1.175, 6.2 ≤ v < 6.6.141, 6.7 ≤ v < 6.12.91, 6.13 ≤ v < 6.18.33, 6.19 ≤ v < 7.0.10 | 5.10.258, 5.15.209, 6.1.175, 6.6.141, 6.12.91, 6.18.33, 7.0.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.
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.