CVE-2026-74612 in Linux정보

요약

\~에 의해 VulDB • 2026. 08. 23.

Linux 커널에서 다음 취약점이 해결되었습니다:

veth: XDP 프래그먼트 조정 후 skb 길이 계정 수정

veth는 xdp_buff를 통해 비선형(skb) 프래그먼트를 노출합니다. 만약 XDP 프로그램이 프래그먼트 영역을 조정하면, veth_xdp_rcv_skb()은 xdp_frags_size를 skb->data_len에 다시 복사하지만, skb->len에는 이전의 프래그먼트 기여도가 그대로 남아 있습니다.

프래그먼트가 축소된 후, 이는 skb_headlen()이 실제 선형 영역보다 커지게 만듭니다. 재현된 UDP 수신 경로에서 __skb_datagram_iter()는 struct skb_shared_info부터 시작하여 실제 선형 꼬리 부분 이후로 1024바이트를 사용자 공간으로 복사했습니다. 이 복사된 바이트에는 해당 skb의 nr_frags, xdp_frags_size 및 skb_shinfo(skb)->frags[0]에서 가져온 커널 포인터가 포함되었습니다. 실제 패킷 데이터는 동일한 양만큼 밀려나고 끝부분이 잘렸습니다.

대체하기 전에 기존 data_len을 빼고, 이후에 새로운 data_len을 추가하여 skb->len과 skb->data_len의 동기화를 유지하십시오.

또한 bpf_xdp_pull_data()는 frags가 여전히 존재하는 상태에서 data_end를 전진시킬 수 있습니다. 그러면 skb는 여전히 비선형 상태이므로 기존 __skb_put(skb, off) 호출은 SKB_LINEAR_ASSERT()를 트리거합니다.

bpf_prog_run_generic_xdp()의 관례에 따라 대신 skb_set_tail_pointer()를 사용하고 skb->len을 명시적으로 업데이트하십시오. __skb_put()과 달리 skb_set_tail_pointer()는 선형 skb가 필요하지 않습니다.

MTU 64000인 veth 페어에서 60000바이트 UDP 데이터그램이 프래그먼트 영역으로부터 1024바이트 단축되었습니다. 수정 전에는 모든 10번의 실행에서 손상된 페로드가 생성되었습니다. 수정 후, 모든 10번의 실행이 예상되는 페로드와 정확히 일치했습니다. 강제 tailroom 재현기도 frags가 여전히 존재하는 상태에서 bpf_xdp_pull_data()를 테스트하며, 기존 코드는 SKB_LINEAR_ASSERT()를 트리거하지만 이 수정은 10/10 번의 실행에서 성공합니다.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

책임이 있는

Linux

예약하다

2026. 08. 15.

모더레이션

수락

항목

VDB-394389

EPSS

0.00000

출처

Do you need the next level of professionalism?

Upgrade your account now!