Linux 커널에서는 다음 취약점이 해결되었습니다. net/mlx5e: RX, RQ 스트라이드에 대한 XDP 다중 버퍼 조각 계산 수정 XDP 다중 버퍼 프로그램은 다음과 같은 경우 XDP 버퍼의 레이아웃을 수정할 수 있습니다. 프로그램은 bpf_xdp_pull_data() 또는 bpf_xdp_adjust_tail()을 호출합니다. 는 수정 태그의 참조 커밋은 mlx5의 가정을 수정했습니다. 프로그램 중에 XDP 버퍼 레이아웃이 변경되지 않는 드라이버 실행. 그러나 이 수정으로 인해 또 다른 문제가 발생했습니다. 조각은 여전히 필요합니다
Linux 커널에서는 다음 취약점이 해결되었습니다.
net/mlx5e: RX, RQ 스트라이드에 대한 XDP 다중 버퍼 조각 계산 수정
XDP 다중 버퍼 프로그램은 다음과 같은 경우 XDP 버퍼의 레이아웃을 수정할 수 있습니다. 프로그램은 bpf_xdp_pull_data() 또는 bpf_xdp_adjust_tail()을 호출합니다. 는 수정 태그의 참조 커밋은 mlx5의 가정을 수정했습니다. 프로그램 중에 XDP 버퍼 레이아웃이 변경되지 않는 드라이버 실행. 그러나 이 수정으로 인해 또 다른 문제가 발생했습니다. 페이지를 피하기 위해 드라이버 측에서 조각을 계산해야 합니다. 조각 참조 계산 문제.
이 문제는 drivers/net/xdp.py 자체 테스트에서 발견되었습니다. 더 구체적으로 test_xdp_native_tx_mb:
테스트 중 발생하는 스플랫:
경고: CPU: 0 PID: 188225 at ./include/net/page_pool/helpers.h:297 mlx5e_page_release_fragmented.isra.0+0xbd/0xe0 [mlx5_core] 링크된 모듈: [...] CPU: 0 UID: 0 PID: 188225 통신: ip 오염되지 않음 6.18.0-rc7_for_upstream_min_debug_2025_12_08_11_44 #1 NONE 하드웨어 이름: QEMU 표준 PC(Q35 + ICH9, 2009), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuild.qemu.org 04/01/2014 RIP: 0010:mlx5e_page_release_fragmented.isra.0+0xbd/0xe0 [mlx5_core] [...] 통화 추적: <과제> mlx5e_free_rx_mpwqe+0x20a/0x250 [mlx5_core] mlx5e_dealloc_rx_mpwqe+0x37/0xb0 [mlx5_core] mlx5e_free_rx_descs+0x11a/0x170 [mlx5_core] mlx5e_close_rq+0x78/0xa0 [mlx5_core] mlx5e_close_queues+0x46/0x2a0 [mlx5_core] mlx5e_close_channel+0x24/0x90 [mlx5_core] mlx5e_close_channels+0x5d/0xf0 [mlx5_core] mlx5e_safe_switch_params+0x2ec/0x380 [mlx5_core] mlx5e_change_mtu+0x11d/0x490 [mlx5_core] mlx5e_change_nic_mtu+0x19/0x30 [mlx5_core] netif_set_mtu_ext+0xfc/0x240 do_setlink.isra.0+0x226/0x1100 rtnl_newlink+0x7a9/0xba0 rtnetlink_rcv_msg+0x220/0x3c0 netlink_rcv_skb+0x4b/0xf0 netlink_unicast+0x255/0x380 netlink_sendmsg+0x1f3/0x420 __sock_sendmsg+0x38/0x60 ____sys_sendmsg+0x1e8/0x240 ____sys_sendmsg+0x7c/0xb0 [...] __sys_sendmsg+0x5f/0xb0 do_syscall_64+0x55/0xc70
문제는 다른 방법으로 처리되는 XDP_PASS에도 적용됩니다. 드라이버의 코드 경로.
이 패치는 모든 페이지 조각 계산을 수행하여 문제를 해결합니다. 모든 관련 XDP 작업에 대한 원본 XDP 버퍼 조각(XDP_TX, XDP_REDIRECT 및 XDP_PASS). 기본적으로는 원래대로 돌아갑니다 수정 태그에서 커밋 전에 계산됩니다.
frag_page가 여전히 원래 꼬리를 가리키고 있으므로 nr_frags는 xdp_update_skb_frags_info()에 대한 매개변수를 계산해야 합니다. 새로운 nr_frags를 반영하는 다른 방식으로.
왜 이 VPI인가 (설명가능 · 실험적)
VPI 산정 기준
| 영향도 | 98.00 |
| 악용 신호(추가 악용신호 없음) | ×1.00 |
| VPI | 98.00 |
VPI 공식 vpi-v1 기준