iommu: Fix potential use-after-free during probe
In the Linux kernel, the following vulnerability has been resolved: iommu: Fix potential use-after-free during probe Kasan has reported the following use after free on dev->iommu. when a device probe fails and it is in process of freeing dev->iommu in dev_iommu_free function, a deferred_probe_work_func runs in parallel and tries to access dev->iommu->fwspec in of_iommu_configure path thus causing use after free. BUG: KASAN: use-after-free in of_iommu_configure+0xb4/0x4a4 Read of size 8 at addr ffffff87a2f1acb8 by task kworker/u16:2/153 Workqueue: events_unbound deferred_probe_work_func Call trace: dump_backtrace+0x0/0x33c show_stack+0x18/0x24 dump_stack_lvl+0x16c/0x1e0 print_address_description+0x84/0x39c __kasan_report+0x184/0x308 kasan_report+0x50/0x78 __asan_load8+0xc0/0xc4 of_iommu_configure+0xb4/0x4a4 of_dma_configure_id+0x2fc/0x4d4 platform_dma_configure+0x40/0x5c really_probe+0x1b4/0xb74 driver_probe_device+0x11c/0x228 __device_attach_driver+0x14c/0x304 bus_for_each_drv+0x124/0x1b0 __device_attach+0x25c/0x334 device_initial_probe+0x24/0x34 bus_probe_device+0x78/0x134 deferred_probe_work_func+0x130/0x1a8 process_one_work+0x4c8/0x970 worker_thread+0x5c8/0xaec kthread+0x1f8/0x220 ret_from_fork+0x10/0x18 Allocated by task 1: ____kasan_kmalloc+0xd4/0x114 __kasan_kmalloc+0x10/0x1c kmem_cache_alloc_trace+0xe4/0x3d4 __iommu_probe_device+0x90/0x394 probe_iommu_group+0x70/0x9c bus_for_each_dev+0x11c/0x19c bus_iommu_probe+0xb8/0x7d4 bus_set_iommu+0xcc/0x13c arm_smmu_bus_init+0x44/0x130 [arm_smmu] arm_smmu_device_probe+0xb88/0xc54 [arm_smmu] platform_drv_probe+0xe4/0x13c really_probe+0x2c8/0xb74 driver_probe_device+0x11c/0x228 device_driver_attach+0xf0/0x16c __driver_attach+0x80/0x320 bus_for_each_dev+0x11c/0x19c driver_attach+0x38/0x48 bus_add_driver+0x1dc/0x3a4 driver_register+0x18c/0x244 __platform_driver_register+0x88/0x9c init_module+0x64/0xff4 [arm_smmu] do_one_initcall+0x17c/0x2f0 do_init_module+0xe8/0x378 load_module+0x3f80/0x4a40 __se_sys_finit_module+0x1a0/0x1e4 __arm64_sys_finit_module+0x44/0x58 el0_svc_common+0x100/0x264 do_el0_svc+0x38/0xa4 el0_svc+0x20/0x30 el0_sync_handler+0x68/0xac el0_sync+0x160/0x180 Freed by task 1: kasan_set_track+0x4c/0x84 kasan_set_free_info+0x28/0x4c ____kasan_slab_free+0x120/0x15c __kasan_slab_free+0x18/0x28 slab_free_freelist_hook+0x204/0x2fc kfree+0xfc/0x3a4 __iommu_probe_device+0x284/0x394 probe_iommu_group+0x70/0x9c bus_for_each_dev+0x11c/0x19c bus_iommu_probe+0xb8/0x7d4 bus_set_iommu+0xcc/0x13c arm_smmu_bus_init+0x44/0x130 [arm_smmu] arm_smmu_device_probe+0xb88/0xc54 [arm_smmu] platform_drv_probe+0xe4/0x13c really_probe+0x2c8/0xb74 driver_probe_device+0x11c/0x228 device_driver_attach+0xf0/0x16c __driver_attach+0x80/0x320 bus_for_each_dev+0x11c/0x19c driver_attach+0x38/0x48 bus_add_driver+0x1dc/0x3a4 driver_register+0x18c/0x244 __platform_driver_register+0x88/0x9c init_module+0x64/0xff4 [arm_smmu] do_one_initcall+0x17c/0x2f0 do_init_module+0xe8/0x378 load_module+0x3f80/0x4a40 __se_sys_finit_module+0x1a0/0x1e4 __arm64_sys_finit_module+0x44/0x58 el0_svc_common+0x100/0x264 do_el0_svc+0x38/0xa4 el0_svc+0x20/0x30 el0_sync_handler+0x68/0xac el0_sync+0x160/0x180 Fix this by setting dev->iommu to NULL first and then freeing dev_iommu structure in dev_iommu_free function.
- Yayın
- 16 Tem 2024
- Güncelleme
- 5 Ağu 2026
- EPSS
- %0,3 · 15. yüzdelik
- CWE
- CWE-416
Takip etmek için giriş yap · Takip ettiğin kayıt KEV’e girer, istismarı çıkar ya da güncellenirse bildirim alırsın.
Rapor araçları
Aksiyon skoru
31
İzleyin
Şimdilik düşük öncelik.
- CVSS
- 31 / 40 · 7.8 / 10
- CISA KEV
- 0 / 30 · Listede değil
- EPSS
- 0 / 30 · %0,3
CISA SSVC kararı
- Sömürü
- yok
- Otomatikleştirilebilir
- hayır
- Teknik etki
- kısmi
Vulnrichment: CISA'nın karar ağacı girdileri.
CNA ile NVD puanı
- NVD
- 7,8
- CNA · Linux
- 7,8
- uyumlu
Kaydı açan otoritenin puanı ile NVD’nin bağımsız puanı. İki puan arasındaki fark ciddiyetin tartışmalı olduğunu gösterir.
Noroxi analizi
Bu kayıt için henüz Noroxi analizi yok
Veritabanındaki yüz binlerce zafiyetin tamamına elle analiz yazmıyoruz; bu dürüst olmazdı. Öne çıkan ve sahada etkisi olan zafiyetler için mekanizma, tespit ve kapatma adımlarını ekibimiz yazıyor.
Bu ürünü kullanıyoruz, yardım isteyinEtkilenen sistemler
| Üretici | Ürün | CPE |
|---|---|---|
| linux | linux kernel | cpe:2.3:o:linux:linux_kernel |
Etkilenen sürümler
NVD sürüm aralıkları (katalogdaki ürünler için). Stack’ine sürümle eklersen eşleşme bunlarla yapılır.
- linux linux kernel5.7 ve sonrası · 5.10.101 öncesi
- linux linux kernel5.11 ve sonrası · 5.15.24 öncesi
- linux linux kernel5.16 ve sonrası · 5.16.10 öncesi
- linux linux kernel5.17
Üreticinin bildirdiği sürümler
Kaydı açan otorite (Linux) tarafından bildirilen etkilenen sürüm aralıkları. NVD'nin CPE analizinden bağımsızdır ve genellikle ondan önce gelir.
Linux Linux
- 5.3etkilenir
- 0c830e6b32826311fc2b9ea1f4679be0f4ef0933 ve sonrası · cb86e511e78e796de6947b8f3acca1b7c76fb2ff öncesietkilenir · git
- 0c830e6b32826311fc2b9ea1f4679be0f4ef0933 ve sonrası · 65ab30f6a6952fa9ee13009862736cf8d110e6e5 öncesietkilenir · git
- 0c830e6b32826311fc2b9ea1f4679be0f4ef0933 ve sonrası · f74fc4b5bd533ea3d30ce47cccb8ef8d21fda85a öncesietkilenir · git
- 0c830e6b32826311fc2b9ea1f4679be0f4ef0933 ve sonrası · b54240ad494300ff0994c4539a531727874381f4 öncesietkilenir · git
- 5.3 öncesietkilenmez · semver
- 5.10.101 ve sonrası · 5.10.* dahil öncesietkilenmez · semver
- 5.15.24 ve sonrası · 5.15.* dahil öncesietkilenmez · semver
- 5.16.10 ve sonrası · 5.16.* dahil öncesietkilenmez · semver
- 5.17 ve sonrasıetkilenmez · original_commit_for_fix
Paket düzeyi etkilenme
OSV ve GitHub Advisory verisi: ekosistem, paket ve aralık. SBOM eşleşmesi bu tabloyu kullanır.
| Ekosistem | Paket | Etkilenen aralık | Düzeltme |
|---|---|---|---|
| Debian:12 | linux | 5.16.10-1 öncesi | 5.16.10-1 |
| Red Hat:rhel_aus:8.6::baseos | bpftool | 0:4.18.0-372.121.1.el8_6 öncesi | 0:4.18.0-372.121.1.el8_6 |
| Red Hat:rhel_aus:8.6::baseos | bpftool-debuginfo | 0:4.18.0-372.121.1.el8_6 öncesi | 0:4.18.0-372.121.1.el8_6 |
| Red Hat:rhel_aus:8.6::baseos | kernel | 0:4.18.0-372.121.1.el8_6 öncesi | 0:4.18.0-372.121.1.el8_6 |
| Red Hat:rhel_aus:8.6::baseos | kernel-abi-stablelists | 0:4.18.0-372.121.1.el8_6 öncesi | 0:4.18.0-372.121.1.el8_6 |
| Red Hat:rhel_aus:8.6::baseos | kernel-core | 0:4.18.0-372.121.1.el8_6 öncesi | 0:4.18.0-372.121.1.el8_6 |
| Red Hat:rhel_aus:8.6::baseos | kernel-debug | 0:4.18.0-372.121.1.el8_6 öncesi | 0:4.18.0-372.121.1.el8_6 |
| Red Hat:rhel_aus:8.6::baseos | kernel-debug-core | 0:4.18.0-372.121.1.el8_6 öncesi | 0:4.18.0-372.121.1.el8_6 |
| Red Hat:rhel_aus:8.6::baseos | kernel-debug-debuginfo | 0:4.18.0-372.121.1.el8_6 öncesi | 0:4.18.0-372.121.1.el8_6 |
| Red Hat:rhel_aus:8.6::baseos | kernel-debug-devel | 0:4.18.0-372.121.1.el8_6 öncesi | 0:4.18.0-372.121.1.el8_6 |
| Red Hat:rhel_aus:8.6::baseos | kernel-debug-modules | 0:4.18.0-372.121.1.el8_6 öncesi | 0:4.18.0-372.121.1.el8_6 |
| Red Hat:rhel_aus:8.6::baseos | kernel-debug-modules-extra | 0:4.18.0-372.121.1.el8_6 öncesi | 0:4.18.0-372.121.1.el8_6 |
| Red Hat:rhel_aus:8.6::baseos | kernel-debuginfo | 0:4.18.0-372.121.1.el8_6 öncesi | 0:4.18.0-372.121.1.el8_6 |
| Red Hat:rhel_aus:8.6::baseos | kernel-debuginfo-common-x86_64 | 0:4.18.0-372.121.1.el8_6 öncesi | 0:4.18.0-372.121.1.el8_6 |
| Red Hat:rhel_aus:8.6::baseos | kernel-devel | 0:4.18.0-372.121.1.el8_6 öncesi | 0:4.18.0-372.121.1.el8_6 |
| Red Hat:rhel_aus:8.6::baseos | kernel-modules | 0:4.18.0-372.121.1.el8_6 öncesi | 0:4.18.0-372.121.1.el8_6 |
| Red Hat:rhel_aus:8.6::baseos | kernel-modules-extra | 0:4.18.0-372.121.1.el8_6 öncesi | 0:4.18.0-372.121.1.el8_6 |
| Red Hat:rhel_aus:8.6::baseos | kernel-tools | 0:4.18.0-372.121.1.el8_6 öncesi | 0:4.18.0-372.121.1.el8_6 |
| Red Hat:rhel_aus:8.6::baseos | kernel-tools-debuginfo | 0:4.18.0-372.121.1.el8_6 öncesi | 0:4.18.0-372.121.1.el8_6 |
| Red Hat:rhel_aus:8.6::baseos | kernel-tools-libs | 0:4.18.0-372.121.1.el8_6 öncesi | 0:4.18.0-372.121.1.el8_6 |
| Red Hat:rhel_aus:8.6::baseos | perf | 0:4.18.0-372.121.1.el8_6 öncesi | 0:4.18.0-372.121.1.el8_6 |
| Red Hat:rhel_aus:8.6::baseos | perf-debuginfo | 0:4.18.0-372.121.1.el8_6 öncesi | 0:4.18.0-372.121.1.el8_6 |
| Red Hat:rhel_aus:8.6::baseos | python3-perf | 0:4.18.0-372.121.1.el8_6 öncesi | 0:4.18.0-372.121.1.el8_6 |
| Red Hat:rhel_aus:8.6::baseos | python3-perf-debuginfo | 0:4.18.0-372.121.1.el8_6 öncesi | 0:4.18.0-372.121.1.el8_6 |
+60
Aynı üründe
linux: tüm kayıtlarAynı birincil ürünün en yüksek skorlu diğer kayıtları.
- CVE-2022-0847A flaw was found in the way the "flags" member of the new pipe buffer structure was lacking proper initialization in copy_page_to_iter_pipe KEV89Hemen
- CVE-2021-22555Heap Out-Of-Bounds Write in Netfilter IP6T_SO_SET_REPLACEKEV85Hemen
- CVE-2016-5195Race condition in mm/gup.c in the Linux kernel 2.x through 4.x before 4.8.3 allows local users to gain privileges by leveraging incorrect haKEV83Hemen
- CVE-2019-13272In the Linux kernel before 5.1.17, ptrace_link in kernel/ptrace.c mishandles the recording of the credentials of a process that wants to creKEV77Bu hafta
- CVE-2013-6282The (1) get_user and (2) put_user API functions in the Linux kernel before 3.5.5 on the v6k and v7 ARM platforms do not validate certain addKEV77Bu hafta
- CVE-2013-2094The perf_swevent_init function in kernel/events/core.c in the Linux kernel before 3.8.9 uses an incorrect integer data type, which allows loKEV77Bu hafta
Düzeltme
Hangi sürüme geçmeli
Üretici, paket deposu ve Microsoft kayıtlarından derlenen düzeltme sürümleri. Yükseltmeden önce üreticinin notunu doğrulayın.
| Ürün / paket | Düzeltilmiş sürüm | Kaynak |
|---|---|---|
| Linux Linux | 65ab30f6a6952fa9ee13009862736cf8d110e6e5 | Üretici (CNA) |
| Linux Linux | b54240ad494300ff0994c4539a531727874381f4 | Üretici (CNA) |
| Linux Linux | cb86e511e78e796de6947b8f3acca1b7c76fb2ff | Üretici (CNA) |
| Linux Linux | f74fc4b5bd533ea3d30ce47cccb8ef8d21fda85a | Üretici (CNA) |
| debian:linux | 5.16.10-1 · Debian:12 | Paket deposu (OSV) |
| red hat:bpftool | 0:4.18.0-372.121.1.el8_6 · Red Hat:rhel_aus:8.6::baseos | Paket deposu (OSV) |
| red hat:bpftool-debuginfo | 0:4.18.0-372.121.1.el8_6 · Red Hat:rhel_aus:8.6::baseos | Paket deposu (OSV) |
| red hat:kernel | 0:4.18.0-372.121.1.el8_6 · Red Hat:rhel_aus:8.6::baseos | Paket deposu (OSV) |
| red hat:kernel-abi-stablelists | 0:4.18.0-372.121.1.el8_6 · Red Hat:rhel_aus:8.6::baseos | Paket deposu (OSV) |
| red hat:kernel-core | 0:4.18.0-372.121.1.el8_6 · Red Hat:rhel_aus:8.6::baseos | Paket deposu (OSV) |
| red hat:kernel-debug | 0:4.18.0-372.121.1.el8_6 · Red Hat:rhel_aus:8.6::baseos | Paket deposu (OSV) |
| red hat:kernel-debug-core | 0:4.18.0-372.121.1.el8_6 · Red Hat:rhel_aus:8.6::baseos | Paket deposu (OSV) |
| red hat:kernel-debug-debuginfo | 0:4.18.0-372.121.1.el8_6 · Red Hat:rhel_aus:8.6::baseos | Paket deposu (OSV) |
| red hat:kernel-debug-devel | 0:4.18.0-372.121.1.el8_6 · Red Hat:rhel_aus:8.6::baseos | Paket deposu (OSV) |
| red hat:kernel-debug-modules | 0:4.18.0-372.121.1.el8_6 · Red Hat:rhel_aus:8.6::baseos | Paket deposu (OSV) |
| red hat:kernel-debug-modules-extra | 0:4.18.0-372.121.1.el8_6 · Red Hat:rhel_aus:8.6::baseos | Paket deposu (OSV) |
| red hat:kernel-debuginfo | 0:4.18.0-372.121.1.el8_6 · Red Hat:rhel_aus:8.6::baseos | Paket deposu (OSV) |
İstismar durumu
Bilinen kamuya açık istismar yok
Şu an kamuya açık bir istismar görülmedi. Bu, güvende olduğunuz anlamına gelmez; yalnızca eşiğin biraz daha yüksek olduğunu gösterir.
Araştırma bağlamı
Pentester ve araştırmacı için: saldırı profili, puan anlaşmazlığı, zaman çizelgesi, yama commit’leri, kredi, varyant ve zincir adayları, bug bounty kapsamı. Hepsi mevcut veriden türetilir; istismar kodu içermez.
Zaman çizelgesi
Yayından bugüne: kavram kanıtı, Metasploit modülü, CISA KEV ve düzeltme kaydı. Tarihler kaynakların bildirdiği tarihlerdir.
Yayın dışında tarihli olay yok.
FIRST EPSS günlük puanı; yalnızca 0,01 ve üstü değişimler kaydedilir (adım grafiği).
Yama ve commit bağlantıları
Referanslardaki commit, PR ve diff adresleri. Patch-diff ve varyant avı için başlangıç noktası; istismar değil, düzeltmedir.
Referanslarda commit ya da PR bağlantısı yok.
Kredi
Tüm araştırmacılarCNA kaydında adı geçen bulan, bildiren ve analistler. Ada tıkla, aynı araştırmacının diğer kayıtlarını gör.
CNA kaydında kredi yok.
Varyant adayları
Aynı üründe aynı zafiyet sınıfı, 18 ay içinde. Yama kök nedeni kapatmadıysa kardeş hata burada olur.
Gece hesaplanan ilişki yok.
Zincir adayları
Aynı üründe kimlik doğrulama atlatma ile yetki isteyen bir açık kısa aralıkla yayımlanmış: birlikte kimlik doğrulamasız bir yola dönüşebilir.
—
Bug bounty kapsamı
Bilinen herkese açık program yok.
Kaynak: bounty-targets-data (HackerOne, Bugcrowd, Intigriti, YesWeHack herkese açık listeleri).
Teknik detay
Saldırı koşulları
- Sisteme yerel erişimi olan biri tetikleyebilir.
- Düşük yetkili bir hesap yeterli.
- Kullanıcının bir şey yapması gerekmez.
- Özel bir koşul gerekmez; tekrarlanabilir.
Başarılı olursa
- Gizlilik
- yüksek · veriler okunabilir
- Bütünlük
- yüksek · veri ya da yapılandırma değiştirilebilir
- Erişilebilirlik
- yüksek · hizmet durdurulabilir
- Saldırı vektörü
- Yerel
- Karmaşıklık
- Düşük
- Gereken yetki
- Düşük
- Kullanıcı etkileşimi
- Gerekmez
- Kapsam
- Değişmez
- Gizlilik etkisi
- Yüksek
- Bütünlük etkisi
- Yüksek
- Erişilebilirlik etkisi
- Yüksek
Zayıflık sınıfı (CWE)
CWE-416 · Use After FreeCVSS vektörü
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
nvd-primary
Kök neden
Bir bellek alanı serbest bırakıldıktan sonra ona işaret eden başka bir referans kullanılmaya devam ediyor. Aynı alan o sırada başka bir veri için ayrılmış olabilir.
Hatanın kod karşılığı
CWE-416 sınıfının tamamıBu zafiyet sınıfının temsili örneği. Üreticinin kaynak kodu değildir; hatalı kalıbı ve düzeltmesini gösterir.
Hatalı
free(dev->buf);/* ... başka bir iş parçacığı hâlâ çalışıyor ... */process(dev->buf);Düzeltilmiş
lock(&dev->lock);free(dev->buf);dev->buf = NULL;unlock(&dev->lock);Saldırı bağlamı
Bu zafiyet sınıfının (CWE) MITRE CAPEC saldırı desenleri ve ATT&CK teknikleri. Tespit kuralı ve tehdit avı için başlangıç noktası.
Bu CWE için MITRE'de CAPEC/ATT&CK eşlemesi yok.
Değişiklik günlüğü
- Düzeltme✗ → ✓
Takip ettiğiniz kayıtlarda bu değişiklikler bildirim olarak da gelir. →
Referanslar
- git.kernel.org/stable/c/65ab30f6a6952fa9ee13009862736cf8d110e6e5
- git.kernel.org/stable/c/b54240ad494300ff0994c4539a531727874381f4
- git.kernel.org/stable/c/cb86e511e78e796de6947b8f3acca1b7c76fb2ff
- git.kernel.org/stable/c/f74fc4b5bd533ea3d30ce47cccb8ef8d21fda85a
Üretici bildirimleri ve resmî kayıtlar. İstismar/PoC bağlantıları bilinçli olarak dışarıda bırakıldı.