360代码卫士赞助Linux内核发明多个安全漏洞

时间: 2018-05-11 22:44:43 作者: 管理员

日前,360代码卫士“开源名目检测筹划”发明了多个Linux内核的平安破绽(CVE-2018-7566、CVE-2018-9858、CVE-2018-9865),并在第一时间将破绽信息提交给了Linux内核构造,帮忙其停止破绽修复。

360开源名目检测筹划是360代码卫士团队卖力经营的一个公益筹划,该筹划旨在赞助开源名目晋升代码平安品质,并经由进程常识分享让宽大开辟者存眷和懂得软件源代码平安成绩,进步软件平安开辟认识和技巧。

停止今朝,360开源名目检测筹划已检测各种开源名目2200多个,测试代码跨越3亿行,帮忙各种开源名目修复了浩繁源代码平安缺点和破绽,此中赞助开源名目修复的破绽已有40多个被CVE收录。



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)则是用来完成这类制约干系的数据结构。

对于360代码卫士:

“360代码卫士”是360企业平安团体旗下专一于软件源代码平安的产品线,才能涵盖了源代码缺点检测、源代码合规检测、源代码溯源检测三大方向,分离办理软件开辟进程中的平安缺点和破绽成绩、代码编写的合规性成绩、开源代码平安管控成绩。“360代码卫士”系列产品可支撑Windows、Linux、Android、Apple iOS、IBM AIX等平台上的源代码平安阐发,支撑的编程语言涵盖C、C++、C#、Objective-C、Java、JSP、JavaScript、PHP、Python等。今朝360代码卫士已应用于上百家大型机构,赞助用户构建本身的代码平安保证系统,消减软件代码平安隐患。