CVE-2026-53059
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: dm log: region_count taşması nedeniyle oluşan sınır dışı yazma hatası düzeltildi create_log_context() fonksiyonundaki yerel region_count değişkeni unsigned int (32-bit) olarak tanımlanmıştır ancak dm_sector_div_up() fonksiyonu sector_t (64-bit) döndürmektedir. Bir device-mapper hedefinin küçük bir region_size ile yeterince büyük bir ti->len değerine sahip olduğu durumlarda, bölme işlemi sonucu UINT_MAX değerini aşabilir. Kırpılan bu değer daha sonra bitset_size hesaplamak için kullanılır ve bu durum clean_bits, sync_bits ve recovering_bits alanlarının gerçek bölge sayısı için gerekenden çok daha küçük tahsis edilmesine neden olur. Sonraki günlük işlemleri (log_set_bit, log_clear_bit, log_test_bit), kırpılmamış tam bölge alanından türetilen bölge indekslerini kullanır ve bu da vmalloc tarafından tahsis edilen çekirdek yığın belleğine (kernel heap memory) sınır dışı yazmalara yol açar. Bu durum, region_count değeri 32 biti aşan bir mirror hedefi oluşturularak yeniden üretilebilir: dmsetup create bigzero --table '0 8589934594 zero' dmsetup create mymirror --table '0 8589934594 mirror \ core 2 2 nosync 2 /dev/mapper/bigzero 0 \ /dev/mapper/bigzero 0' Durum çıktısı, kırpmayı doğrulamaktadır (0x100000001 değeri 1'e kırpıldığı için sync_count=4294967297 yerine 1 olmuştur): $ dmsetup status mymirror 0 8589934594 mirror 2 254:1 254:1 1/4294967297 ... Bu durum core_in_sync fonksiyonunda bir çekirdek çökmesine (kernel crash) yol açar: BUG: scheduling while atomic: (udev-worker)/9150/0x00000000 RIP: 0010:core_in_sync+0x14/0x30 [dm_log] CR2: 0000000000000008 Fixing recursive fault but reboot is needed! Hata, yerel region_count değişkeni sector_t tipine genişletilerek ve değer lc->region_count değişkenine atanmadan önce açık bir taşma kontrolü eklenerek düzeltilmiştir.
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
- git.kernel.org/stable/c/12bd5b88e91a02785244ff1d20fb157e96e9cdc8
- git.kernel.org/stable/c/3ec74da927b4e171a6fc0e77b1188ba4d019af51
- git.kernel.org/stable/c/44ab8875ae4a2842bde2d756bed195d375e0debb
- git.kernel.org/stable/c/4ec8323b9f0764a14d532b1ae9b87f8a9fecb867
- git.kernel.org/stable/c/b455903eed4558982be0811f5b7f44f6bbc4ff57
- git.kernel.org/stable/c/c20e36b7631d83e7535877f08af8b0af72c44b1a
- git.kernel.org/stable/c/d4ac87567f86a55c3c92e9a5144dcd943a9772a1
- git.kernel.org/stable/c/defe483e47173768c227532694dc78cb65db5f09
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| linux linux_kernel | 2.6.12.1 ≤ 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, 2.6.12 | 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.