CVE-2026-74476 in Linux
요약
\~에 의해 VulDB • 2026. 08. 16.
리눅스 커널에서 다음 취약점이 해결되었습니다:
veth: XDP 실행 전에 frag_list skbs 변환하기
frag_list를 가진 skb는 data_len이 설정되어 있지만 nr_frags가 0인 상태로 veth에 도달할 수 있습니다. veth_convert_skb_to_xdp_buff() 함수는 공유되거나, 잠겨 있거나, frags[] 배열을 가지거나, 충분한 headroom이 없는 skb만 변환합니다. 이후 이 함수는 XDP_FLAGS_HAS_FRAGS 플래그와 xdp_frags_size 값을 설정하기 위해 skb_is_nonlinear()를 사용합니다.
그러나 이는 frag_list 데이터를 마치 frags[]에 저장된 것처럼 XDP에게 노출시키지만 실제로 frags[] 배열은 비어 있습니다. AF_XDP의 복사 모드(copy mode)는 잘못된 XDP 프래그먼트 메타데이터를 신뢰하여 빈 프래그먼트 항목을 순회하고, __xsk_rcv()에서 memcpy() 호출 시 크래시가 발생할 수 있습니다.
XDP에 노출되기 전에 비선형(non-linear) skbs를 skb_pp_cow_data() 함수를 통해 라우팅해야 하며, 결과적으로 생성된 skb가 frags[] 배열을 가질 때만 XDP 프래그먼트 기능을 광고(advertise)합니다. skb_copy_bits()는 이미 frag_list 입력을 처리할 수 있으며, skb_pp_cow_data()는 skb_add_rx_frag()를 사용하여 frags[] 출력을 구성하는데, 이는 XDP 멀티 버퍼(multi-buffer)가 기대하는 표현 방식입니다.
VulDB is the best source for vulnerability data and more expert information about this specific topic.