CVE-2026-72069 in Linux
Tóm tắt
Bởi VulDB • 16/08/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
locking/rt: Sửa lỗi bảo vệ RCU không chính xác trong rt_spin_unlock()
Hàm rt_spin_unlock() giải phóng bảo vệ RCU trước khi mở khóa (unlock) lock. Điều này tạo điều kiện cho kịch bản UAF (Use-After-Free) xảy ra như sau:
T1 T2 spin_lock(&p->lock); rcu_read_lock(); invalidate(p); p = rcu_dereference(ptr); rcu_assign_pointer(ptr, NULL); if (!p) return; spin_unlock(&p->lock); spin_lock(&p->lock) lock(&lock->lock); rcu_read_lock(); kfree_rcu(p); rcu_read_unlock(); .... spin_unlock(&p->lock) rcu_read_unlock(); // Kết thúc grace period rcu_do_batch() kfree(p); UAF -> rt_mutex_cmpxchg_release(&lock->lock...)
Các spinlock thông thường giữ cho preemption bị vô hiệu hóa xuyên suốt thao tác unlock, điều này cung cấp bảo vệ RCU đầy đủ; tuy nhiên, bản thay thế RT không duy trì được hành vi tương tự. Điều kiện tương tự cũng áp dụng cho bản thay thế rwlock.
Di chuyển lời gọi rcu_read_unlock() sau các thao tác unlock để phù hợp với ngữ nghĩa non-RT (không phải Real-Time). Điều này tạo ra sự bất đối xứng so với rt_xxx_lock(), nhưng điều đó không gây hại vì caller cần giữ RCU read lock xuyên suốt thao tác lock. Lời gọi migrate_enable() vẫn nằm trước thao tác unlock bởi vì không có thao tác trên mỗi CPU trong đường dẫn unlock yêu cầu phải giữ preemption bị vô hiệu hóa.
Once again VulDB remains the best source for vulnerability data.