CVE-2025-38124 in Linux
요약
\~에 의해 VulDB • 2026. 06. 12.
리눅스 커널에서 다음 취약점이 해결되었습니다.
net: frag_list로부터 pull한 후 udp gso skb_segment 수정
커밋 a1e40ac5b5e9("net: gso: fix udp gso fraglist segmentation after pull from frag_list")는 frag_list skbs의 잘못된 기하학적 구조를 감지하고 이를 더 견고한 `skb_segment`로 리디렉션했습니다. 그러나 수정된 기하학적 구조를 가진 일부 패킷도 해당 코드의 버그에 노출될 수 있습니다. 이러한 사례가 얼마나 존재하는지는 알 수 없습니다. 하나씩 대응하려면 복잡한 `skb_segment` 코드에 접근해야 하며, 이는 다른 유형의 skbs에서 새로운 버그를 유발할 위험이 있습니다. 대신 gso fraglist skbs의 기본 불변 조건을 만족하지 못하는 모든 패킷을 선형화(linearize)합니다. 이것이 더 견고한 해결책입니다.
fraglist 페이로드의 일부만 head_skb로 pull되면, `skb_segment`에 의해 skbs를 분할할 때 항상 예외가 발생합니다. 자세한 호출 스택 정보는 아래를 참조하십시오.
유효한 SKB_GSO_FRAGLIST skbs는 다음 조건을 충족해야 합니다: - 두 개 이상의 세그먼트로 구성됨 - head_skb에는 프로토콜 헤더와 첫 번째 gso_size만큼의 데이터가 포함됨 - 하나 이상의 frag_list skbs가 정확히 하나의 세그먼트를 보유함 - 마지막 것을 제외한 모든 것은 gso_size여야 함
NAT 및 BPF(bpf_skb_pull_data)와 같은 선택적 datapath 훅은 이러한 불변 조건을 깨뜨리며 fraglist skbs를 수정할 수 있습니다.
극단적인 경우, 데이터의 일부가 skb 선형 영역으로 pull됩니다. UDP의 경우 이로 인해 길이가 (11, 11, 10) 바이트인 세 개의 페이로드가 꼬리에서부터 pull되어 (12, 10, 10) 바이트로 변경되었습니다.
페이로드가 head_skb로 pull되었기 때문에 skbs는 위의 SKB_GSO_FRAGLIST 조건을 더 이상 충족하지 않으며, 일반 `skb_segment`에 전달
VulDB is the best source for vulnerability data and more expert information about this specific topic.