内容简介:作者: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_queue
、 tcp_prune_ofo_queue
函数进行乱序包队列调整及 排序 操作,以便将乱序的报文顺序化。
tcp_prune_queue
函数主要流程如下:
tcp_clollapse_ofo_queue
函数主要流程如下:
tcp_prune_ofo_queue
函数主要流程如下:
当乱序包队列的包数量比较大时(默认的队列内存大小为6M,假设每个TCP包大小为576字节,则队列中有10000多个包),Linux内核会对乱序队列进行全队列的红黑树查找排序及内存调整。该调整及排序方法的复杂指数很高且十分耗时,这种立即处理且耗时的运算容易消耗大量CPU资源。
针对该情况,攻击者可以通过发送大量的恶意数据包使得接收方主机频繁进行排序及队列调整操作,造成接收方主机的CPU占比达到极高,从而导致主机拒绝服务。
攻击者攻击时需要满足以下条件:
- 攻击者和受攻击方之间进行TCP数据传输。
- 攻击者通过多个IP向受攻击方发送大量的足够小的TCP包,并注入相关的包引发乱序情况。
该漏洞首次出现在2016年12月发布的Linux内核4.9版本中,4.9版本的Linux内核在处理TCP堵塞机制时引进了谷歌推荐的BBR算法,对TCP机制进行了较大的调整,这种调整使得Linux内核更容易受到DDOS攻击。
为了应对这种恶意的TCP包攻击,Linux内核增加了对恶意包的判断:如果乱序队列中恶意包的数量过多,则不进行排序,以减少CPU开销。主要的修改点包括:
-
在
tcp_prune_queue
函数增加了sk->sk_rmem_alloc
的判断:当sk->sk_rmem_alloc
小于sk->sk_rcvbuf
时,直接返回;减少调用tcp_collapse_ofo_queue
、tcp_collapse
、tcp_prune_ofo_queue
函数的次数。 -
在
tcp_prune_ofo_queue
函数中,删除了每次循环操作都要进行内存申请的代码,只有在队列缓冲大小已经处理至少12.5%后,才进行内存申请。 -
在
tcp_collapse_ofo_queue
函数中,增加了检测恶意包的代码,当认为有恶意攻击时,函数就直接返回。
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 处置建议
为保障业务的安全,消除安全隐患,应对可能发生的攻击事件,我们对后续工作建议如下:
- 检查系统版本。Linux已发布针对该漏洞的内核补丁,如果系统在受影响范围内,,尽快下载并更新系统补丁。
- 监控CPU异常,及时发现CPU占用较高的情况。
- 防护策略配置。对长时连接且短时发送大量数据的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安全研究、工控系统安全研究、云安全研究。研究成果应用于产品核心技术研究、国家重点科技项目攻关、专业安全服务等。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Ubuntu 17.10 获重大内核更新,修复 20 处安全漏洞
- 国家漏洞库CNNVD:关于Linux和FreeBSD内核多个安全漏洞情况的通报
- 华为L20首席安全专家提交Linux内核补丁,被指低级漏洞
- 多维安全漏洞治理,提升安全运营能力
- [浏览器安全漏洞一] dll劫持漏洞
- 自来水厂控制系统安全风险和安全漏洞解析
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。