Linux内核漏洞精准检测如何做?SCA工具不能只在软件层面_华为云开发者联盟的博客-程序员秘密

技术标签: 运维  linux  服务器  技术交流  二进制  SCA工具  

摘要:二进制SCA工具要想更好的辅助安全人员实现安全审计、降低漏洞检测的误报率,必须向更细颗粒度的检测维度发展,而不仅仅停留在开源软件的层面,同时对漏洞库的要求也需要向细颗粒度的精准信息提出的挑战。

本文分享自华为云社区《Linux内核漏洞精准检测》,作者: 安全技术猿。

Linux内核结构

Linux内核由七个部分构成,每个不同的部分又有多个内核模块组成,结构框图如下:

图片引用来自ttps://blog.csdn.net/weixin_44742824/article/details/113814934

Linux裁剪场景分析:

通过分析Linux内核源代码可以看到不同目录中存放着不同模块的实现代码,同时在编译时可以config中配置的信息来控制哪些模块编译到最终的二进制中,哪些模块被裁剪掉,比如以IPV6模块为例,控制该模块的配置名称为CONFIG_IPV6,如果该配置项为设置为y,则表示该功能模块未被编译到最终的二进制文件中,如下所示:

如果该功能模块被裁剪了,即使该漏洞没有被补丁修复,那么该功能模块中存在的漏洞在二进制中也是不受影响的,因此和IPV6相关的漏洞在漏洞检测时就应该在报告中明显的标识出不受该漏洞的影响,如CVE-2013-0343(Linux kernel 3.8之前版本内的net/ipv6/addrconf.c中的函数 ipv6_create_tempaddr没有正确处理IPv6临时地址生成问题,可允许远程攻击者通过 ICMPv6 Router Advertisement (RA) 消息,造成拒绝服务,然后获取敏感信息。)。

业界二进制SCA工具不能检测的原因分析:

为什么目前业界通常的二进制SCA工具无法做到精准检测,原因是因为业界二进制SCA工具是基于检测到的开源软件名称和版本号来关联出已知漏洞清单的,而这种通过裁剪功能模块的方法来应用Linux内核,开源软件名称和版本号是不会改变的,因此工具就无法精准的检测出来了。

二进制SCA工具如何实现该功能:

要实现Linux内核裁剪场景下的已知漏洞精准检测,二进制SCA工具必须在原来检测开源软件名称和版本号的基础上,需要实现更新细颗粒度的检测技术,基于源代码文件颗粒度、函数颗粒度的检测能力,从而实现裁剪场景下已知漏洞的精准检测,即可以知道哪些代码被编译到最终的二进制文件中,哪些代码没有参与编译。同时漏洞库也必须实现对细颗粒维度的支持,即漏洞信息必须精准定位是由哪些文件和函数中的代码片段引入的。

以CVE-2013-0343为例,通过分析漏洞描述信息和Linux内核源代码,可以获取到该漏洞和下面这些位置代码相关的定位信息:

"CVE-2013-0343": {
"net/ipv6/addrconf.c": [
“addrconf_add_ifaddr”,
“addrconf_dad_begin”,
“addrconf_dad_stop”,
“addrconf_dad_work”,
“addrconf_del_ifaddr”,
“addrconf_prefix_rcv”,
“addrconf_verify_rtnl”,
“addrconf_verify_work”,
“inet6_addr_add”,
“inet6_addr_del”,
“inet6_addr_modify”,
“inet6_rtm_deladdr”,
“inet6_rtm_newaddr”,
“inet6_set_iftoken”,
“inet6_set_link_af”,
“ipv6_create_tempaddr”,
“manage_tempaddrs”
]
}

基于如果引入漏洞的源代码没有参与编译出二进制,那么编译出来的二进制也就是不存在该漏洞的原理;因此只要二进制SCA工具能检测出上述位置的源代码没有参与编译出最终的vmlinux二进制文件,那么此vmlinux文件就不受CVE-2013-0343漏洞的影响。

总结:

二进制SCA工具要想更好的辅助安全人员实现安全审计、降低漏洞检测的误报率,必须向更细颗粒度的检测维度发展,而不仅仅停留在开源软件的层面,同时对漏洞库的要求也需要向细颗粒度的精准信息提出的挑战。

文末福利:华为云漏洞扫描服务VSS 基础版限时免费体验>>>

点击关注,第一时间了解华为云新鲜技术~

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/devcloud/article/details/121029287

智能推荐

【最新合集】编译原理习题(含答案)_4-7语法分析_MOOC慕课 哈工大陈鄞_来老铁干了这碗代码的博客-程序员秘密

1 如果文法G是无二义的,则它的任何句子α( )。A. 最左推导和最右推导对应的语法树必定相同B. 最左推导和最右推导对应的语法树可能不同C. 最左推导和最右推导必定相同D. 可能存在两个不同的最左推导,但它们对应的语法树相同  2 采用自上而下分析,不必( )。A. 消除回溯B. 消除左递归C. 消除右递归D. 提取公共左因子  3 识别上下文无关语言的自动机是( )。A. 下推自动机B. NFAC. DFAD. 图灵机  4 ( )文法不是LL(1)的。A

实现国标GB28181流媒体直播服务解决方案_jinlong0603的博客-程序员秘密_gb直播

背景28181协议全称为GB/T28181《安全防范视频监控联网系统信息传输、交换、控制技术要求》,是由公安部科技信息化局提出,由全国安全防范报警系统标准化技术委员会(SAC/TC100)归口,公安部一所等多家单位共同起草的一部国家标准(以下简称28181)。28181协议在全国平安城市、交通、道路等监控中广泛采用,若想做统一的大监控平台,则支持28181协议接入是必不可少的。如今很多客户都是...

OpenCV-Python系列·第二十五集:Harris角点检测_Seung-Yim Yau的博客-程序员秘密

Tip:Harris角点检测# -*- coding: utf-8 -*-"""Created on Sat Sep 22 21:18:41 [email protected]: Administrator"""import cv2import numpy as npimg = cv2.imread("pisa.jpg")cv2.imshow("original image",i...

POJ 2299 Ultra-QuickSort 快速排序求逆序对__lixiyi_的博客-程序员秘密

Ultra-QuickSortTime Limit: 7000MS Memory Limit: 65536K Total Submissions: 59356 Accepted: 21972 DescriptionIn this problem, you have to analyze a particular sorting algorithm. The algorit

linux把日志发送到日志服务器上_weixin_33836223的博客-程序员秘密

上一篇我们介绍了rsyslog配置文件。在现网环境中,无论是为了把日志存储更长的时间还是为了分析日志的方便性,我们通常会把日志发送到日志服务器或是日志收集分析系统上。接下来我们介绍一下如何配置。 实验环境: RHEL 7 实验目的: 我们把client上info级别以上的所有日志都发送到日志服务器192.168.202.130上。 client: 定义info级别...

新手前端的面经总结(已拿网易offer)_fe_lucifer的博客-程序员秘密

作者:凤鸣于岐来源:https://zhuanlan.zhihu.com/p/364664214月19日,本人拿到了网易的口头offer。已经决定去网易-杭研院实习。精神紧绷了一个半月,...

随便推点

vb底层开发之Hook(钩子)_幻影时空的博客-程序员秘密

原帖地址:http://hi.baidu.com/starwork/blog/item/6d989ed3b2cb2c35960a1638.htmlhook是WINDOWS提供的一种消息处理机制,它使得程序员可以使用子过程来监视系统消息,并在消息到达目标过程前得到处理。 下面将介绍WINNDOWS HOOKS并且说明如何在WINDOWS 程序中使用它。 关于HOOKS 使用HOOK 将会降低

分布式id黑科技完善_四名狂客的博客-程序员秘密

    分布式环境下唯一id确实算个问题,今天分享的算法自己项目已经跑了两年,效率高也没出现重复情况;直接上干货:核心两个类:package com.longbei.appservice.common;import java.sql.Timestamp;import java.util.concurrent.Executors;import java.util.concurrent.Sch...

TCP自时钟/拥塞控制/带宽利用之脉络半景解析_dog250的博客-程序员秘密

0.说明搬家公司的人很多都穿皮鞋!Why?这个题目不是很明确,而且这个文章比较长,也算是我的一个阶段性总结,既然是总结,就不必为题目而纠结了。在端午假期的最后来做这个总结也实属不易(假期前两天加班,没有完成预期的计划,低落),记得很早以前写那篇《TCP协议疑难杂症全景解析》的时候跟现在一个心情。翻翻以前的记录,写那个的时候是2011年的7月初,小小才刚刚半个月,如今小小已经马上5岁了,时间过得真快

Python库Matplotlib绘图教程_周雄伟的博客-程序员秘密

第一部分:基本参数导入绘图包import matplotlib.pyplot as pltimport numpy as np12使用from pylab import *一次导入matplotlib.pyplot和numpy也可以,但是不推荐,推荐像上面一样分别导入,以防导入中出现错误而难以检查。生成模拟数据点X = np.linspace(-np.pi, np.pi, 256,endpoin...

axios代理跨域 cli4_使用vue-cli+axios配置代理进行跨域访问数据_weixin_39946300的博客-程序员秘密

1、首先在本地全局安装 vue-cli先在控制台安装 全局vue-clisnpm install -g vue-cli2、初始化项目(vuecli 项目名称)vue init webpack vuecli //vuecli是项目名也可以在空项目中输入vue init webpack将项目变为 vue-cli项目3、在vuecli 项目中安装依赖文件npm install4、在vuecli 项目中...

ZYNQ-Linux学习笔记(7)-Ubuntu下SDK编写linux应用程序 Petalinux 2018.2_网布的博客-程序员秘密

前言之前一篇说明了在windows下编写应用程序的方法,在ubuntu下使用Xilinx SDK编写应用程序还是比较方便的,主要有以下几个步骤。前提:安装好petalinux2018.2准备工作1.安装Xilinx SDK 2018.2 Linux版本解压缩sdk文件夹,得到如图所示文件夹内容:在文件夹下运行终端,在终端中输入./xsetup,进入到安装界面如下图所示进行勾选安装即可安装完成后在桌面会有SDK的图标2.生成可用的sysroot文件夹在petalinux工程的目录

推荐文章

热门文章

相关标签