CVE-2025-39966

Yüksek

Açıklama

Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: iommufd: Dosya tanımlayıcıları için iptal işlemi sırasında oluşan yarış durumu düzeltildi fput(), aslında file_operations release() fonksiyonunu senkron olarak çağırmaz; dosyayı bir iş kuyruğuna ekler ve dosya nihayetinde serbest bırakılır. Bu durum normalde sorun teşkil etmez ancak iommufd için dosya ve iommufd_object birbirine bağlıdır. Dosya, private_data olarak nesneye sahiptir ve kullanıcı referans sayacını tutarken, nesnenin dosya mevcut olduğu sürece hayatta kalması beklenir. Yeni bir nesne tahsis işlemi, dosya kurulmadan önce iptal edildiğinde, sistem dosyayı fput() ile serbest bırakır ve ardından hemen objeyi kfree() ile bellekten siler. Bu durum, iş kuyruğu fput() işlemini tamamlayıp kullanıcı referans sayacını azaltmaya çalıştığında bir serbest bırakıldıktan sonra kullanım (UAF) hatasına yol açar. Bu sorun, dosya yaşam döngüsünün yönetimini çekirdek koda devrederek ve kfree işleminden önce release() fonksiyonunun çağrıldığından emin olmak için iptal sırasında __fput_sync() çağrılarak düzeltilmiştir. Tüm nesne uygulamalarında açık kodu kullanmak için __fput_sync() biraz fazla karmaşıktır. Bunun yerine nesneler, dosya işaretçisinin nerede olduğunu çekirdek koda bildirir ve yaşam döngüsüyle çekirdek kod ilgilenir. Nesne başarıyla tahsis edilirse, dosya bir kullanıcı referans sayacı tutacak ve iommufd_object yok edilemeyecektir. close(); ioctl(IOMMU_DESTROY); işlemlerinin bir sorun yaratmadığı, çünkü close() fonksiyonunun zaten fput()'un senkron bir versiyonunu kullandığı belirtilmelidir. Söz konusu UAF şu şekildedir: BUG: KASAN: slab-use-after-free in iommufd_eventq_fops_release+0x45/0xc0 drivers/iommu/iommufd/eventq.c:376 Write of size 4 at addr ffff888059c97804 by task syz.0.46/6164 CPU: 0 UID: 0 PID: 6164 Comm: syz.0.46 Not tainted syzkaller #0 PREEMPT(full) Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 08/18/2025 Call Trace: <TASK> __dump_stack lib/dump_stack.c:94 [inline] dump_stack_lvl+0x116/0x1f0 lib/dump_stack.c:120 print_address_description mm/kasan/report.c:378 [inline] print_report+0xcd/0x630 mm/kasan/report.c:482 kasan_report+0xe0/0x110 mm/kasan/report.c:595 check_region_inline mm/kasan/generic.c:183 [inline] kasan_check_range+0x100/0x1b0 mm/kasan/generic.c:189 instrument_atomic_read_write include/linux/instrumented.h:96 [inline] atomic_fetch_sub_release include/linux/atomic/atomic-instrumented.h:400 [inline] __refcount_dec include/linux/refcount.h:455 [inline] refcount_dec include/linux/refcount.h:476 [inline] iommufd_eventq_fops_release+0x45/0xc0 drivers/iommu/iommufd/eventq.c:376 __fput+0x402/0xb70 fs/file_table.c:468 task_work_run+0x14d/0x240 kernel/task_work.c:227 resume_user_mode_work include/linux/resume_user_mode.h:50 [inline] exit_to_user_mode_loop+0xeb/0x110 kernel/entry/common.c:43 exit_to_user_mode_prepare include/linux/irq-entry-common.h:225 [inline] syscall_exit_to_user_mode_work include/linux/entry-common.h:175 [inline] syscall_exit_to_user_mode include/linux/entry-common.h:210 [inline] do_syscall_64+0x41c/0x4c0 arch/x86/entry/syscall_64.c:100 entry_SYSCALL_64_after_hwframe+0x77/0x7f

ÖnemYüksek
CVSS7.8
İstismar olasılığı—
ÜrünLinux Kernel
Yayın15 Eki 2025
İlk görülme15 Eki 2025

Nasıl düzeltilir

Güncelleyin
  • linux linux_kernel6.12.50, 6.16.10 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
linux linux_kernel6.11 ≤ v < 6.12.50, 6.13 ≤ v < 6.16.10, 6.176.12.50, 6.16.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.

Intelligence 360 paketinde

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.