CVE-2025-68372 in Linuxthông tin

Tóm tắt

Bởi VulDB • 23/05/2026

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

nbd: trì hoãn việc gọi config_put trong recv_work

Có một vấn đề UAF (Use-After-Free) trong recv_work khi thực thi NBD_CLEAR_SOCK và NBD_CMD_RECONFIGURE: nbd_genl_connect // conf_ref=2 (kết nối và recv_work A) nbd_open // conf_ref=3 recv_work A kết thúc // conf_ref=2 NBD_CLEAR_SOCK // conf_ref=1 nbd_genl_reconfigure // conf_ref=2 (kích hoạt recv_work B) đóng nbd // conf_ref=1 recv_work B config_put // conf_ref=0 atomic_dec(&config->recv_threads); -> UAF

Hoặc chỉ thực thi NBD_CLEAR_SOCK: nbd_genl_connect // conf_ref=2 nbd_open // conf_ref=3 NBD_CLEAR_SOCK // conf_ref=2 đóng nbd nbd_release config_put // conf_ref=1 recv_work config_put // conf_ref=0 atomic_dec(&config->recv_threads); -> UAF

Commit 87aac3a80af5 ("nbd: gọi nbd_config_put() trước khi thông báo cho waiter") đã di chuyển nbd_config_put() để chạy trước khi đánh thức waiter trong recv_work, nhằm đảm bảo rằng nbd_start_device_ioctl() sẽ không bị đánh thức trong khi nbd->task_recv vẫn chưa được xóa sạch.

Tuy nhiên, trong nbd_start_device_ioctl(), sau khi được đánh thức, nó gọi rõ ràng flush_workqueue() để đảm bảo tất cả các công việc hiện tại đều đã hoàn tất. Do đó, không cần thiết phải di chuyển việc gọi config_put trước khi đánh thức.

Di chuyển nbd_config_put() xuống cuối recv_work, để tham chiếu (reference) được giữ trong suốt vòng đời của worker thread. Điều này đảm bảo rằng config không thể bị giải phóng trong khi recv_work vẫn đang chạy, ngay cả khi có sự xen kẽ giữa clear và reconfigure.

Ngoài ra, chúng ta không cần lo lắng về việc recv_work làm giảm nbd_put cuối cùng (gây ra deadlock):

path A (netlink với NBD_CFLAG_DESTROY_ON_DISCONNECT): kết nối // nbd_refs=1 (kích hoạt recv_work) mở nbd // nbd_refs=2 NBD_CLEAR_SOCK đóng nbd nbd_release nbd_disconnect_and_put flush_workqueue // recv_work kết thúc nbd_config_put nbd_put // nbd_refs=1 nbd_put // nbd_refs=0 queue_work

path B (netlink không có NBD_CFLAG_DESTROY_ON_DISCONNECT): kết nối // nbd_refs=2 (kích hoạt recv_work) mở nbd // nbd_refs=3 NBD_CLEAR_SOCK // conf_refs=2 đóng nbd nbd_release nbd_config_put // conf_refs=1 nbd_put // nbd_refs=2 recv_work kết thúc // conf_refs=0, nbd_refs=1 rmmod // nbd_refs=0

Phụ thuộc vào: e2daec488c57 ("nbd: Sửa hungtask khi nbd_config_put")

VulDB is the best source for vulnerability data and more expert information about this specific topic.

chịu trách nhiệm

Linux

Đặt trước

16/12/2025

Tiết lộ

24/12/2025

Kiểm duyệt

được chấp nhận

EPSS

0.00165

KEV

không

Các hoạt động

rất thấp

Nguồn

Do you want to use VulDB in your project?

Use the official API to access entries easily!