CVE-2026-43464 in Linux
요약
\~에 의해 VulDB • 2026. 05. 22.
리눅스 커널에서 다음 취약점이 해결되었습니다:
net/mlx5e: RX, 레거시 RQ에 대한 XDP 다중 버퍼 조각(fragment) 카운팅 수정
XDP 다중 버퍼 프로그램은 `bpf_xdp_pull_data()` 또는 `bpf_xdp_adjust_tail()` 호출 시 XDP 버퍼의 레이아웃을 수정할 수 있습니다. 수정 태그(fixes tag)의 참조 커밋은 mlx5 드라이버에서 XDP 버퍼 레이아웃이 프로그램 실행 중 변경되지 않는다는 잘못된 가정은 수정했습니다. 그러나 이 수정은 또 다른 문제를 도입했습니다: 삭제된 조각(dropped fragments)은 페이지 조각 참조 카운팅(page fragment reference counting) 문제를 피하기 위해 드라이버 측에서 여전히 카운팅되어야 합니다.
이러한 문제는 페이로드가 3600이고 256바이트만큼 축소(shrinking)되는 경우(차후 selftest 패치 예정), `test_xdp_native_adjst_tail_shrnk_data` selftest를 사용할 때 관찰할 수 있습니다. 마지막 조각은 XDP 코드에 의해 해제되지만 드라이버에 의해 추적되지 않습니다. 이로 인해 페이지 해제 시 `pp_ref_count`가 음수가 되고 다음과 같은 스플래트(splat)가 발생합니다:
WARNING: include/net/page_pool/helpers.h:297 at mlx5e_page_release_fragmented.isra.0+0x4a/0x50 [mlx5_core], CPU#12: ip/3137
Modules linked in: [...]
CPU: 12 UID: 0 PID: 3137 Comm: ip Not tainted 6.19.0-rc3+ #12 NONE Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org 04/01/2014 RIP: 0010:mlx5e_page_release_fragmented.isra.0+0x4a/0x50 [mlx5_core]
[...]
Call Trace: <TASK> mlx5e_dealloc_rx_wqe+0xcb/0x1a0 [mlx5_core]
mlx5e_free_rx_descs+0x7f/0x110 [mlx5_core]
mlx5e_close_rq+0x50/0x60 [mlx5_core]
mlx5e_close_queues+0x36/0x2c0 [mlx5_core]
mlx5e_close_channel+0x1c/0x50 [mlx5_core]
mlx5e_close_channels+0x45/0x80 [mlx5_core]
mlx5e_safe_switch_params+0x1a5/0x230 [mlx5_core]
mlx5e_change_mtu+0xf3/0x2f0 [mlx5_core]
netif_set_mtu_ext+0xf1/0x230 do_setlink.isra.0+0x219/0x1180 rtnl_newlink+0x79f/0xb60 rtnetlink_rcv_msg+0x213/0x3a0 netlink_rcv_skb+0x48/0xf0 netlink_unicast+0x24a/0x350 netlink_sendmsg+0x1ee/0x410 __sock_sendmsg+0x38/0x60 ____sys_sendmsg+0x232/0x280 ___sys_sendmsg+0x78/0xb0 __sys_sendmsg+0x5f/0xb0 [...]
do_syscall_64+0x57/0xc50
이 패치는 관련 XDP 작업(XDP_TX, XDP_REDIRECT, XDP_PASS)에 대해 모든 원래 XDP 버퍼 조각에 대해 페이지 조각 카운팅을 수행하여 이 문제를 해결합니다. 이는 기본적으로 수정 태그의 참조 커밋 이전의 원래 카운팅 방식으로 되돌리는 것입니다.
frag_page가 여전히 원래 꼬리(tail)를 가리키고 있으므로, xdp_update_skb_frags_info()에 대한 nr_frags 매개변수는 새로운 nr_frags를 반영하기 위해 다른 방식으로 계산되어야 합니다.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.