首页 > 系统相关 >Linux内核漏洞精准检测

Linux内核漏洞精准检测

时间:2022-10-13 16:05:48浏览次数:49  
标签:addrconf 二进制 检测 SCA 漏洞 内核 Linux 精准

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

Linux内核漏洞精准检测_linux


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

Linux内核漏洞精准检测_功能模块_02


如果该功能模块被裁剪了,即使该漏洞没有被补丁修复,那么该功能模块中存在的漏洞在二进制中也是不受影响的,因此和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工具要想更好的辅助安全人员实现安全审计、降低漏洞检测的误报率,必须向更细颗粒度的检测维度发展,而不仅仅停留在开源软件的层面,同时对漏洞库的要求也需要向细颗粒度的精准信息提出的挑战。​


标签:addrconf,二进制,检测,SCA,漏洞,内核,Linux,精准
From: https://blog.51cto.com/u_15805954/5753562

相关文章

  • 基于STM32H7,F407,F429的ThreadX内核程序模板,含GCC,MDK和IAR三个版本(2020-06-08)
    V5是STM32F407IGT6,V6是STM32F429BIT6,V7是STM32H743XIH6模板下载:​​V5-2000_ThreadX内核模板(支持MDK,IAR和GCC).rar​​(3.45MB)​​V6-2000_ThreadX内核模板(支持MDK,IAR和GCC......
  • ST发布M33内核新品STM32U5,首款40nm工艺超低功耗系列,160MHz全速运行19uA/MHz
    ​​https://blog.st.com/stm32u5-microvisor/​​​带硬件三角函数加速,硬件滤波器,还有个硬件多功能数字滤波MFD,一个声音活动检测功能的音频数字滤波器微信公众号:armf......
  • CentOS 7.9 升级内核 kernel-ml-5.6.14版本
    一、CentOS7.9升级内核kernel-ml-5.6.14地址http://193.49.22.109/elrepo/kernel/el7/x86_64/RPMS默认内核版本为3.10.0,现升级到5.6.14版本查看当前内核版......
  • 精准测试技术十年发展漫谈
     精准测试技术十年发展漫谈  目  录 一、背景二、精准测试的定义三、精准测试技术发展四、精准测试的专利技术五、精准测试的一分一合六、精准测试体......
  • 驱动开发:内核遍历进程VAD结构体
    在上一篇文章《驱动开发:内核中实现Dump进程转储》中我们实现了ARK工具的转存功能,本篇文章继续以内存为出发点介绍VAD结构,该结构的全程是VirtualAddressDescriptor即虚拟地......
  • 驱动开发:内核遍历进程VAD结构体
    在上一篇文章《驱动开发:内核中实现Dump进程转储》中我们实现了ARK工具的转存功能,本篇文章继续以内存为出发点介绍VAD结构,该结构的全程是VirtualAddressDescriptor即虚拟......
  • linux进程调度算法
    一、进程的状态:1、操作系统中:进程是一个动态的实体,所以他是有生命的。从创建到消亡,是一个进程的整个生命周期。在这个周期中,进程可能会经历各种不同的状态。一般来说,所有进......
  • Linux系统NTP配置同步修改硬件时钟
    前言:  硬件时钟:即BIOS时间,就是CMOS设置时看到的时间,存储在主板BIOS里,关机及断电后由主板电池供电维持时间的守时。  系统时钟:linux系统Kernel时间,由CPU守时,关机及......
  • 【微软出品】ThreadX内核,GUIX,FileX,NetXDUO,USBX的中文版PDF手册全部上线,附文档下载
    这个应该是RTOS领域,全网中文手册做的最齐全的了。微软出手,果然不同凡响。​​ThreadX内核用户手册,含SMP多核(中文版).pdf​​(2.53MB)​​ThreadXGUIX图形界面用户手册(中文......
  • linux下编写进度条
    linux进度条源代码:​​1.回车:光标倒回到起始位置​​​​换行:光标直接移动到下一行不移到下一行的起始位置​​​​2缓冲区:​​​​fflush()会强迫将缓冲区内的数据写回......