漏洞标题
Linux内核中的gso漏洞
漏洞描述信息
在Linux内核中,已修复以下漏洞:
gso: 修复在从frag_list拉取数据后的udp gso fraglist分段问题
检测具有损坏几何结构的gso fraglist skbs(参见下文),并将这些数据包传递给skb_segment而不是skb_segment_list,因为前者可以正确地对它们进行分段。
有效SKB_GSO_FRAGLIST数据包:
- 包含两个或更多段
- head_skb包含协议头加上第一个gso_size
- 一个或多个frag_list skbs包含恰好一个段
- 所有但最后一个段必须为gso_size
可选的数据路径钩子,如NAT和BPF(bpf_skb_pull_data)可以修改这些数据包,破坏这些不变性。
在极端情况下,它们会将所有数据拉入skb线性部分。对于UDP,这会在__udpv4_gso_segment_list_csum中的udp_hdr(seg->next)->dest处导致空指针解引用。
通过检查head_skb大小来检测由拉取操作导致的无效几何结构。不要直接丢弃,因为这可能会导致目标地址黑洞。转换为能够传递给常规skb_segment的形式。
CVSS信息
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
漏洞类别
跨界内存写
漏洞标题
gso: fix udp gso fraglist segmentation after pull from frag_list
漏洞描述信息
In the Linux kernel, the following vulnerability has been resolved:
gso: fix udp gso fraglist segmentation after pull from frag_list
Detect gso fraglist skbs with corrupted geometry (see below) and
pass these to skb_segment instead of skb_segment_list, as the first
can segment them correctly.
Valid SKB_GSO_FRAGLIST skbs
- consist of two or more segments
- the head_skb holds the protocol headers plus first gso_size
- one or more frag_list skbs hold exactly one segment
- all but the last must be gso_size
Optional datapath hooks such as NAT and BPF (bpf_skb_pull_data) can
modify these skbs, breaking these invariants.
In extreme cases they pull all data into skb linear. For UDP, this
causes a NULL ptr deref in __udpv4_gso_segment_list_csum at
udp_hdr(seg->next)->dest.
Detect invalid geometry due to pull, by checking head_skb size.
Don't just drop, as this may blackhole a destination. Convert to be
able to pass to regular skb_segment.
CVSS信息
N/A
漏洞类别
N/A
漏洞标题
Linux kernel 安全漏洞
漏洞描述信息
Linux kernel是美国Linux基金会的开源操作系统Linux所使用的内核。 Linux kernel存在安全漏洞,该漏洞源于gso处理udp数据包时fraglist分段问题导致段错误。
CVSS信息
N/A
漏洞类别
其他