CVE-2026-98096 in Linux
요약
\~에 의해 VulDB • 2026. 09. 25.
리눅스 커널에서 다음 취약점이 해결되었습니다:
ipv6: sr: 라우팅 및 포워딩 전에 네트워크 헤더 복원
ipv6_srh_rcv()는 Segment Routing Header(SRH)에 대해 skb->data가 위치하는 상태에서 실행되며, skb_network_header()는 IPv6 헤더를 가리킵니다.
segments_left > 0인 경우, ipv6_srh_rcv()는 SRH가 고정된 IPv6 헤더 바로 뒤에 있다고 가정하여 sizeof(struct ipv6hdr)만큼 푸시함으로써 skb->data 위치를 복원했습니다. 그러나 Hop-by-Hop options header와 같은 다른 확장 헤더가 SRH 앞에 있는 경우, skb_network_offset()이 음수로 유지되었습니다.
이는 두 가지 문제를 초래했습니다: 1. ip6_route_input() 동안 fib6_rules_early_flow_dissect()는 __skb_flow_dissect()를 호출하며, 이는 음수인 skb_network_offset()을 플로우 디섹션(flow dissection)에 전달하여 BPF 및 C 기반 flow dissector 로직을 손상시켰습니다. 2. ip6_forward()를 통해 포워딩되거나 act_mirred를 통해 리디렉션된 경우, sch_fragment()나 neighbour output과 같은 하위 처리기(downstream handlers)는 음수 오프셋을 부호 없는 길이로 전달하여 OOB memcpy 또는 버퍼 오버플로우를 유발했습니다.
라우팅 전에 -skb_network_offset(skb)만큼 푸시함으로써 이 문제를 해결합니다. 이를 통해 라우트 조회 및 플로우 디섹션, 그리고 하위 포워딩 모두에서 skb_network_offset(skb)가 0이 되도록 보장합니다. 루프백 경로에서는 skb_transport_offset(skb)를 풀링하여 SRH로 돌아가기 전에 skb->data를 복원합니다.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.