vgic_its_invalidate_cache()xa_for_each()vgic_put_irq()xa_erase()GITS_CTLREnableLPIsMặc dù các lỗ hổng 'vượt ngục' từ máy ảo lên máy chủ là rất hiếm, nhưng chúng là loại lỗi nguy hiểm nhất của phần mềm ảo hóa vì chúng phá vỡ ranh giới cô lập mà điện toán đám mây phụ thuộc vào. Các lần 'vượt ngục' KVM công khai trước đây nhắm vào kiến trúc x86, thường là thông qua QEMU hoặc mã dành riêng cho AMD . ITScape là mã khai thác đầu tiên chứng minh khả năng thoát khỏi một máy ảo arm64 không có đặc quyền thông qua chính mã KVM trong nhân — không cần lỗi từ trình giả lập trong không gian người dùng
.
Đối với các nhà cung cấp đám mây chạy Graviton, Ampere Altra, hoặc bất kỳ máy chủ KVM arm64 nào có khối lượng công việc đa khách thuê, một máy ảo có thể:
Hầu hết các đội bảo mật đã đánh giá lỗ hổng này trên 9.0 điểm CVSS, phản ánh mức độ nghiêm trọng của nó .
Mã lỗi nằm trong đường dẫn vô hiệu hóa bộ nhớ đệm dịch LPI. Khi nhân cần xóa các mục trong bộ nhớ đệm, nó lặp qua XArray bằng xa_for_each() và gọi vgic_put_irq() để giải phóng bộ đếm tham chiếu trên mỗi mục. Vấn đề là xa_for_each() trả về các mục có thể đã bị xóa bởi một thao tác đồng thời — chẳng hạn như lệnh DISCARD ITS được gửi từ một vCPU khác. Vòng lặp vô hiệu hóa vẫn thực hiện giải phóng tham chiếu trên mục đã bị xóa, gây ra tình trạng giải phóng hai lần và cuối cùng là use-after-free
.
Một lỗ hổng trước đó trong cùng mã nguồn, CVE-2024-26598, đã giải quyết một phần UAF trong đường dẫn truy cập bộ nhớ đệm dịch LPI bằng cách tăng bộ đếm tham chiếu bên trong vgic_its_check_cache() trước khi mở khóa. Bản sửa lỗi đó không bao phủ đường dẫn vô hiệu hóa, khiến race condition vẫn có thể bị khai thác thông qua một chuỗi kích hoạt khác
.
Bản sửa lỗi chính thức sửa đổi vgic_its_invalidate_cache() sao cho vgic_put_irq() chỉ được gọi trên giá trị được trả về bởi xa_erase(), chứ không phải trên mọi mục mà trình vòng lặp chạm tới
.
Bởi vì xa_erase() tự động xóa và trả về mục cũ — hoặc trả về NULL nếu mục đó đã biến mất — nên bản sửa lỗi đảm bảo bộ đếm tham chiếu chỉ bị giảm đúng một lần, loại bỏ hoàn toàn cửa sổ giải phóng hai lần. Bản vá đã được đưa vào nhân chính vào đầu tháng 6 năm 2026 và nhanh chóng được tích hợp vào chuỗi nhân ổn định 6.x trong khoảng ngày 8–10 tháng 6 năm 2026
. Các bản phân phối lớn như Red Hat, SUSE và Debian đã phát hành các bản vá backport cho các nhánh nhân được hỗ trợ của họ
.
Hyunwoo Kim đã công khai phát hành một mã khai thác hoạt động trên GitHub vào khoảng ngày 9-10 tháng 6 năm 2026. Kho lưu trữ bao gồm mã nguồn đầy đủ, hướng dẫn tái tạo từng bước và mô tả kỹ thuật về phương pháp khai thác . Mã khai thác kích hoạt race condition bằng cách phối hợp các luồng vCPU đồng thời gửi lệnh DISCARD và tra cứu bộ nhớ đệm dịch LPI, tận dụng chính xác use-after-free để thực thi mã trên máy chủ.
Sự sẵn có công khai của một PoC đáng tin cậy có nghĩa là các trình quét khai thác thương mại và những kẻ tấn công thực tế có thể vũ khí hóa lỗ hổng này với nỗ lực tối thiểu, rút ngắn khoảng thời gian từ lúc công bố đến khi có các cuộc tấn công chủ động.
Nếu bạn đang vận hành hạ tầng KVM arm64 đa khách thuê — AWS Graviton, Ampere Altra hoặc bất kỳ nền tảng tương tự nào — hãy coi đây là một chu kỳ vá lỗi khẩn cấp ngay lập tức.
Comments
0 comments