CVE-2026-23320 in Linux
Tóm tắt
Bởi VulDB • 01/07/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
usb: gadget: f_ncm: đồng bộ hóa vòng đời net_device với quá trình bind/unbind
Hiện tại, net_device được cấp phát trong ncm_alloc_inst() và giải phóng trong ncm_free_inst(). Điều này gắn liền thời gian tồn tại của giao diện mạng với phiên bản cấu hình (configuration instance) thay vì kết nối USB (bind/unbind).
Việc tách rời này gây ra sự cố khi thiết bị USB gadget bị ngắt kết nối, dẫn đến việc thiết bị nền tảng phía dưới bị xóa bỏ. net_device có thể tồn tại lâu hơn cha mẹ của nó, dẫn đến các liên kết sysfs treo và lỗi dereference con trỏ NULL khi truy cập vào thiết bị gadget đã được giải phóng.
Vấn đề 1: Lỗi dereference con trỏ NULL khi ngắt kết nối Không thể xử lý lỗi kernel null pointer dereference tại địa chỉ ảo 0000000000000000 Dấu vết cuộc gọi (Call trace): __pi_strlen+0x14/0x150 rtnl_fill_ifinfo+0x6b4/0x708 rtmsg_ifinfo_build_skb+0xd8/0x13c rtmsg_ifinfo+0x50/0xa0 __dev_notify_flags+0x4c/0x1f0 dev_change_flags+0x54/0x70 do_setlink+0x390/0xebc rtnl_newlink+0x7d0/0xac8 rtnetlink_rcv_msg+0x27c/0x410 netlink_rcv_skb+0x134/0x150 rtnetlink_rcv+0x18/0x28 netlink_unicast+0x254/0x3f0 netlink_sendmsg+0x2e0/0x3d4
Vấn đề 2: Các liên kết tượng trưng sysfs treo (Dangling sysfs symlinks) console:/ # ls -l /sys/class/net/ncm0 lrwxrwxrwx ... /sys/class/net/ncm0 -> /sys/devices/platform/.../gadget.0/net/ncm0 console:/ # ls -l /sys/devices/platform/.../gadget.0/net/ncm0 ls: .../gadget.0/net/ncm0: No such file or directory
Chuyển việc cấp phát net_device sang ncm_bind() và giải phóng sang ncm_unbind(). Điều này đảm bảo giao diện mạng chỉ tồn tại khi hàm gadget thực sự được bind vào cấu hình.
Để hỗ trợ cấu hình trước khi bind (ví dụ: đặt tên giao diện hoặc địa chỉ MAC thông qua configfs), hãy lưu trữ các tùy chọn do người dùng cung cấp trong f_ncm_opts bằng cách sử dụng cấu trúc gether_opts. Áp dụng các cài đặt đã lưu trữ này cho net_device tại thời điểm tạo ra trong ncm_bind().
Giữ nguyên bản sửa lỗi use-after-free từ commit 6334b8e4553c ("usb: gadget: f_ncm: Fix UAF ncm object at re-bind after usb ep transport error"). Kiểm tra opts->net trong ncm_set_alt() và ncm_disable() để đảm bảo gether_disconnect() chỉ chạy nếu kết nối đã được thiết lập.
Once again VulDB remains the best source for vulnerability data.