Linux内核存在TCP安全漏洞(CVE-2018-5390)

栏目: 服务器 · Linux · 发布时间: 6年前

内容简介:作者:2018年7月15日,国外安全研究人员Juha-Matti Tilli发现并报告了Linux内核的TCP安全漏洞(CVE-2018-5390),该漏洞可允许远程攻击者无需任何权限在受影响的Linux设备上导致远程拒绝服务。内核4.9及以上的Linux版本均受该漏洞影响,受影响的设备包括安装了上述内核的计算机平台及Linux嵌入式设备。

作者: 启明星辰ADLab

0x01 漏洞简介

2018年7月15日,国外安全研究人员Juha-Matti Tilli发现并报告了 Linux 内核的TCP安全漏洞(CVE-2018-5390),该漏洞可允许远程攻击者无需任何权限在受影响的Linux设备上导致远程拒绝服务。

内核4.9及以上的Linux版本均受该漏洞影响,受影响的设备包括安装了上述内核的计算机平台及Linux嵌入式设备。

为保障企业及机构业务的安全,消除安全隐患,应对可能发生的攻击事件,启明星辰ADLab实验室提醒大家尽快进行系统升级。

0x02 漏洞分析

2018年7月23日,Linux社区修复了CVE-2018-5390漏洞;2018年8月6号,针对该漏洞的内核补丁发布,漏洞得以公开。启明星辰ADLab第一时间对该漏洞进行了跟踪分析。

由于网络原因,在进行TCP通信时会出现TCP包乱序的情况。Linux内核在处理TCP乱序包时会进入快速响应模式,将乱序的包文按序列号大小顺序进行重新排序;为此,Linux内核设置了2个队列:乱序队列及按序队列,乱序队列存放乱序的报文,按序队列存放顺序的报文。

若乱序队列中有报文暂存,Linux内核每收到一个报文都将调用 tcp_prune_queue 函数, tcp_prune_queue 函数会调用 tcp_collapse_ofo_queuetcp_prune_ofo_queue 函数进行乱序包队列调整及 排序 操作,以便将乱序的报文顺序化。

tcp_prune_queue 函数主要流程如下:

Linux内核存在TCP安全漏洞(CVE-2018-5390)

tcp_clollapse_ofo_queue 函数主要流程如下:

Linux内核存在TCP安全漏洞(CVE-2018-5390)

tcp_prune_ofo_queue 函数主要流程如下:

Linux内核存在TCP安全漏洞(CVE-2018-5390)

当乱序包队列的包数量比较大时(默认的队列内存大小为6M,假设每个TCP包大小为576字节,则队列中有10000多个包),Linux内核会对乱序队列进行全队列的红黑树查找排序及内存调整。该调整及排序方法的复杂指数很高且十分耗时,这种立即处理且耗时的运算容易消耗大量CPU资源。

针对该情况,攻击者可以通过发送大量的恶意数据包使得接收方主机频繁进行排序及队列调整操作,造成接收方主机的CPU占比达到极高,从而导致主机拒绝服务。

攻击者攻击时需要满足以下条件:

  1. 攻击者和受攻击方之间进行TCP数据传输。
  2. 攻击者通过多个IP向受攻击方发送大量的足够小的TCP包,并注入相关的包引发乱序情况。

该漏洞首次出现在2016年12月发布的Linux内核4.9版本中,4.9版本的Linux内核在处理TCP堵塞机制时引进了谷歌推荐的BBR算法,对TCP机制进行了较大的调整,这种调整使得Linux内核更容易受到DDOS攻击。

为了应对这种恶意的TCP包攻击,Linux内核增加了对恶意包的判断:如果乱序队列中恶意包的数量过多,则不进行排序,以减少CPU开销。主要的修改点包括:

  1. tcp_prune_queue 函数增加了 sk->sk_rmem_alloc 的判断:当 sk->sk_rmem_alloc 小于 sk->sk_rcvbuf 时,直接返回;减少调用 tcp_collapse_ofo_queuetcp_collapsetcp_prune_ofo_queue 函数的次数。 Linux内核存在TCP安全漏洞(CVE-2018-5390)

  2. tcp_prune_ofo_queue 函数中,删除了每次循环操作都要进行内存申请的代码,只有在队列缓冲大小已经处理至少12.5%后,才进行内存申请。 Linux内核存在TCP安全漏洞(CVE-2018-5390)

  3. tcp_collapse_ofo_queue 函数中,增加了检测恶意包的代码,当认为有恶意攻击时,函数就直接返回。 Linux内核存在TCP安全漏洞(CVE-2018-5390)

0x03 漏洞影响

该漏洞影响Linux内核4.9及以上的各版本系统,影响的设备包括安装了上述内核的计算机平台及Linux嵌入式设备,几乎涉及所有厂家:比如亚马逊、苹果、Ubuntu和ZvXEL。

目前已知的受影响系统包括但不限于:

  • RHEL 6 and 7
  • RHEL 7 for Real Time
  • RHEL 7 for ARM64 systems,
  • RHEL 7 for IBM POWERsystems
  • RHEL Atomic Hos
  • Ubuntu 18.04 LTS(BionicBeaver)
  • Ubuntu 16.04 LTS(XenialXerus)
  • JuniperJunos
  • OracleLinux 7

0x04 处置建议

为保障业务的安全,消除安全隐患,应对可能发生的攻击事件,我们对后续工作建议如下:

  1. 检查系统版本。Linux已发布针对该漏洞的内核补丁,如果系统在受影响范围内,,尽快下载并更新系统补丁。
  2. 监控CPU异常,及时发现CPU占用较高的情况。
  3. 防护策略配置。对长时连接且短时发送大量数据的IP进行监控,发现恶意IP并及时在防火墙上进行屏蔽。

漏洞链接: - https://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git/commit/?id=1a4f14bab1868b443f0dd3c55b689a478f82e72e - http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5390

启明星辰积极防御实验室(ADLab)

ADLab成立于1999年,是中国安全行业最早成立的攻防技术研究实验室之一,微软MAPP计划核心成员。截止目前,ADLab通过CVE发布Windows、Linux、Unix等操作系统安全或软件漏洞近400个,持续保持国际网络安全领域一流水准。实验室研究方向涵盖操作系统与应用系统安全研究、移动智能终端安全研究、物联网智能设备安全研究、Web安全研究、工控系统安全研究、云安全研究。研究成果应用于产品核心技术研究、国家重点科技项目攻关、专业安全服务等。 Linux内核存在TCP安全漏洞(CVE-2018-5390)


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

从问题到程序

从问题到程序

裘宗燕 / 机械工业出版社 / 2011-5 / 39.00元

《从问题到程序:程序设计与C语言引论(第2版)》以C作为工具语言,讨论了基本程序设计的各方面内容,详细解释了与c语言和程序设计有关的问题。在新版中,特别加强了针对近年日益受到业界和学术界广泛重视的问题的讨论,并通过详细地分析和讨论大量符合C99标准的实例,给出了分析和分解问题、找出解决问题的主要步骤、确定函数抽象、找出循环、选择语言结构直至最后做出所需程序的完整过程。 《从问题到程序:程序设......一起来看看 《从问题到程序》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具