System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及网络安全,尤其涉及一种面向非控制数据攻击的软件级防御方法。
技术介绍
1、非控制数据攻击是一种针对不会影响指令指针寄存器的非控制数据的攻击方式。常规代码重用攻击在控制流完整性(cfi)防御下难以成功时,非控制数据攻击成为攻击者的新选择。这种攻击可能与控制数据攻击一样严重,攻击者甚至能仅利用非控制数据构建图灵完备攻击。目前,cfi防御虽在许多平台部署,但难以防范非控制数据攻击。针对非控制数据攻击,现有的防御手段包括有:
2、数据流完整性(dfi):确保数据在程序中的流动符合预期的合法路径。通过监控数据的来源和去向,防止非控制数据被恶意篡改或利用。这是首个用于防御非控制数据攻击的技术,但性能开销高。硬件辅助方法(hdfi、hardscope):利用硬件特性来增强对非控制数据攻击的防御。通过在硬件层面上实现数据流动的监控和验证,提供更高效和可靠的保护。这种方法依赖于硬件修改,需要对硬件进行重新设计或升级,限制了其广泛适用性。数据随机化加密方法(dsr、codarr):dsr通过使用异或密钥对内存中的数据进行加密来随机化数据的表示,无法抵御信息泄漏攻击。codarr采用动态数据空间随机化方案,具有较高的性能开销。cvi和idm:识别并保护安全的数据,需要外部测量引擎或虚拟机监控程序保护关键数据。面向数据编程防御器(dopdefender和dopdefenderplus):专门针对非控制数据攻击中的dop攻击,只能防止这一类型的攻击,不能抵御所有针对非控制数据的攻击。
3、需要注意的是,非控制数据攻击
技术实现思路
1、专利技术目的,本专利技术的目的是为了解决
技术介绍
存在的技术问题,为此,提供了一种面向非控制数据攻击的软件级防御方法。
2、技术方案,为了实现上述目的,本专利技术提出一种面向非控制数据攻击的软件级防御方法,该方法包括以下步骤:
3、步骤s1:识别目标程序中的目标数据;
4、步骤s2:搜集程序中访问目标数据的正确指令位置,形成正确访问指令集合;
5、步骤s3:根据程序对目标数据的访问方式和目标数据的保护级别,修改目标程序中的目标数据所在内存页的访问权限;
6、步骤s4:根据修改后的页面权限,对页失效处理函数进行代码修改,修改后的页失效处理函数负责识别和区分对目标数据的正确访问和不正确访问;
7、步骤s5:当程序访问到目标数据时,执行页失效处理函数,页失效处理函数判断对目标数据的访问是否正确,即访问目标数据的指令地址是否在先前搜集的集合范围内;若不在,则是不正确访问,程序通知管理员并自动终止;若在,则为正常访问,允许当前操作。
8、进一步的,在步骤s1中,识别目标程序中的目标数据包括:目标程序的配置数据,用户输入,用户身份信息,目标程序的决策数据,got表,link_map链表。
9、所述目标程序的配置数据是指程序从用户配置文件中读取的数据,如网络服务程序apache的cgi-bin目录,ftp服务程序proftpd的服务器名称,端口号,网络服务程序nginx的并发进程数等数据。
10、所述目标程序的决策数据是指影响目标程序控制流的分支条件数据,通常是if条件判断中使用的变量。例如,一个web应用程序可能需要根据用户的权限级别来决定是否允许访问特定的页面或执行特定的操作。这里用户的权限级别就是目标程序的决策数据。另外,在软件配置中,开关(flag)是一种常见的决策数据,用于控制某些功能是否启用。在处理网络请求时,响应码是一个重要的决策数据,它指示请求是否成功,以及如何处理响应。
11、进一步的,在步骤s1中,识别目标数据,所述方法还包括:
12、(1.1)利用objdump获取程序got段的地址,获取要保护的got表和link_map链表的地址;
13、(1.2)分析目标的函数以获取配置数据,用户输入,用户身份数据;
14、(1.3)根据目标程序二进制文件生成控制流图以获取决策数据。
15、进一步的,在步骤s2中,搜集程序中访问目标数据的正确指令位置,使用指令跟踪器定位访问目标数据的指令,在程序访问特定内存位置时打印指令地址,形成指令集合,所述正确指令是指目标程序在未受攻击时对目标数据的正常读写操作。
16、进一步的,在步骤s3中,根据程序对目标数据的访问方式和目标数据的保护级别,修改目标程序中的目标数据所在内存页的访问权限,如果程序对目标数据的访问方式是只读或者目标数据的保护级别是防泄露,则将目标数据所在的内存页权限修改为不可访问;如果程序对目标数据的访问方式是读写且目标数据的保护级别是防篡改,则将目标数据所在内存页的权限修改为只读;对不同存储位置和不同类型的目标数据进行不同的修改操作,在目标数据初始化后,以及搜集到的每次正确访问之后进行页面权限的修改。
17、并且,所述修改目标程序中的目标数据所在内存页的访问权限还包括:
18、通过代码插桩的方式,在配置数据初始化之后,为其分配新的内存,将数据移动到新页面上,并将该页面设置为不可写;更改指向该数据的指针,并将原始页面上的值清零;
19、通过代码插桩的方式,记录指向用户输入的指针,检查该指针是否与经过验证的用户输入指针相同;
20、通过代码插桩的方式,在用户身份信息存储在进程内存之后,分配一个单独的页面并将数据移动到该页面上,将存储用户身份数据的新页面设置为不可访问,并擦除原始内存位置;
21、通过代码插桩的方式,将决策数据从局部变量转变为指向新映射页面的指针,决策数据的值存储在新页面上,将该页面设置为不可访问;避免指针被覆盖,使用异或密钥加密决策数据指针,并且,该异或密钥除了页面错误处理程序之外,是不可访问的;
22、通过代码插桩的方式,用异或密钥对所有全局偏移表got项进行加密,密钥存储在一个新页面中,并且在加密后被标记为不可访问,并定期使用新的异或密钥对加密的got项进行再次加密;
23、通过代码插桩的方式,将link_map结构的物理页面映射到两个虚拟页面,所述两个虚拟页面具有不同的权限,其中一个虚拟页面是ld.so库使用的原始页面,它具有读写权限,以允许ld.so进行正常执行;另一个虚拟页面由目标程序使用,它只有读权限。
24、进一步的,在步骤s4中,修改页失效处理函数来检测不正确的目标数据访问操作,所述方法包括:
25、(4.1)通过sigaction系统调用注册一个新的页失效处理函数到内核,用于处理由于页面权限更改造成的目标数据访问失效;
26、(4.2)一旦目标程序访问目标数据,页面权限的更改造成发生页面错误,进而控制流转而本文档来自技高网...
【技术保护点】
1.一种面向非控制数据攻击的软件级防御方法,其特征在于,该方法包括以下步骤:
2.根据权利要求1所述的一种面向非控制数据攻击的软件级防御方法,其特征在于,在步骤S1中,识别目标数据包括:目标程序的配置数据,用户输入,用户身份信息,目标程序的决策数据,GOT表,link_map链表;所述目标程序的配置数据是指程序从用户配置文件中读取的数据;所述目标程序的决策数据是指影响目标程序控制流的分支条件数据。
3.根据权利要求2所述的一种面向非控制数据攻击的软件级防御方法,其特征在于,在步骤S1中,识别目标数据,所述方法还包括:
4.根据权利要求1所述的一种面向非控制数据攻击的软件级防御方法,其特征在于,在步骤S2中,搜集程序中访问目标数据的正确指令位置,使用指令跟踪器定位访问目标数据的指令,在程序访问特定内存位置时打印指令地址以形成指令集合,所述正确指令是指目标程序在未受攻击时对目标数据的正常读写操作。
5.根据权利要求1所述的一种面向非控制数据攻击的软件级防御方法,其特征在于,在步骤S3中,根据程序对目标数据的访问方式和目标数据的保护级别,
6.根据权利要求5所述的一种面向非控制数据攻击的软件级防御方法,其特征在于,所述修改目标程序中的目标数据所在内存页的访问权限还包括:
7.根据权利要求1所述的一种面向非控制数据攻击的软件级防御方法,其特征在于,在步骤S4中,修改页失效处理函数识别不正确的目标数据访问操作,所述方法包括:
...【技术特征摘要】
1.一种面向非控制数据攻击的软件级防御方法,其特征在于,该方法包括以下步骤:
2.根据权利要求1所述的一种面向非控制数据攻击的软件级防御方法,其特征在于,在步骤s1中,识别目标数据包括:目标程序的配置数据,用户输入,用户身份信息,目标程序的决策数据,got表,link_map链表;所述目标程序的配置数据是指程序从用户配置文件中读取的数据;所述目标程序的决策数据是指影响目标程序控制流的分支条件数据。
3.根据权利要求2所述的一种面向非控制数据攻击的软件级防御方法,其特征在于,在步骤s1中,识别目标数据,所述方法还包括:
4.根据权利要求1所述的一种面向非控制数据攻击的软件级防御方法,其特征在于,在步骤s2中,搜集程序中访问目标数据的正确指令位置,使用指令跟踪器定位访问目标数据的指令,在程序访问特定内存位置时打印指令地址以形成指令集合,所述正确指令是指目标程序在未受攻击时对目标数据的正常读写操作。
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。