CVE-2023-53795

Yüksek

Açıklama

Linux kernel'de aşağıdaki güvenlik açığı giderilmiştir: iommufd: IOMMUFD_DESTROY referans sayısını (refcount) artırmamalıdır syzkaller, IOMMUFD_DESTROY işleminin referans sayısını artırdığı bir yarış durumu (race condition) tespit etmiştir: obj = iommufd_get_object(ucmd->ictx, cmd->id, IOMMUFD_OBJ_ANY); if (IS_ERR(obj)) return PTR_ERR(obj); iommufd_ref_to_users(obj); /* See iommufd_ref_to_users() */ if (!iommufd_object_destroy_user(ucmd->ictx, obj)) Mevcut iki primitifi birleştirme dizisinin bir parçası olarak; referans sayısının destroy_rwsem tutulmadan yükseltilmesine izin verilmesi, tüm geçici referans sayısı yükseltmelerinin destroy_rwsem tarafından korunduğu varsayımıyla çelişmektedir. IOMMUFD_DESTROY ile iommufd_object_destroy_user() arasındaki yarış durumu hatalı başarısızlıklara neden olacaktır: WARNING: CPU: 0 PID: 3076 at drivers/iommu/iommufd/device.c:477 iommufd_access_destroy+0x18/0x20 drivers/iommu/iommufd/device.c:478 Modules linked in: CPU: 0 PID: 3076 Comm: syz-executor.0 Not tainted 6.3.0-rc1-syzkaller #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 07/03/2023 RIP: 0010:iommufd_access_destroy+0x18/0x20 drivers/iommu/iommufd/device.c:477 Code: e8 3d 4e 00 00 84 c0 74 01 c3 0f 0b c3 0f 1f 44 00 00 f3 0f 1e fa 48 89 fe 48 8b bf a8 00 00 00 e8 1d 4e 00 00 84 c0 74 01 c3 <0f> 0b c3 0f 1f 44 00 00 41 57 41 56 41 55 4c 8d ae d0 00 00 00 41 RSP: 0018:ffffc90003067e08 EFLAGS: 00010246 RAX: 0000000000000000 RBX: ffff888109ea0300 RCX: 0000000000000000 RDX: 0000000000000001 RSI: 0000000000000000 RDI: 00000000ffffffff RBP: 0000000000000004 R08: 0000000000000000 R09: ffff88810bbb3500 R10: ffff88810bbb3e48 R11: 0000000000000000 R12: ffffc90003067e88 R13: ffffc90003067ea8 R14: ffff888101249800 R15: 00000000fffffffe FS: 00007ff7254fe6c0(0000) GS:ffff888237c00000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000555557262da8 CR3: 000000010a6fd000 CR4: 0000000000350ef0 Call Trace: <TASK> iommufd_test_create_access drivers/iommu/iommufd/selftest.c:596 [inline] iommufd_test+0x71c/0xcf0 drivers/iommu/iommufd/selftest.c:813 iommufd_fops_ioctl+0x10f/0x1b0 drivers/iommu/iommufd/main.c:337 vfs_ioctl fs/ioctl.c:51 [inline] __do_sys_ioctl fs/ioctl.c:870 [inline] __se_sys_ioctl fs/ioctl.c:856 [inline] __x64_sys_ioctl+0x84/0xc0 fs/ioctl.c:856 do_syscall_x64 arch/x86/entry/common.c:50 [inline] do_syscall_64+0x38/0x80 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x63/0xcd Çözüm, IOMMUFD_DESTROY yolunda referans sayısını hiç artırmamaktır. Bunun yerine her şeyi serileştirmek için xa_lock kullanılmalıdır. Referans sayısı kontrolü (== 1) ve xa_erase işlemi tek bir kritik bölge altında gerçekleştirilebilir. Bu durum, herhangi bir referans sayısı artırımına olan ihtiyacı ortadan kaldırır. Bunun dezavantajı, kullanıcı alanının (userspace) imha işlemini diğer işlemlerle yarıştırması durumunda beklemek yerine EBUSY hatası alacak olmasıdır ancak bu tür bir yarış durumu zaten risklidir.

ÖnemYüksek
CVSS7.8
İstismar olasılığı—
ÜrünLinux
Yayın9 Ara 2025
İlk görülme9 Ara 2025

Nasıl düzeltilir

Güncelleyin
  • Linux Linux495b327435b0298e9b3b434f5834d459a93673ce, 99f98a7c0d6985d5507c8130a981972e4b7b3bdc ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
Linux Linux2ff4bed7fee72ba1abfcff5f11ae8f8e570353f2 ≤ v < 495b327435b0298e9b3b434f5834d459a93673ce, 2ff4bed7fee72ba1abfcff5f11ae8f8e570353f2 ≤ v < 99f98a7c0d6985d5507c8130a981972e4b7b3bdc, 6.2495b327435b0298e9b3b434f5834d459a93673ce, 99f98a7c0d6985d5507c8130a981972e4b7b3bdc

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.

CVE-2023-53795 · Linux · Dark Radar