CVE-2025-21682 in Linux
요약
\~에 의해 VulDB • 2026. 05. 22.
리눅스 커널에서 다음 취약점이 해결되었습니다:
eth: bnxt: XDP 해제 후 항상 기능 재계산, null-deref 수정
XDP가 분리될 때 기능을 재계산합니다.
이전: # 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]
이후: # 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
HW-GRO가 자동으로 다시 활성화되지 않는 것은 사소한 불편함일 뿐입니다. 실제 문제는 다른 재구성 시도가 우연히 netdev_update_features()를 호출할 때 기능이 무작위로 다시 나타날 수 있다는 점입니다. 이 드라이버는 두 가지 사항을 동시에 재구성하는 상황을 매우 견고하게 처리하지 못합니다.
커밋 98ba1d931f61("bnxt_en: Fix RSS logic in __bnxt_reserve_rings()")부터는 "유효"한 Rx 링의 수가 변경된 경우에만 RSS 해시 테이블을 재구성합니다. HW-GRO가 활성화되어 있으면 "유효"한 링 수는 사용자가 보는 것의 2배입니다. 따라서 XDP 해제 후 HW-GRO 재활성화가 "대기" 중인 나쁜 상태에 있고 링 수를 / 2로 줄이면, 2배로 동작하는 HW-GRO 링과 / 2로 동작하는 ethtool -L이 서로 상쇄될 수 있으며, 다음과 같은 조건이:
if (old_rx_rings != bp->hw_resc.resv_rx_rings &&
__bnxt_reserve_rings()에서 false가 됩니다. RSS 맵이 업데이트되지 않으며, 다음과 같은 크래시가 발생합니다:
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
해제된 링에 접근하려고 할 때 발생합니다.
이 문제는 XDP 지원이 추가된 이후로 존재해 왔지만, 커밋 98ba1d931f61("bnxt_en: Fix RSS logic in __bnxt_reserve_rings()") 이전에는 주요 문제를 일으키지 않았습니다.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.