漏洞预警 | Linux内核出现多个漏洞

发表于:2018-05-18 11:12:25 来源:  FreeBuf.COM 阅读数(0人)

漏洞概述


Linux是一种开源电脑操作系统内核。它是一个用C语言写成,符合POSIX标准的类Unix操作系统。漏洞发生在 Linux 内核中,可造成越界访问或释放后再使用的安全问题。


漏洞影响


360代码卫士“开源项目检测计划”发现了多个Linux内核的安全漏洞(CVE-2018-7566、CVE-2018-9858、CVE-2018-9865),并在第一时间将漏洞信息提交给了 Linux 内核组织,协助其进行漏洞修复。目前Linux内核组织已经对编号为CVE-2018-7566的漏洞完成了修复。




漏洞分析


CVE-2018-7566 是 ALSA(Advanced Linux Sound Architecture,高级Linux声音架构)的音序器核心未能对事件池进行正确初始化所引入的一个高危竞争条件漏洞,该漏洞的CVSS评分为7.8。下面结合源代码对该漏洞进行更详细的分析。


什么是竞争条件


由于两个或者多个进程竞争使用不能被同时访问的资源,使得这些进程有可能因为时间上推进的先后原因而出现问题,这叫做竞争条件(Race Condition)。

该漏洞的触发点位于 /sound/core/seq/seq_clientmgr.c文件的 snd_seq_write函数中。如下所示,在该函数的1021行中,当第一次写操作发生并且事件池为空时,会调用 snd_seq_pool_init函数对事件池进行初始化。




但是,如果攻击者通过并发地调用 ioctl()函数,恶意地对事件池的长度进行修改,那么就可能进一步的造成越界访问或者释放后再使用的安全问题。


Linux内核项目组对该漏洞进行了修复:通过引入互斥锁的机制,将 snd_seq_pool_init函数的调用保护起来,从而避免了竞争条件的发生。具体修复如下所示:




什么是互斥锁


在计算机科学中,如果两个或多个进程彼此之间没有直接的联系,但是由于要抢占使用某个临界区(critical section,不能被多个进程同时使用的资源,如打印机、变量)而产生制约关系,那么这种关系被称之为互斥(mutex)。而互斥锁(Mutex Lock)则是用来实现这种制约关系的数据结构。

防护建议


1. 检查设备/dev/snd/seq和/dev/loop-control,是否有低权限访问的用户

2. 及时打上漏洞补丁

3. 也可selinux或Grsecurity加固内核

相关新闻

大家都在学

课程详情

常见Web漏洞解析

课程详情

小白入门之旅

课程详情

信息安全基础