CVE-2021-47094: KVM: x86/mmu: Don't advance iterator after restart due to yielding
Noroxi değerlendirmesi
Öncelik: İzleyin (aksiyon skoru 31/100)
- İzlediğimiz kaynaklarda (CISA KEV, Exploit-DB, Metasploit, Nuclei, GitHub) herkese açık istismar kodu ya da sahada sömürü kaydı yok.
- Önümüzdeki 30 günde sömürülme olasılığı %0,21 (FIRST EPSS).
- 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.
- Düzeltilmiş sürüm: Linux Linux 3a0f64de479cae75effb630a2e0a237ca0d0623c, d884eefd75cc54887bc2e9e724207443525dfb2c.
- Ulusal siber güvenlik bildirimlerinde (siberguvenlik.gov.tr) 1 kez anıldı.
Şimdilik düşük öncelik. Linux Linux 3a0f64de479cae75effb630a2e0a237ca0d0623c, d884eefd75cc54887bc2e9e724207443525dfb2c ya da daha yeni sürüme yükseltin.
Kaydın verisinden otomatik üretilir: CVSS (NVD ve CNA), CISA KEV ve SSVC, FIRST EPSS, istismar kaynakları, düzeltme sürümleri. Nasıl hesaplıyoruz
Birincil kaynaklar: NVD · CVE.org · FIRST EPSS
In the Linux kernel, the following vulnerability has been resolved: KVM: x86/mmu: Don't advance iterator after restart due to yielding After dropping mmu_lock in the TDP MMU, restart the iterator during tdp_iter_next() and do not advance the iterator. Advancing the iterator results in skipping the top-level SPTE and all its children, which is fatal if any of the skipped SPTEs were not visited before yielding. When zapping all SPTEs, i.e. when min_level == root_level, restarting the iter and then invoking tdp_iter_next() is always fatal if the current gfn has as a valid SPTE, as advancing the iterator results in try_step_side() skipping the current gfn, which wasn't visited before yielding. Sprinkle WARNs on iter->yielded being true in various helpers that are often used in conjunction with yielding, and tag the helper with __must_check to reduce the probabily of improper usage. Failing to zap a top-level SPTE manifests in one of two ways. If a valid SPTE is skipped by both kvm_tdp_mmu_zap_all() and kvm_tdp_mmu_put_root(), the shadow page will be leaked and KVM will WARN accordingly. WARNING: CPU: 1 PID: 3509 at arch/x86/kvm/mmu/tdp_mmu.c:46 [kvm] RIP: 0010:kvm_mmu_uninit_tdp_mmu+0x3e/0x50 [kvm] Call Trace: <TASK> kvm_arch_destroy_vm+0x130/0x1b0 [kvm] kvm_destroy_vm+0x162/0x2a0 [kvm] kvm_vcpu_release+0x34/0x60 [kvm] __fput+0x82/0x240 task_work_run+0x5c/0x90 do_exit+0x364/0xa10 ? futex_unqueue+0x38/0x60 do_group_exit+0x33/0xa0 get_signal+0x155/0x850 arch_do_signal_or_restart+0xed/0x750 exit_to_user_mode_prepare+0xc5/0x120 syscall_exit_to_user_mode+0x1d/0x40 do_syscall_64+0x48/0xc0 entry_SYSCALL_64_after_hwframe+0x44/0xae If kvm_tdp_mmu_zap_all() skips a gfn/SPTE but that SPTE is then zapped by kvm_tdp_mmu_put_root(), KVM triggers a use-after-free in the form of marking a struct page as dirty/accessed after it has been put back on the free list. This directly triggers a WARN due to encountering a page with page_count() == 0, but it can also lead to data corruption and additional errors in the kernel. WARNING: CPU: 7 PID: 1995658 at arch/x86/kvm/../../../virt/kvm/kvm_main.c:171 RIP: 0010:kvm_is_zone_device_pfn.part.0+0x9e/0xd0 [kvm] Call Trace: <TASK> kvm_set_pfn_dirty+0x120/0x1d0 [kvm] __handle_changed_spte+0x92e/0xca0 [kvm] __handle_changed_spte+0x63c/0xca0 [kvm] __handle_changed_spte+0x63c/0xca0 [kvm] __handle_changed_spte+0x63c/0xca0 [kvm] zap_gfn_range+0x549/0x620 [kvm] kvm_tdp_mmu_put_root+0x1b6/0x270 [kvm] mmu_free_root_page+0x219/0x2c0 [kvm] kvm_mmu_free_roots+0x1b4/0x4e0 [kvm] kvm_mmu_unload+0x1c/0xa0 [kvm] kvm_arch_destroy_vm+0x1f2/0x5c0 [kvm] kvm_put_kvm+0x3b1/0x8b0 [kvm] kvm_vcpu_release+0x4e/0x70 [kvm] __fput+0x1f7/0x8c0 task_work_run+0xf8/0x1a0 do_exit+0x97b/0x2230 do_group_exit+0xda/0x2a0 get_signal+0x3be/0x1e50 arch_do_signal_or_restart+0x244/0x17f0 exit_to_user_mode_prepare+0xcb/0x120 syscall_exit_to_user_mode+0x1d/0x40 do_syscall_64+0x4d/0x90 entry_SYSCALL_64_after_hwframe+0x44/0xae Note, the underlying bug existed even before commit 1af4a96025b3 ("KVM: x86/mmu: Yield in TDU MMU iter even if no SPTES changed") moved calls to tdp_mmu_iter_cond_resched() to the beginning of loops, as KVM could still incorrectly advance past a top-level entry when yielding on a lower-level entry. But with respect to leaking shadow pages, the bug was introduced by yielding before processing the current gfn. Alternatively, tdp_mmu_iter_cond_resched() could simply fall through, or callers could jump to their "retry" label. The downside of that approach is that tdp_mmu_iter_cond_resched() _must_ be called before anything else in the loop, and there's no easy way to enfornce that requirement. Ideally, KVM would handling the cond_resched() fully within the iterator macro (the code is actually quite clean) and avoid this entire class of bugs, but that is extremely difficult do wh ---truncated---
- Yayın
- 4 Mar 2024
- Güncelleme
- 5 Ağu 2026
- EPSS
- %0,2 · 12. yüzdelik
- CWE
- —
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,2
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
- —
- CNA · Linux
- 7,8
- NVD henüz kendi puanını vermedi; gösterilen puan CNA’nın.
Kaydı açan otoritenin puanı ile NVD’nin bağımsız puanı. İki puan arasındaki fark ciddiyetin tartışmalı olduğunu gösterir.
Bu kayıt değişirse haber alın
- KEV'de değil: sahada sömürü kaydı yok
- Herkese açık istismar kodu kaydı yok
- Düzeltme yayımlandı
Bunlardan biri değişirse günlük e-posta özetinde haber veririz.
WordPress siteniz mi var? WP Lens ile ücretsiz tarayın
Noroxi analizi
Sizin ortamınızda ne anlama geliyor?
Yukarıdaki değerlendirme kaydın verisinden otomatik üretilir; ortamınızı bilmez. Bu açığın sizde gerçekten sömürülebilir olup olmadığını ve hangi önlemin yeteceğini ekibimiz sizin sistemlerinizde doğrular.
Bu ürünü kullanıyoruz, yardım isteyinEtkilenen sistemler
Sürümünüz etkileniyor mu?
Ürünü seçip kullandığınız sürümü yazın. Bu kaydın sürüm aralıklarıyla tarayıcınızda karşılaştırılır; sürüm hiçbir yere gönderilmez.
| Ü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’inize sürümle eklerseniz eşleşme bunlarla yapılır.
- linux linux kernel5.10 ve sonrası · 5.15.12 öncesi
- linux linux kernel5.16
Ü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.10etkilenir
- faaf05b00aecdb347ffd1d763d024394ec0329f8 ve sonrası · d884eefd75cc54887bc2e9e724207443525dfb2c öncesietkilenir · git
- faaf05b00aecdb347ffd1d763d024394ec0329f8 ve sonrası · 3a0f64de479cae75effb630a2e0a237ca0d0623c öncesietkilenir · git
- 5.10 öncesietkilenmez · semver
- 5.15.12 ve sonrası · 5.15.* dahil öncesietkilenmez · semver
- 5.16 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.15.15-1 öncesi | 5.15.15-1 |
| openSUSE:Leap 15.5 | dtb-aarch64 | 5.14.21-150500.55.59.1 öncesi | 5.14.21-150500.55.59.1 |
| openSUSE:Leap 15.5 | kernel-64kb | 5.14.21-150500.55.59.1 öncesi | 5.14.21-150500.55.59.1 |
| openSUSE:Leap 15.5 | kernel-azure | 5.14.21-150500.33.48.1 öncesi | 5.14.21-150500.33.48.1 |
| openSUSE:Leap 15.5 | kernel-debug | 5.14.21-150500.55.59.1 öncesi | 5.14.21-150500.55.59.1 |
| openSUSE:Leap 15.5 | kernel-default | 5.14.21-150500.55.59.1 öncesi | 5.14.21-150500.55.59.1 |
| openSUSE:Leap 15.5 | kernel-default-base | 5.14.21-150500.55.59.1.150500.6.25.7 öncesi | 5.14.21-150500.55.59.1.150500.6.25.7 |
| openSUSE:Leap 15.5 | kernel-docs | 5.14.21-150500.55.59.1 öncesi | 5.14.21-150500.55.59.1 |
| openSUSE:Leap 15.5 | kernel-kvmsmall | 5.14.21-150500.55.59.1 öncesi | 5.14.21-150500.55.59.1 |
| openSUSE:Leap 15.5 | kernel-obs-build | 5.14.21-150500.55.59.1 öncesi | 5.14.21-150500.55.59.1 |
| openSUSE:Leap 15.5 | kernel-obs-qa | 5.14.21-150500.55.59.1 öncesi | 5.14.21-150500.55.59.1 |
| openSUSE:Leap 15.5 | kernel-rt | 5.14.21-150500.13.47.1 öncesi | 5.14.21-150500.13.47.1 |
| openSUSE:Leap 15.5 | kernel-rt_debug | 5.14.21-150500.13.47.1 öncesi | 5.14.21-150500.13.47.1 |
| openSUSE:Leap 15.5 | kernel-source | 5.14.21-150500.55.59.1 öncesi | 5.14.21-150500.55.59.1 |
| openSUSE:Leap 15.5 | kernel-source-azure | 5.14.21-150500.33.48.1 öncesi | 5.14.21-150500.33.48.1 |
| openSUSE:Leap 15.5 | kernel-source-rt | 5.14.21-150500.13.47.1 öncesi | 5.14.21-150500.13.47.1 |
| openSUSE:Leap 15.5 | kernel-syms | 5.14.21-150500.55.59.1 öncesi | 5.14.21-150500.55.59.1 |
| openSUSE:Leap 15.5 | kernel-syms-azure | 5.14.21-150500.33.48.1 öncesi | 5.14.21-150500.33.48.1 |
| openSUSE:Leap 15.5 | kernel-syms-rt | 5.14.21-150500.13.47.1 öncesi | 5.14.21-150500.13.47.1 |
| openSUSE:Leap 15.5 | kernel-zfcpdump | 5.14.21-150500.55.59.1 öncesi | 5.14.21-150500.55.59.1 |
| openSUSE:Leap Micro 5.3 | kernel-default | 5.14.21-150400.24.116.1 öncesi | 5.14.21-150400.24.116.1 |
| openSUSE:Leap Micro 5.3 | kernel-default-base | 5.14.21-150400.24.116.1.150400.24.54.5 öncesi | 5.14.21-150400.24.116.1.150400.24.54.5 |
| openSUSE:Leap Micro 5.3 | kernel-rt | 5.14.21-150400.15.76.1 öncesi | 5.14.21-150400.15.76.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS | kernel-64kb | 5.14.21-150400.24.116.1 öncesi | 5.14.21-150400.24.116.1 |
+27
Aynı üründe
linux: tüm kayıtlarAynı birincil ürünün en yüksek skorlu diğer kayıtları.
- CVE-2026-31431crypto: algif_aead - Revert to operating out-of-placeKEV90Hemen
- 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
Bu üründe bundan önce ve sonra yayımlananlar
- ← ÖncekiCVE-2021-470924 Mar 2024 · KVM: VMX: Always clear vmx->fail on emulation_required22İzleyin
- ← ÖncekiCVE-2021-470934 Mar 2024 · platform/x86: intel_pmc_core: fix memleak on registration failure22İzleyin
- Sonraki →CVE-2021-470954 Mar 2024 · ipmi: ssif: initialize ssif_info->client early22İzleyin
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 | 3a0f64de479cae75effb630a2e0a237ca0d0623c | Üretici (CNA) |
| Linux Linux | d884eefd75cc54887bc2e9e724207443525dfb2c | Üretici (CNA) |
| debian:linux | 5.15.15-1 · Debian:12 | Paket deposu (OSV) |
| opensuse:dtb-aarch64 | 5.14.21-150500.55.59.1 · openSUSE:Leap 15.5 | Paket deposu (OSV) |
| opensuse:kernel-64kb | 5.14.21-150500.55.59.1 · openSUSE:Leap 15.5 | Paket deposu (OSV) |
| opensuse:kernel-debug | 5.14.21-150500.55.59.1 · openSUSE:Leap 15.5 | Paket deposu (OSV) |
| opensuse:kernel-default | 5.14.21-150400.24.116.1 · openSUSE:Leap Micro 5.3 | Paket deposu (OSV) |
| opensuse:kernel-default-base | 5.14.21-150400.24.116.1.150400.24.54.5 · openSUSE:Leap Micro 5.3 | Paket deposu (OSV) |
| opensuse:kernel-docs | 5.14.21-150500.55.59.1 · openSUSE:Leap 15.5 | Paket deposu (OSV) |
| opensuse:kernel-kvmsmall | 5.14.21-150500.55.59.1 · openSUSE:Leap 15.5 | Paket deposu (OSV) |
| opensuse:kernel-obs-build | 5.14.21-150500.55.59.1 · openSUSE:Leap 15.5 | Paket deposu (OSV) |
| opensuse:kernel-rt | 5.14.21-150400.15.76.1 · openSUSE:Leap Micro 5.3 | Paket deposu (OSV) |
| opensuse:kernel-rt_debug | 5.14.21-150500.13.47.1 · openSUSE:Leap 15.5 | Paket deposu (OSV) |
| opensuse:kernel-source-rt | 5.14.21-150500.13.47.1 · openSUSE:Leap 15.5 | Paket deposu (OSV) |
| opensuse:kernel-syms-rt | 5.14.21-150500.13.47.1 · openSUSE:Leap 15.5 | Paket deposu (OSV) |
| suse:kernel-64kb | 5.14.21-150400.24.116.1 · SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS | Paket deposu (OSV) |
| suse:kernel-default | 5.14.21-150400.24.116.1 · SUSE:Linux Enterprise Micro 5.3 | Paket deposu (OSV) |
| suse:kernel-default-base | 5.14.21-150400.24.116.1.150400.24.54.5 · SUSE:Linux Enterprise Micro 5.3 | Paket deposu (OSV) |
| suse:kernel-docs | 5.14.21-150400.24.116.1 · SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS | Paket deposu (OSV) |
| suse:kernel-livepatch-SLE15-SP4_Update_25 | 1-150400.9.5.1 · SUSE:Linux Enterprise Live Patching 15 SP4 | Paket deposu (OSV) |
| suse:kernel-livepatch-SLE15-SP5-RT_Update_13 | 1-150500.11.3.1 · SUSE:Linux Enterprise Live Patching 15 SP5 | Paket deposu (OSV) |
| suse:kernel-obs-build | 5.14.21-150400.24.116.1 · SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS | Paket deposu (OSV) |
| suse:kernel-rt | 5.14.21-150400.15.76.1 · SUSE:Linux Enterprise Micro 5.3 | Paket deposu (OSV) |
| suse:kernel-source | 5.14.21-150400.24.116.1 · SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS | Paket deposu (OSV) |
| suse:kernel-source-rt | 5.14.21-150400.15.76.1 · SUSE:Linux Enterprise Micro 5.3 | Paket deposu (OSV) |
| suse:kernel-syms | 5.14.21-150400.24.116.1 · SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS | Paket deposu (OSV) |
| suse:kernel-zfcpdump | 5.14.21-150400.24.116.1 · SUSE:Linux Enterprise Server 15 SP4-LTSS | 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ıklayın, aynı araştırmacının diğer kayıtlarını görün.
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).
Ulusal bildirim (Siber Güvenlik Başkanlığı / USOM)
Bu kaydı anan resmi güvenlik bildirimleri; çözüm önerisi kurumun sayfasında.
- TR-24-0167 · 5 Mar 2024(Linux Kernel Güncellemesi)
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)
—
CVSS vektörü
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
nvd-secondary
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
Tüm referansları göster (1 daha)Daha az göster
Üretici bildirimleri ve resmî kayıtlar. İstismar/PoC bağlantıları bilinçli olarak dışarıda bırakıldı.