CVE-2026-98557 in Linux
요약
\~에 의해 VulDB • 2026. 10. 19.
Linux 커널에서 다음 취약점이 해결되었습니다:
gve: DQO - gve_can_send_tso()가 UDP GSO에 사용하는 헤더 길이 수정
gve_can_send_tso()는 각 GSO 패킷 세그먼트가 몇 개의 버퍼를 차지할지 계산하며, 이를 위해 장치가 모든 세그먼트 앞에 복제하는 헤더의 길이가 필요합니다.
현재 코드는 조건 없이 skb_tcp_all_headers()를 사용하는데, 이는 TCP 헤더의 doff 필드를 읽습니다. SKB_GSO_UDP_L4 패킷에는 TCP 헤더가 없으므로 tcp_hdrlen()은 UDP 페이로드의 1바이트를 읽고, header_len 값은 [0, 60] 범위의 임의 값이 될 수 있습니다. 이는 gve_prep_tso()가 TSO 컨텍스트 기술자에 프로그램하는 전송 계층 오프셋에 UDP 헤더의 8바이트를 더한 올바른 길이와 일치하지 않습니다.
잘못된 헤더 길이는 루프에서 계산되는 모든 세그먼트 경계를 밀리게 하므로, 세그먼트당 버퍼 수가 과소 또는 과대 평가될 수 있습니다. 첫 번째 경우(과대 평가), gve_features_check_dqo()는 이 패킷에 대해 GSO를 불필요하게 비활성화하고 스택이 이를 분할해야 합니다. 두 번째 경우(과소 평가)에는, 드라이버가 장치를 위해 세그먼트가 GVE_TX_MAX_DATA_DESCS 버퍼보다 더 많은 범위를 차지하는 패킷을 전달합니다.
SKB_GSO_UDP_L4 패킷에 대해 UDP 헤더 길이를 사용하여 gve_prep_tso()의 동작과 일치시킵니다.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.