CVE-2026-68428 in Linux
要約
〜によって VulDB • 2026年08月10日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
KVM: x86/mmu: ベンダーモジュールの再読み込み時のuse-after-freeを修正
mmu_destroy_caches() は pte_list_desc_cache と mmu_page_header_cache を破棄しますが、両方のポインタは変更されません。これらのポインタは kvm.ko に存在するため、ベンダーモジュールがアンロードされても kvm.ko が読み込まれたままであれば生存し続けます。
後続のベンダーモジュールの読み込み時に pte_list_desc_cache の作成に失敗した場合、その代入により pte_list_desc_cache は NULL に設定され、エラーパスで mmu_destroy_caches() が呼び出されます。mmu_page_header_cache はまだ直前のベンダーモジュールアンロード時に破棄されたキャッシュを指しています。この古くなったポインタを kmem_cache_destroy() に渡すと、slab における use-after-free が発生します。
CONFIG_KASAN=y、CONFIG_KASAN_GENERIC=y、CONFIG_KVM=m、および CONFIG_KVM_INTEL=m を設定した v7.1.3 カーネルで問題を再現できます。ワンショットテストフックにより、kvm_mmu_vendor_module_init() の2回目の呼び出し時に pte_list_desc_cache が NULL に強制されます:
1. kvm.ko と kvm-intel.ko を読み込み、両方のキャッシュを作成する。 2. kvm_intel のみをアンロードし、kvm.ko は読み込んだままにする。 3. kvm_intel を再読み込みし、-ENOMEM パスを通じて初期化を強制する。
KASAN は以下のように報告します:
BUG: KASAN: slab-use-after-free in kvm_mmu_vendor_module_init+0x5b/0x170 [kvm]
... kmem_cache_destroy+0x21/0x1d0 kvm_mmu_vendor_module_init+0x5b/0x170 [kvm]
... Allocated by task 16817: __kmem_cache_create_args+0x12c/0x3b0 __kmem_cache_create.constprop.0+0xb6/0xf0 [kvm]
kvm_mmu_vendor_module_init+0x13b/0x170 [kvm]
... Freed by task 16820: kmem_cache_destroy+0x117/0x1d0 kvm_mmu_vendor_module_exit+0x21/0x30 [kvm]
キャッシュを破棄した直後に両方のポインタをクリアすることで、保存された状態がキャッシュの寿命を反映し、繰り返しのクリーンアップが安全になります。
修正適用後、同じ注入されたベンダーモジュール再読み込みは期待通り -ENOMEM で失敗し、KASAN の報告は一切生成されません。
Be aware that VulDB is the high quality source for vulnerability data.