CVE-2026-31479
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: drm/xe: remap prev/next takibi her zaman sürdürülmeli Kullanıcılar, 3D iş yükü sırasında şunun gerçekleştiğini rapor etmektedir: [ 413.361679] WARNING: drivers/gpu/drm/xe/xe_vm.c:1217 at vm_bind_ioctl_ops_unwind+0x1e2/0x2e0 [xe], CPU#7: vkd3d_queue/9925 [ 413.361944] CPU: 7 UID: 1000 PID: 9925 Comm: vkd3d_queue Kdump: loaded Not tainted 7.0.0-070000rc3-generic #202603090038 PREEMPT(lazy) [ 413.361949] RIP: 0010:vm_bind_ioctl_ops_unwind+0x1e2/0x2e0 [xe] [ 413.362074] RSP: 0018:ffffd4c25c3df930 EFLAGS: 00010282 [ 413.362077] RAX: 0000000000000000 RBX: ffff8f3ee817ed10 RCX: 0000000000000000 [ 413.362078] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000 [ 413.362079] RBP: ffffd4c25c3df980 R08: 0000000000000000 R09: 0000000000000000 [ 413.362081] R10: 0000000000000000 R11: 0000000000000000 R12: ffff8f41fbf99380 [ 413.362082] R13: ffff8f3ee817e968 R14: 00000000ffffffef R15: ffff8f43d00bd380 [ 413.362083] FS: 00000001040ff6c0(0000) GS:ffff8f4696d89000(0000) knlGS:00000000330b0000 [ 413.362085] CS: 0010 DS: 002b ES: 002b CR0: 0000000080050033 [ 413.362086] CR2: 00007ddfc4747000 CR3: 00000002e6262005 CR4: 0000000000f72ef0 [ 413.362088] PKRU: 55555554 [ 413.362089] Call Trace: [ 413.362092] <TASK> [ 413.362096] xe_vm_bind_ioctl+0xa9a/0xc60 [xe] Bu durum, ops unwind için yeniden eklediğimiz vma'nın ya geçersiz olduğunu ya da vm içinde halihazırda eklenmiş bir şeyle çakıştığını göstermektedir. Bu bir yeniden ekleme işlemi olduğu için ve daha önce çalışmış olması gerektiğinden geçersiz olmamalıdır; bu nedenle muhtemelen suçlu, vma'yı eklemek istediğimiz yere önceden yerleştirilmiş olan bir şeydir. Buna bağlı olarak, bir vma'nın ortasında rebind gibi bir işlem yaptığımızda ve eşlenen uçlardan biri veya her ikisi zaten uyumlu olduğunda, söz konusu vma'ların rebind işlemini atlıyor ve next/prev değerlerini NULL olarak ayarlıyoruz. Ayrıca, uçların eşlemesinin kaldırılmasını önlemek için orijinal unmap va aralığını ayarlıyoruz. Ancak, unwind yolunu tetiklersek, iki ucun asla kaldırılmadığı ve ortadaki orijinal va aralığının hala küçültülmüş boyutta olduğu üç va ile karşılaşıyoruz. Bu durum meydana geldiğinde, hata modlarından biri başka bir unwind işleminin o aralıkla etkileşime girmesi gerektiğinde ortaya çıkar; bu durum bind vektörleri ile gerçekleşebilir. Örneğin, orijinal va yerine bir şeyi yeniden eklememiz gerekirse, va hala küçültülmüş versiyondur; dolayısıyla onu kaldırıp ardından yeniden ekleme yaparken, hiç kaldırılmamış olan uçlarla çakışabilir, yukarıdaki gibi bir uyarıya neden olabilir ve vm'yi kötü bir durumda bırakabilir. Bu doğrultuda burada iki şeye ihtiyaç vardır: 1) Atlama durumları için prev/next takibini silmeyi durdurmak. Bunun yerine, gerektiğinde atlanan prev/next kontrolüne güvenmek. Böylece unwind yolunda artık her iki ucu da doğru şekilde kaldırıyoruz. 2) Unwind yolunda unmap va küçültmesini geri almak. İki uç artık kaldırıldığına göre, yeniden eklemeden önce unmap va tekrar orijinal boyutuna genişlemelidir. v2: - Commit mesajındaki açıklamayı, varsayımlar yerine bu sorunu tetikleyen gerçek bir IGT'ye dayanarak güncellemek. - Ayrıca atlama durumu için unmap küçültmesini geri almak. İki uç artık kaldırıldığında, orijinal unmap va aralığı tekrar orijinal aralığa genişlemelidir. v3: - Eski başlangıç/aralığı ayrı olarak takip etmek. vma_size/start() doğrudan va bilgisini kullanır. (aec6969f75afbf4e01fd5fb5850ed3e9c27043ac numaralı committen cherry pick edilmiştir)
Nasıl düzeltilir
- linux linux_kernel6.12.80, 6.18.21, 6.19.11 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 | 6.8.1 ≤ v < 6.12.80, 6.13 ≤ v < 6.18.21, 6.19 ≤ v < 6.19.11, 6.8, 7.0 | 6.12.80, 6.18.21, 6.19.11 |
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.