CVE-2026-98398
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: locking/lockdep: Silinen sınıflar için bayat class_cache girişlerini geçersiz kılın syzbot, geçersiz bir class_idx nedeniyle hlock_class() fonksiyonunda DEBUG_LOCKS_WARN_ON(1) hatasına yol açan bir lockdep splat raporlamıştır: WARNING: kernel/locking/lockdep.c:238 at __lock_acquire+0x382/0x2cf0 kernel/locking/lockdep.c:5203 Workqueue: wg-crypt-wg0 wg_packet_tx_worker RIP: 0010:hlock_class kernel/locking/lockdep.c:238 [inline] RIP: 0010:check_wait_context kernel/locking/lockdep.c:4870 [inline] RIP: 0010:__lock_acquire+0x389/0x2cf0 kernel/locking/lockdep.c:5203 Call Trace: <IRQ> lock_acquire+0x106/0x350 kernel/locking/lockdep.c:5886 _raw_spin_lock+0x2e/0x40 kernel/locking/spinlock.c:173 tcp_tsq_handler+0x29/0x200 net/ipv4/tcp_output.c:1291 tcp_tsq_workfn+0x384/0x410 net/ipv4/tcp_output.c:1325 ... Bir kilit sınıfı silindiğinde (örneğin modül kaldırılması veya anahtar kaydının silinmesi sırasında), zap_class() fonksiyonu sınıfın lock_classes_in_use içerisindeki bitini temizler ve onu sınıf karma tablosundan çıkarır. Ancak, veri yapılarına gömülü mevcut lockdep_map örnekleri, class_cache[] dizilerinde hala silinen sınıfa ait bir işaretçiyi tutmaya devam edebilir. __lock_acquire() daha sonra böyle bir kilit üzerinde çalıştığında, lock->class_cache[subclass] != NULL olduğunu tespit eder; bu durum register_lock_class() işleminin atlanmasına ve hlock->class_idx değerinin silinen sınıfın indeksine atanmasına neden olur. check_wait_context() veya hlock_class() tutulan kilidi incelediğinde !test_bit(class_idx, lock_classes_in_use) durumunu bulur ve uyarı verir. Ayrıca, silinen yuva daha sonra ilgisiz bir kilit anahtarına yeniden tahsis edilirse, bayat class_cache girişi hatalı bir şekilde ilgisiz sınıfla eşleşecektir (ABA sorunu). Önbelleğe alınan sınıfın lock_classes sınırları içinde olduğunu, lock_classes_in_use içerisinde hala tahsis edildiğini (match_held_lock() gibi noinstr bağlamlarında güvenli olması için __always_inline bağlamında araçlandırılmamış arch_test_bit() kullanılarak) ve class->key değerinin beklenen alt anahtarla eşleştiğini (lockdep_set_subclass() geçersiz kılmaları dikkate alınarak) doğrulamak için lock_class_cache_is_valid() eklenmiştir. Ayrıca class_cache[] erişimlerinde READ_ONCE()/WRITE_ONCE() kullanılmaktadır. Giriş geçersiz veya bayatsa, register_lock_class() / look_up_lock_class() işlemlerine geri dönülür.
Nasıl düzeltilir
- Linux Linuxf8a1281ab82df5b51fd0384354d4b21daf2b7af0, 1c9d664e2e067fca69e5a41d68e23bbc66a583fe, 6bc345f6d81ebe22e0f355c2a21d7e29691f9332, f63c86e9d267629758adaba18579e784ddd63c32, c7acfb04c7e2e2dea248282b21373d93296644dd, baa320fbb2f9fea50f5632a307da8ce84fbef5bd, 02c6be7d675b21d81f0ba3a524346850a8c0e3bf ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| Linux Linux | a0b0fd53e1e67639b303b15939b9c653dbe7a8c4 ≤ v < f8a1281ab82df5b51fd0384354d4b21daf2b7af0, a0b0fd53e1e67639b303b15939b9c653dbe7a8c4 ≤ v < 1c9d664e2e067fca69e5a41d68e23bbc66a583fe, a0b0fd53e1e67639b303b15939b9c653dbe7a8c4 ≤ v < 6bc345f6d81ebe22e0f355c2a21d7e29691f9332, a0b0fd53e1e67639b303b15939b9c653dbe7a8c4 ≤ v < f63c86e9d267629758adaba18579e784ddd63c32, a0b0fd53e1e67639b303b15939b9c653dbe7a8c4 ≤ v < c7acfb04c7e2e2dea248282b21373d93296644dd, a0b0fd53e1e67639b303b15939b9c653dbe7a8c4 ≤ v < baa320fbb2f9fea50f5632a307da8ce84fbef5bd, a0b0fd53e1e67639b303b15939b9c653dbe7a8c4 ≤ v < 02c6be7d675b21d81f0ba3a524346850a8c0e3bf, 5.1 | f8a1281ab82df5b51fd0384354d4b21daf2b7af0, 1c9d664e2e067fca69e5a41d68e23bbc66a583fe, 6bc345f6d81ebe22e0f355c2a21d7e29691f9332, f63c86e9d267629758adaba18579e784ddd63c32, c7acfb04c7e2e2dea248282b21373d93296644dd, baa320fbb2f9fea50f5632a307da8ce84fbef5bd, 02c6be7d675b21d81f0ba3a524346850a8c0e3bf |
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.