[发明专利]适用于操作系统内核对象地址泄露的检测方法及系统有效
申请号: | 201911268776.0 | 申请日: | 2019-12-11 |
公开(公告)号: | CN111143851B | 公开(公告)日: | 2023-08-08 |
发明(设计)人: | 陈海波;黄富乾;臧斌宇;管海兵 | 申请(专利权)人: | 上海交通大学 |
主分类号: | G06F21/57 | 分类号: | G06F21/57 |
代理公司: | 上海汉声知识产权代理有限公司 31236 | 代理人: | 胡晶 |
地址: | 200240 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 适用于 操作系统 内核 对象 地址 泄露 检测 方法 系统 | ||
本发明提供了一种适用于操作系统内核对象地址泄露的检测方法及系统,包括:函数接口标记步骤:标记所有内核与用户空间交换数据的函数接口;数据分析步骤:根据获取的函数接口,通过编译器分析传输到用户空间的数据中是否包含指针:若包含,则进入内核指针判断步骤;若不包含,则表明该数据不泄露内核对象地址,直接返回继续分析下一待分析数据。本发明具有实现复杂度低、工程量小、分析效率高、准确性高和假阳性较低的特点,并且能检测无非法内存操作的情况下由于开发者的疏忽造成的内核对象地址泄露的情况。
技术领域
本发明涉及计算机软件技术领域,具体地,涉及一种适用于操作系统内核对象地址泄露的检测方法及系统。
背景技术
操作系统内核一直都是攻击者重点关注的攻击对象。本地攻击或者远程攻击,一般都需要知道内核地址的布局从而获得更高的系统权限或窃取私密数据。操作系统内核地址的机密性对于保障操作系统安全不被恶意用户攻击十分重要。在检测操作系统内核安全漏洞的技术中,检测内核对象地址泄露的方法是其中的重要技术之一。
近几年来,检测内核对象地址泄露的方法主要有两大类:检测对未初始化的对象的访问,检测内存越界访问。对未初始化的对象的访问有可能会泄露内核对象地址,当一块内存区域被释放之后重新被分配,过程中没有对该内存区域清零或进行初始化,对该未初始化的对象的访问可以读到该内存区域原来的值,可能会造成内核对象地址的泄露。内存越界访问是另外一种可能泄露内核对象地址的方式,对于越界地址的访问可以非法访问到其他内存地址的值,从而读取到内核对象地址。
这两种内核对象地址泄露的方法都是通过非法的内存操作实现的。目前检测内核对象地址泄露的方法主要基于检测非法的内存操作实现的。
当前的检测方法能检测大部分由于非法的内存操作导致的内核对象地址的泄露,但是其缺点是:这些方法都只能检测非法的内存操作导致的内核对象地址泄露,而不能检测到由于开发者疏忽造成的内核对象地址泄露。
一种检测内核对象地址泄露的方式是跟踪所有内核对象指针的数据流,检查是否通过与内核与用户空间交互的接口泄露到用户空间。这种方法需要跟踪所有内核对象指针,数量庞大,而且由于内核代码中存在大量间接调用函数,传统的数据流和控制流分析方法耗时长,且准确率低,从内核对象地址赋值给指针到该指针传播到用户空间的过程中可能存在大量的间接调用,从而导致分析结果具有较高的假阳性。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种适用于操作系统内核对象地址泄露的检测方法及系统。
根据本发明提供的一种适用于操作系统内核对象地址泄露的检测方法,包括:
函数接口标记步骤:标记所有内核与用户空间交换数据的函数接口;
数据分析步骤:根据获取的函数接口,通过编译器分析传输到用户空间的数据中是否包含指针:若包含,则进入内核指针判断步骤;若不包含,则表明该数据不泄露内核对象地址,直接返回继续分析下一待分析数据;
内核指针判断步骤:根据当前处理器的特性和内核指针在内核代码中的特点,判断分析得到的指针是否为内核指针:如果是内核指针,则进入地址泄露检测步骤继续执行;否则表明该数据不泄露内核对象地址,直接返回继续分析下一个待分析数据;
地址泄露检测步骤:通过过滤掉调试专用的上下文,从而检测在非调试环境下是否有内核对象地址泄露到用户空间:若有,则判定存在内核对象地址泄露;否则表明该数据不泄露内核对象地址,直接返回继续分析下一个待分析数据。
优选地,所述函数接口标记步骤:
采用编译器分析技术或用户标记的方法,标记所有内核与用户空间交换数据的函数接口。
优选地,所述函数接口标记步骤:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海交通大学,未经上海交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911268776.0/2.html,转载请声明来源钻瓜专利网。