CVE-2019-11477 分析

经分析测试,
1我们平台目前kernel配置应永远无法打到该漏洞,所以可以选择不用上该patch
2 漏洞patch
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-4.4.y&id=4657ee0fe05e15ab572b157f13a82e080d4b7d73
Patch已测试可正常联网并tcp通信

测试程序如下链接下载
https://download.csdn.net/download/qq_28351465/12643665

该问题是由TCP_SKB_CB(skb)->tcp_gso_segs u16数据溢出造成
最终crash在如下位置
tcp_shifted_skb() :

     BUG_ON(tcp_skb_pcount(skb) < pcount);

u16数据最大是65535
tcp_gso_segs记录的是一个skb_buf需要分为几个segment去发送
skb_buf最大数据量是17321024=557056
mss是一个tcp segment数据量,理论最小值为8
所以 17321024/8=69632 > 65535 从而造成数据溢出

其中必要条件是 MSS为8
这里的mss值 指的是tcp mss协商值 – tcp option字节数(实际计算公式复杂些mtu和tcp windows相关,因始终以最小为主,不赘述)
被减数 因为__tcp_mtu_to_mss接口限制,最小为48

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值