[发明专利]适用于操作系统内核对象地址泄露的检测方法及系统有效
申请号: | 201911268776.0 | 申请日: | 2019-12-11 |
公开(公告)号: | CN111143851B | 公开(公告)日: | 2023-08-08 |
发明(设计)人: | 陈海波;黄富乾;臧斌宇;管海兵 | 申请(专利权)人: | 上海交通大学 |
主分类号: | G06F21/57 | 分类号: | G06F21/57 |
代理公司: | 上海汉声知识产权代理有限公司 31236 | 代理人: | 胡晶 |
地址: | 200240 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 适用于 操作系统 内核 对象 地址 泄露 检测 方法 系统 | ||
1.一种适用于操作系统内核对象地址泄露的检测方法,其特征在于,包括:
函数接口标记步骤:标记所有内核与用户空间交换数据的函数接口;
数据分析步骤:根据获取的函数接口,通过编译器分析传输到用户空间的数据中是否包含指针:若包含,则进入内核指针判断步骤;若不包含,则表明该数据不泄露内核对象地址,直接返回继续分析下一待分析数据;
内核指针判断步骤:根据当前处理器的特性和内核指针在内核代码中的特点,判断分析得到的指针是否为内核指针:如果是内核指针,则进入地址泄露检测步骤继续执行;否则表明该数据不泄露内核对象地址,直接返回继续分析下一个待分析数据;
地址泄露检测步骤:通过过滤掉调试专用的上下文,从而检测在非调试环境下是否有内核对象地址泄露到用户空间:若有,则判定存在内核对象地址泄露;否则表明该数据不泄露内核对象地址,直接返回继续分析下一个待分析数据;
所述数据分析步骤:
根据获取的函数接口,通过分析该函数接口的参数或通过用户指定,获取传递到用户空间的数据的起始地址的变量和传递数据的大小,通过数据的起始地址和大小计算传递到用户空间的数据中是否包括指针;传递的数据的大小包括:一个固定的常数、一个数值变量;
所述通过数据的起始地址和大小计算传递到用户空间的数据中是否包括指针:
根据获取的数据的起始地址的变量和传递数据的大小,储存该数据起始地址的变量是一个指针,通过该指针指向的数据类型和传递数据的大小变量进行数据流分析,得到该指针指向的数据类型以及传递数据的大小,从而判断传递的数据中是否包含指针。
2.根据权利要求1所述的适用于操作系统内核对象地址泄露的检测方法,其特征在于,所述函数接口标记步骤:
采用编译器分析技术或用户标记的方法,标记所有内核与用户空间交换数据的函数接口。
3.根据权利要求1所述的适用于操作系统内核对象地址泄露的检测方法,其特征在于,所述函数接口标记步骤:
借助编译器分析技术,在内核态代码中找到和用户空间交换数据的函数接口或通过用户在源代码中加标记指定。
4.根据权利要求1所述的适用于操作系统内核对象地址泄露的检测方法,其特征在于,所述内核指针判断步骤:
所述处理器的特性指:SMAP处理器特性用途是禁止内核因为自身错误而访问用户空间的数据,以避免内核漏洞所导致的安全隐患;
操作系统内核提供了对这种处理器的特性的支持,如果在内核态访问用户空间的数据,会造成内核出错,默认情况下内核态是不访问空间的数据的;
在处理器开启的情况下,如果一个指针在内核态被解引用,访问了该指针指向位置的数据,则判定该指针一定是内核态指针。
5.根据权利要求1所述的适用于操作系统内核对象地址泄露的检测方法,其特征在于,所述地址泄露检测步骤:
过滤掉所有在调试用选项开启时的上下文:在调试的时候,内核指针的地址是开发者故意传递到用户空间供调试目的用的,通过函数名判断该函数名是否包含调试目的的字眼及源代码信息,从而过滤掉所有调试用的上下文;
所述源代码信息指泄露的地点在调试专用的分支中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海交通大学,未经上海交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911268776.0/1.html,转载请声明来源钻瓜专利网。