CVE-2026-64525 in Linuxthông tin

Tóm tắt

Bởi VulDB • 25/07/2026

Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:

xfrm: di chuyển đồng bộ hóa RCU của policy_bydst từ .exit per-netns sang .pre_exit

Chú thích tài liệu (docstring) cho struct pernet_operations trong include/net/net_namespace.h cảnh báo rõ ràng về việc không sử dụng các nguyên thủy RCU gây chặn (blocking primitives) trong các trình xử lý (.handler) ở giai đoạn .exit:

Các phương thức exit sử dụng các nguyên thủy RCU gây chặn, chẳng hạn như synchronize_rcu(), nên được triển khai thông qua exit_batch. [...]
Vui lòng tránh hoàn toàn việc gọi synchronize_rcu() nếu có thể.

Lưu ý rằng sự kết hợp giữa pre_exit() và exit() có thể được sử dụng, vì một lệnh gọi synchronize_rcu() sẽ được đảm bảo thực thi giữa hai lần gọi này.

xfrm_policy_fini() vi phạm quy tắc này: nó gọi synchronize_rcu() trước khi giải phóng các bảng băm policy_bydst (do đó không còn trình đọc RCU nào đang trong quá trình duyệt qua dữ liệu tại thời điểm giải phóng), nhưng hàm này chạy từ xfrm_net_ops.exit -- một lần cho mỗi namespace -- khiến việc cleanup_net() đối với N namespaces phải trả giá bằng N chu kỳ ân huệ RCU (RCU grace periods) đầy đủ theo thứ tự tuần tự.

Sử dụng sự phân tách pre_exit/exit được tài liệu hóa. Di chuyển phần làm sạch policy (và các hàng đợi công việc mà nó phụ thuộc vào) vào một trình xử lý .pre_exit mới; xfrm_policy_fini() sau đó sẽ chạy trong giai đoạn .exit và giải phóng các bảng băm sau lệnh gọi synchronize_rcu_expedited() được cleanup_net() đảm bảo thực thi giữa hai pha. Điều này cung cấp chu kỳ ân huệ RCU với độ phức tạp O(1) cho mỗi batch thay vì O(N).

Đã quan sát thấy trên Linux 6.18 với một tác vụ tải làm việc gọi unshare(CLONE_NEWNET) ở tốc độ duy trì ~13 lần/giây: cleanup_net() và kthread rescuer của netns_wq đều bị treo trong synchronize_rcu() của xfrm_policy_fini(), hơn 300k struct net đã tích lũy trong hàng đợi dọn dẹp, bộ nhớ Percpu trên /proc/meminfo tăng lên hơn 130 GB trên các máy chủ có 256 CPU, và sau đó là các sự kiện OOM (Out Of Memory) của memcg. Các đếm setup_net và __put_net được cân bằng, loại trừ khả năng rò rỉ bộ tham chiếu (refcount leak).

If you want to get best quality of vulnerability data, you may have to visit VulDB.

chịu trách nhiệm

Linux

Đặt trước

19/07/2026

Tiết lộ

25/07/2026

Kiểm duyệt

được chấp nhận

EPSS

0.00000

KEV

không

Các hoạt động

thấp

Nguồn

Do you need the next level of professionalism?

Upgrade your account now!