CVE-2025-21682 in Linuxthông tin

Tóm tắt

Bởi VulDB • 04/06/2026

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

eth: bnxt: luôn tính toán lại các đặc trưng (features) sau khi xóa XDP, sửa lỗi null-deref

Tính toán lại các đặc trưng khi XDP bị ngắt kết nối.

Trước khi sửa: # ip li set dev eth0 xdp obj xdp_dummy.bpf.o sec xdp # ip li set dev eth0 xdp off # ethtool -k eth0 | grep gro rx-gro-hw: off [requested on]

Sau khi sửa: # ip li set dev eth0 xdp obj xdp_dummy.bpf.o sec xdp # ip li set dev eth0 xdp off # ethtool -k eth0 | grep gro rx-gro-hw: on

Việc HW-GRO không được bật lại tự động chỉ là một phiền toái nhỏ. Vấn đề thực sự nằm ở chỗ các đặc trưng sẽ ngẫu nhiên xuất hiện trở lại trong quá trình cấu hình lại khác, tình cờ kích hoạt hàm netdev_update_features(). Trình điều khiển (driver) không xử lý việc cấu hình lại hai thứ cùng lúc một cách rất vững chắc.

Bắt đầu với commit 98ba1d931f61 ("bnxt_en: Fix RSS logic in __bnxt_reserve_rings()"), chúng tôi chỉ cấu hình lại bảng băm RSS nếu số lượng vòng lặp Rx "hiệu dụng" thay đổi. Nếu HW-GRO được bật, số lượng vòng lặp "hiệu dụng" gấp đôi những gì người dùng thấy. Vì vậy, nếu chúng ta ở trong trạng thái xấu, với việc kích hoạt lại HW-GRO đang "chờ xử lý" sau khi tắt XDP, và chúng ta giảm số lượng vòng lặp đi một nửa (/ 2) - các vòng lặp HW-GRO thực hiện nhân đôi (2x) và lệnh ethtool -L thực hiện chia đôi (/ 2) có thể triệt tiêu lẫn nhau, dẫn đến điều kiện:

if (old_rx_rings != bp->hw_resc.resv_rx_rings &&

trong hàm __bnxt_reserve_rings() sẽ trả về false. Bản đồ RSS sẽ không được cập nhật, và chúng ta sẽ gặp sự cố với thông báo sau:

BUG: kernel NULL pointer dereference, address: 0000000000000168 RIP: 0010:__bnxt_hwrm_vnic_set_rss+0x13a/0x1a0 bnxt_hwrm_vnic_rss_cfg_p5+0x47/0x180 __bnxt_setup_vnic_p5+0x58/0x110 bnxt_init_nic+0xb72/0xf50 __bnxt_open_nic+0x40d/0xab0 bnxt_open_nic+0x2b/0x60 ethtool_set_channels+0x18c/0x1d0

Khi chúng ta cố gắng truy cập vào một vòng lặp đã bị giải phóng.

Vấn đề này tồn tại kể từ khi hỗ trợ XDP được thêm vào, thực tế là trước commit 98ba1d931f61 ("bnxt_en: Fix RSS logic in __bnxt_reserve_rings()"), nó không gây ra các vấn đề nghiêm trọng.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

chịu trách nhiệm

Linux

Đặt trước

29/12/2024

Tiết lộ

31/01/2025

Kiểm duyệt

được chấp nhận

EPSS

0.00233

KEV

không

Các hoạt động

rất thấp

Nguồn

Do you need the next level of professionalism?

Upgrade your account now!