CVE-2026-89754
Açıklama
Linux kernel'de aşağıdaki güvenlik açığı giderilmiştir: mm/pagewalk: walk->action değerinin walk_pmd_range() fonksiyonundan hatalı şekilde çıkmasının düzeltilmesi Eğer ->pmd_entry(), walk->action = ACTION_AGAIN şeklinde ayarlanırsa, pmd_none() kontrolü yeniden denenir. Yeniden deneme noktasında PMD girişi temizlenmiş olabilir. Bu durumda, eğer walk->ops->install_pte belirtilmemişse, kod walk->action değerini ACTION_SUBTREE olarak sıfırlamadan aralıktaki bir sonraki PMD girişine devam eder. Bu durum, walk->action değerinin hatalı bir şekilde ACTION_AGAIN olarak kalmasına neden olur ve bu yanlıştır. Bu durum daha önce yanlış olsa da, walk_pud_range() fonksiyonunu walk_pmd_range() dönüşünde walk->action == ACTION_AGAIN olup olmadığını kontrol edecek şekilde güncelleyen 3b89863c3fa4 ("mm/pagewalk: fix race between concurrent split and refault") commit'ine kadar sorun teşkil etmiyordu; ancak bu güncelleme sonrası PUD yürütmesinin yeniden denenmesine yol açmaktadır. Bu senaryo, mükerrer walk geri çağırmalarının tetiklenmesiyle sonuçlanır; bu durum hatalıdır ve buna karşı idempotent olmayan tüm çağrıcıları bozar (idempotent olanlar için ise zaman kaybına yol açar). Sonuç olarak, yerel bir fuzzer tarafından tetiklenen bir sınır dışı yazma (out-of-bounds write) hatası meydana gelir: [ 2.272695] ================================================================== [ 2.273471] BUG: KASAN: slab-out-of-bounds in __mincore_unmapped_range+0x14f/0x190 [ 2.274302] Write of size 1 at addr ffff888008d9b000 by task poc/106 [ 2.274966] [ 2.275154] CPU: 0 UID: 1000 PID: 106 Comm: poc Not tainted 7.2.0-rc6-00429-ga7c7074b58d2 #55 PREEMPT(lazy) [ 2.275159] Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 [ 2.275164] Call Trace: [ 2.275170] <TASK> [ 2.275172] dump_stack_lvl+0x53/0x70 [ 2.275200] print_report+0xd0/0x630 [ 2.275210] ? __pfx__raw_spin_lock_irqsave+0x10/0x10 [ 2.275219] ? irqentry_exit+0xd2/0x670 [ 2.275224] ? irqentry_exit+0xd2/0x670 [ 2.275226] ? __virt_addr_valid+0xef/0x1a0 [ 2.275239] ? __mincore_unmapped_range+0x14f/0x190 [ 2.275242] kasan_report+0xce/0x100 [ 2.275245] ? __mincore_unmapped_range+0x14f/0x190 [ 2.275248] __mincore_unmapped_range+0x14f/0x190 [ 2.275252] mincore_unmapped_range+0x45/0x70 [ 2.275254] walk_pgd_range+0xafc/0xfc0 [ 2.275261] ? __pfx_walk_pgd_range+0x10/0x10 [ 2.275264] ? __update_load_avg_se+0x3d1/0x670 [ 2.275275] __walk_page_range+0xc0/0x310 [ 2.275278] ? __pfx_find_vma+0x10/0x10 [ 2.275281] ? finish_task_switch.isra.0+0x16d/0x4f0 [ 2.275290] walk_page_range_mm_unsafe+0x26f/0x3a0 [ 2.275293] ? __pfx_mtree_load+0x10/0x10 [ 2.275298] ? __pfx_walk_page_range_mm_unsafe+0x10/0x10 [ 2.275302] ? __free_frozen_pages+0x54d/0x7e0 [ 2.275308] __do_sys_mincore+0x132/0x380 [ 2.275311] do_syscall_64+0xf9/0x540 [ 2.275316] entry_SYSCALL_64_after_hwframe+0x77/0x7f [ 2.275322] RIP: 0033:0x422ccd [ 2.275326] Code: b3 66 2e 0f 1f 84 00 00 00 00 00 66 90 f3 0f 1e fa 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b8 ff ff ff f7 d8 64 89 01 48 [ 2.275329] RSP: 002b:00007fffffffec18 EFLAGS: 00000287 ORIG_RAX: 000000000000001b [ 2.275337] RAX: ffffffffffffffda RBX: 0000000000000066 RCX: 0000000000422ccd [ 2.275339] RDX: 00000000004d0940 RSI: 0000000001000000 RDI: 00007ffff4000000 [ 2.275340] RBP: 00000000004d0940 R08: 0000000000000100 R09: 0000000000000100 [ 2.275342] R10: 0000000000000100 R11: 0000000000000287 R12: 20c49ba5e353f7cf [ 2.275343] R13: 00000000004990d3 R14: 0000000000000000 R15: 0000000000000001 [ 2.275346] </TASK> [ 2.275347] [ 2.296904] The buggy address belongs to the object at ffff888008d9b000 [ 2.296904] which belongs to the cache sigqueue of size 80 [ 2.298151] The buggy address is located 0 bytes inside of [ 2.298151] allocated 80-byte region [ffff888008d9b000, ffff888008d9b050) [ 2.299408] [ 2.299601] The buggy address belongs to the physical page: [ 2.300191] page: refcount:0 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x8d9b ---truncated---
Nasıl düzeltilir
- Linux Linux895cd4ecbb2e03d7583103c65ee5adaae126ed6d, c05cdc2ab365b98099386e6c166b9865a4f2a9d3, aedf2efd18977e0cef7eb963166e2b1fcc0aa321, 6.18.50, 6.20 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| Linux Linux | 38ec58670a0c5fc1edabdeccd857e586b7b3f318 ≤ v < 895cd4ecbb2e03d7583103c65ee5adaae126ed6d, 3b89863c3fa482912911cd65a12a3aeef662c250 ≤ v < c05cdc2ab365b98099386e6c166b9865a4f2a9d3, 3b89863c3fa482912911cd65a12a3aeef662c250 ≤ v < aedf2efd18977e0cef7eb963166e2b1fcc0aa321, 9bbbebd94dd5be25ec8c899d46ef01b33d5d22c0, 6.18.21 ≤ v < 6.18.50, 6.19.11 ≤ v < 6.20, 7.0 | 895cd4ecbb2e03d7583103c65ee5adaae126ed6d, c05cdc2ab365b98099386e6c166b9865a4f2a9d3, aedf2efd18977e0cef7eb963166e2b1fcc0aa321, 6.18.50, 6.20 |
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.