freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

漏洞预警 | Linux内核出现多个漏洞
2018-05-18 08:30:45

*本文中涉及到的相关漏洞已报送厂商并得到修复,本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担。

漏洞概述

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

漏洞影响

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

Linux内核出现多个漏洞

漏洞分析

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函数对事件池进行初始化。


Linux内核出现多个漏洞

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

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

Linux内核出现多个漏洞

什么是互斥锁

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

防护建议

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

2. 及时打上漏洞补丁

3. 也可selinux或Grsecurity加固内核

*本文作者:360代码卫士,转载请注明来自 FreeBuf.COM

# 漏洞 # Linux内核
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者