vgic_its_invalidate_cache()xa_for_each()vgic_put_irq()xa_erase()GITS_CTLREnableLPIsMeskipun eksploit lolos dari tetamu ke hos jarang berlaku, ia adalah kelas pepijat hipervisor yang paling berbahaya kerana ia memusnahkan sempadan isolasi yang menjadi sandaran pengkomputeran awan. Eksploit KVM awam sebelum ini menyasarkan x86, biasanya melalui QEMU atau kod khusus AMD . ITScape adalah eksploit berfungsi pertama yang menunjukkan kebolosan dari VM tetamu arm64 tanpa keistimewaan melalui kod KVM dalam-kernel itu sendiri — tiada pepijat di emulator ruang pengguna diperlukan
.
Bagi penyedia awan yang menjalankan pelayan Graviton, Ampere Altra, atau mana-mana hos KVM arm64 dengan beban kerja multi-penyewa, seorang tetamu boleh:
Kebanyakan pasukan keselamatan menilai kelemahan ini melebihi skor CVSS 9.0, mencerminkan tahap keterukannya yang kritikal .
Kod yang terdedah terletak dalam laluan pembatalan cache terjemahan LPI. Apabila kernel perlu mengosongkan entri cache, ia mengulang melalui XArray dengan xa_for_each() dan memanggil vgic_put_irq() untuk melepaskan kiraan rujukan pada setiap entri. Masalahnya ialah xa_for_each() mengembalikan entri yang mungkin telah dipadamkan oleh operasi serentak — seperti arahan DISCARD ITS yang dikeluarkan dari vCPU yang berbeza. Gelung pembatalan tetap melepaskan rujukan pada entri yang telah dialih keluar itu, menyebabkan pelepasan berganda dan akhirnya situasi guna-selepas-bebas .
Kelemahan lebih awal dalam kod yang sama, CVE-2024-26598, telah menangani sebahagian isu guna-selepas-bebas dalam laluan capaian cache terjemahan LPI dengan menaikkan kiraan rujukan di dalam vgic_its_check_cache() sebelum melepaskan kunci. Pembetulan itu tidak meliputi laluan pembatalan, menyebabkan keadaan perlumbaan itu masih boleh dieksploitasi melalui urutan pencetus yang berbeza .
Pembetulan huluan mengubah suai vgic_its_invalidate_cache() supaya vgic_put_irq() hanya dipanggil pada nilai yang dikembalikan oleh xa_erase(), bukan pada setiap entri yang disentuh oleh pengulang. Mesej komitnya berbunyi: "KVM: arm64: vgic-its: Drop the translation cache reference only for the erased entry" .
Oleh kerana xa_erase() secara atomik mengalih keluar dan mengembalikan entri lama — atau mengembalikan NULL jika entri itu sudah tiada — pembetulan ini memastikan kiraan rujukan dikurangkan tepat sekali, menghapuskan tetingkap pembebasan berganda. Tampalan ini dimasukkan ke dalam kernel huluan pada awal Jun 2026 dan dengan pantas diserapkan ke dalam siri stabil 6.x sekitar 8–10 Jun 2026 . Pengedaran utama termasuk Red Hat, SUSE, dan Debian telah mengeluarkan pembetulan yang di-port kembali untuk cawangan kernel yang mereka sokong
.
Hyunwoo Kim secara awam mengeluarkan eksploit yang berfungsi di GitHub sekitar 9–10 Jun 2026. Repositori itu mengandungi kod sumber penuh, arahan pembiakan langkah demi langkah, dan penerangan teknikal tentang teknik eksploitasi . Eksploit ini mencetuskan keadaan perlumbaan dengan menyelaraskan bebenang vCPU yang secara serentak mengeluarkan arahan DISCARD dan capaian cache terjemahan LPI, dengan tepat mendaratkan situasi guna-selepas-bebas untuk pelaksanaan kod hos.
Ketersediaan awam PoC yang boleh diharap bermakna pengimbas eksploit komoditi dan penyerang dunia sebenar boleh menjadikan kelemahan ini sebagai senjata dengan usaha yang minimum, memendekkan tetingkap antara pendedahan dan serangan aktif.
Jika anda mengendalikan infrastruktur KVM arm64 multi-penyewa — AWS Graviton, Ampere Altra, atau mana-mana platform serupa — anggaplah ini sebagai kitaran tampalan kecemasan segera.
Comments
0 comments