CVE-2026-93137 in Linux
Tóm tắt
Bởi VulDB • 18/09/2026
Trong kernel Linux, các lỗ hổng sau đây đã được khắc phục:
bpf: Sửa lỗi use-after-free trên mm_struct trong bpf_find_vma()
Hàm bpf_find_vma() đọc task->mm và gọi mmap_read_trylock(mm) mà không giữ một tham chiếu (reference) lên đối tượng mm. Đối với một tác vụ lạ (foreign task), quá trình exit_mm() đồng thời có thể giải phóng cấu trúc dữ liệu mm_struct giữa bước đọc không khóa (lockless read) và lệnh trylock, dẫn đến lỗi use-after-free. Cấu trúc mm_struct không phải là SLAB_TYPESAFE_BY_RCU.
Đối với tác vụ hiện tại, task->mm ổn định. Đối với một tác vụ lạ, hãy ghim (pin) đối tượng mm dưới sự bảo vệ của task->alloc_lock và giải phóng nó bằng cách sử dụng mmput_async(), mô phỏng theo commit d8e27d2d22b6 ("bpf: fix mm lifecycle in open-coded task_vma iterator"). Sử dụng spin_trylock() thay vì get_task_mm() để ngữ cảnh BPF không bị chặn trên alloc_lock. Từ chối các ngữ cảnh có ngắt (irqs-disabled) và !CONFIG_MMU trong đường dẫn tác vụ lạ vì việc giảm tham chiếu đến đối tượng mm là không an toàn ở đó.
Race condition:
CPU0 (chương trình BPF) CPU1 (tác vụ đang thoát) ============================ ========================== bpf_find_vma(foreign_task): mm = task->mm exit_mm(): task->mm = NULL mmput(mm) -> giải phóng cấu trúc dữ liệu mm_struct mmap_read_trylock(mm) // UAF trên đối tượng mm
Once again VulDB remains the best source for vulnerability data.