CN106326747B - 一种针对rop攻击的检测方法 - Google Patents

一种针对rop攻击的检测方法 Download PDF

Info

Publication number
CN106326747B
CN106326747B CN201610740846.8A CN201610740846A CN106326747B CN 106326747 B CN106326747 B CN 106326747B CN 201610740846 A CN201610740846 A CN 201610740846A CN 106326747 B CN106326747 B CN 106326747B
Authority
CN
China
Prior art keywords
dynamic link
link library
code segment
plot
library
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201610740846.8A
Other languages
English (en)
Other versions
CN106326747A (zh
Inventor
李伟明
孔华锋
贺玄
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huazhong University of Science and Technology
Third Research Institute of the Ministry of Public Security
Original Assignee
Huazhong University of Science and Technology
Third Research Institute of the Ministry of Public Security
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huazhong University of Science and Technology, Third Research Institute of the Ministry of Public Security filed Critical Huazhong University of Science and Technology
Priority to CN201610740846.8A priority Critical patent/CN106326747B/zh
Publication of CN106326747A publication Critical patent/CN106326747A/zh
Application granted granted Critical
Publication of CN106326747B publication Critical patent/CN106326747B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Debugging And Monitoring (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种针对ROP攻击的检测方法。该检测方法包括获得动态链接库的新基址=动态链接库的原基址+偏移量,所述偏移量为分配粒度的随机非零整数倍,且所述偏移量的绝对值大于动态链接库的长度;修改动态链接库的基址字段,令所述基址字段指向所述动态链接库的新基址;在动态链接库中增加代码段,所述代码段用于在动态链接库的原基址对应的加载位置填充警告指令;所述代码段的尾部具有跳转指令,所述跳转指令的跳转距离为跳转指令与入口函数的相对距离;将动态链接库的入口地址设置为所述代码段的地址。本发明可以应用于所有Windows系统,不会对系统造成额外负担,能够检测除JIT‑ROP以外的所有ROP攻击。

Description

一种针对ROP攻击的检测方法
技术领域
本发明属于系统安全技术领域,更具体地,涉及一种针对ROP攻击的检测方法。
背景技术
随着信息技术的高速发展和网络的快速普及,计算机软件系统在社会生活中扮演着越来越重要的角色,与此同时,各种程序漏洞仍然很普遍,在遗留的软件系统中尤为突出,通过这些漏洞,攻击者可以劫持软件系统程序的控制流并将其转向自己预设的控制流,令系统执行非用户意愿的行为。一种普遍的攻击方式就是Return-Oriented Programming(简称ROP)攻击,这种攻击方式通过搜索内存中以跳转指令(如RET指令)结尾的代码片段,并将这些代码片段进行组合形成一个用于完成攻击目的的指令序列,利用内存漏洞替换掉原有的程序流程。ROP攻击者最常用的就是在Windows的动态链接库中搜索代码片段。
现有的针对ROP攻击的实际运用的检测方法是控制流完整性检测方法(ControlFlow Integrity,CFI):由加州大学和微软公司于2005年提出,其检测策略是检查程序控制流的完整性,不允许非法转移程序的控制流,这就切断了ROP的攻击途径。承袭此思想,Abadi提出了基于控制流程图(Control flow graph,CFG)的CFI检测机制,程序按照控制流程在每一个跳转指令进行地址跳转时,通过检查目的地址的有效性,从而保证程序所执行的命令在预先设定的CFG范围内。这种检测机制不仅能够检测静态ROP攻击还能够检测即时搜索代码的JIT-ROP攻击(Just-In-Time Code Reuse)。但是由于CFI针对程序每一步都要进行过滤,所以会产生巨大的性能负担;同样由于该方案是需要对系统的内核程序进行修改,在Windows8之前的系统都不能应用这种检测方法。
基于地址空间随机化(Address Space Layout Randomization,ASLR)能够防御非JIT-ROP类型的ROP攻击,在Windows Vista版本及以后的Windows系统中均实现了此技术,但在之前的Windows版本并不兼容此方法。目前还没有一种方法能够在在这些系统中实现检测ROP攻击。根据零点指标数据2015年3月9日公布的网络调查结果显示,目前WindowsXP在国内电脑操作系统市场占据半壁江山的份额,尽管微软停止技术支持,但是仍有近八成用户不愿放弃使用XP。因此针对适用于所有系统的ROP检测研究还是很有必要的。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提出了一种针对ROP攻击的检测方法,其目的在于转移ROP所攻击的动态链接库的加载位置,,并在原加载位置填充警告指令,由此满足ROP攻击的防御需求。
为实现上述目的,按照本发明的一个方面,提出了一种针对ROP攻击的检测方法,包括:
修改动态链接库的基址字段,令所述基址字段指向的基址由动态链接库的初始基址改变为动态链接库的新基址,且所述动态链接库的新基址=偏移量+动态链接库的初始基址;
在动态链接库中增加代码段,所述代码段用于在动态链接库的初始基址对应的加载位置填充警告指令;所述代码段的尾部具有跳转指令,所述跳转指令的跳转距离为跳转指令与动态链接库的原入口函数的相对距离;
将动态链接库的入口地址由原入口函数的起始地址修改为所述代码段的起始地址。
优选地,动态链接库的新基址=偏移量+动态链接库的初始基址,所述偏移量为分配粒度的随机非零整数倍,且所述偏移量的绝对值大于动态链接库的长度。
优选地,所述在动态链接库中增加代码段的方法具体为:在动态链接库的所有段之后增加代码段,令新的动态链接库的段数=初始的动态链接库的段数+1;令动态链接库的新长度=动态链接库的初始长度+增加的代码段的长度;将增加的代码段的属性保存于动态链接库的段表中。
优选地,所述检测方法还包括计算并修改所述动态链接库的校验和。
优选地,所述检测方法用于Windows系统。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,由于对动态链接库的基址进行修改,从而改变动态链接库的加载位置,能够取得下列有益效果:
1、本发明的方法不需要对系统的内核程序进行修改,仅仅通过修改动态链接库的加载位置实现ROP攻击的检测,能应用于所有Windows系统;
2、本发明无需针对程序的每一步过滤,对系统的性能不会产生额外负担,同时能够检测除JIT-ROP以外的所有ROP攻击。
附图说明
图1本发明检测ROP攻击过程的示意图;
图2原始动态链接库结构和修改后的动态链接库结构;
图3在动态链接库中增加新段需要修改的位置;
图4加载阶段,动态链接库修改前后内存的情况;
图5a为修改动态链接库之前,ROP攻击过程;
图5b为修改动态链接库以后,ROP攻击过程。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明公开了一种针对ROP攻击的检测方法,在该检测方法中,我们解决了以下技术问题:1、在未应用ASLR的系统中实现检测并防御ROP攻击;2.提出的解决方案具有普适性,即适用于所有Windows系统。
由于系统在加载动态链接库时都是按照基址字段,将动态链接库加载至对应的加载位置。通常而言,动态链接库的基址与动态链接库中的基址字段相同,都是固定的。ROP攻击者在攻击之前就已会准备好这些代码,然后按照该固定的基址去访问,所以在进行攻击之前都会确保内存中已经加载了代码段所属的动态链接库,以便成功部署攻击。本发明的思路就是要转移这些动态链接库的加载位置(以基址为起始位置,长度为动态链接库的长度的内存空间),将加载位置在内存中偏移一段距离,然后在动态链接库的初始基址对应的加载位置填充警告指令,那么ROP攻击者按照原基址进行访问时,访问的就是警告指令,使得系统检测到ROP攻击。这种检测方式不会影响到动态链接库的正常使用,且不会需要更改系统的内核。
针对技术问题,对动态链接库进行重定位,使其偏移原来的加载位置,并在原来的加载位置填充警告指令,使得ROP攻击者执行警告指令,导致系统捕获异常,检测出ROP攻击。其过程如图1所示。将本发明的技术方案应用到系统的动态链接库后,能够确保利用这些动态链接库进行普通ROP攻击(即非JIT-ROP攻击)的攻击行为将无法成功实施。
具体而言,本发明针对ROP攻击的检测方法包括:修改动态链接库的加载位置,在动态链接库中增加代码段,计算并修改动态链接库的校验和;
其中,修改动态链接库的加载位置具体包括:修改动态链接库的基址字段,令所述基址字段指向的基址由动态链接库的初始基址改变为动态链接库的新基址,且所述动态链接库的新基址=偏移量+动态链接库的初始基址,所述偏移量为分配粒度(一般为64K)的随机非零整数倍,且所述偏移量的绝对值大于动态链接库的长度;
所述在动态链接库中增加代码段具体包括:在动态链接库中增加代码段,所述代码段用于在动态链接库的初始基址对应的加载位置填充警告指令;所述代码段的尾部具有跳转指令,所述跳转指令的跳转距离为跳转指令的起始地址与动态链接库的原入口函数的起始地址的相对距离;将动态链接库的入口地址设置为所述代码段的起始地址。
其中,所述在动态链接库中增加代码段的方法具体为:在动态链接库的所有段之后增加代码段,如果在动态链接库中包括绑定导入表(bound import table),则还需将绑定导入表转移至新段之后;令新的动态链接库的段数=初始的动态链接库的段数+1;令动态链接库的新长度=动态链接库的初始长度+增加的代码段的长度;将增加的代码段的属性保存于动态链接库的段表中。
在系统以上述方法进行防御后,针对ROP的攻击,系统的检测方法分以下步骤进行:
1、ROP攻击者促使系统加载动态链接库;
2、系统从动态链接库的入口地址从而跳转至增加的代码段;
3、系统执行增加的代码段中的代码,首先在动态链接库的初始基址对应的加载位置填充警告指令,然后执行增加的代码段尾部的跳转指令,并跳转至原入口函数;
4、系统执行原入口函数,由于动态链接库的基址字段发生了变化,从而使得动态链接库的对应的加载位置也发生了变化,如此便将动态链接库转移到了一个新位置;
5、此时,ROP攻击者仍然按照动态链接库的初始基址访问动态链接库的初始基址对应的加载位置,由于此处已被填充为警告指令,于是系统发现ROP攻击,从而实现了ROP攻击的检测。
实施例1
PE文件指的是微软Windows操作系统的程序文件,动态链接库就属于典型的PE文件。目前,PE文件的修改技术已十分成熟,但是,还没有出现一种成熟的技术仅仅通过修改动态链接库来检测ROP攻击的。利用这种思路来检测ROP攻击不需要对系统进行内核程序的修改,可兼容所有的Windows系统。
本实施例提供了一种针对ROP攻击的检测方法,包括预处理阶段以及加载阶段:
预处理阶段中,我们采用的方案是在原有的动态链接库中新增加一个代码段作为新段,然后在该新段中添加代码来实现在原始动态链接库的加载位置填充警告指令的功能。
图3是在图2的基础上详细标记出了要修改的部分,在NT头中要修改四部分的内容,分别是PE文件头中的表示段个数的字段,PE可选头中表示动态链接库大小的字段、原入口函数地址、和校验和字段,段表中需要新增一个段表用来描述新增加的段,以及要在新段中填充代码。
S1.实现动态链接库的重定位,详细步骤如下:
S11决定动态链接库的基址字段对应的基址的偏移量。我们采用随机函数来随机生成一个值作为偏移量,不使用固定值是为了防止ROP攻击者在自己的系统实施此方案后重新获得此基址字段,然后根据固定的偏移量来实施攻击。此偏移量在随机化的基础上还需要满足两个条件:(1)为了不给攻击者留下任何搜索到可利用信息的可能,偏移量的绝对值必须大于动态链接库的长度;(2)由于在Windows系统中动态链接库的基址都是按照64K(0x10000)作为分配粒度进行对齐,所以计算得到的偏移量还需要依此进行对齐,即偏移量为分配粒度的整数倍。
S12.修改动态链接库的基址字段。Windows操作系统选择动态链接库的基址时会参照动态链接库文件的基址字段来进行加载。读取PE头部信息,该字段位于如图2所示的NT头部的PE可选头。这里将从原来的动态链接库中读取到的基址字段称为原基址字段,计算方法为:新基址字段=原基址字段+偏移量。例如现有一个动态链接库的基址字段是0x12340000,假设经1)计算的偏移量为0x220000,那么新的基址字段就是0x12340000+0x220000=0x12560000;该偏移量与步骤S11中的偏移量相同;
S13.修改动态链接库。在动态链接库中的指令地址、数据地址是使用基于基址字段的绝对地址来表示的。如果基址字段发生变化,那么绝对地址就要基于新基址字段发生变化。修改公式同步骤S12。动态链接库中的重定位段(reloc段),如图2所示,标记出了这些需要修改的指令地址和数据地址在动态链接库中的位置。图1中从上到下分别是动态链接库的初始基址和修改后的动态链接库的新基址,实线框中是修改后的动态链接库,当动态链接库根据修改后的基址字段加载到动态链接库的新基址时,会在动态链接库的初始基址对应的加载位置填充警告指令。当ROP攻击程序按照原始动态链接库的基址字段进行访问时,会触发警告指令的执行,告知系统可能遭到攻击。
S2.在动态链接库中新增一个代码段作为新段,所述新段用于填充代码。在系统加载该动态链接库的时候会运行这些代码:所述代码用于在动态链接库的原基址对应的加载位置填充警告指令。详细步骤如下:
S21.准备增加的代码段(CodeForFill Section),这里将命名为.stext段。增加的代码段中代码的作用是利用软件系统提供的内存分配函数申请原地址空间,然后用内存填充函数将申请的空间填充为警告指令。在C语言中嵌套汇编语句实现这一功能,然后编译链接获得相应的可执行二进制文件,将其提取出来,成为.stext段的内容。
S22.修改动态链接库的文件头中的段数字段,该字段位于NT头中的可选头字段,如图3的标记1中所示,该字段描述该动态链接库中有多少个段,修改公式:段数(新)=段数(旧)+1。
S23.修改动态链接库文件长度,如图3的标记2处。修改公式:动态链接库文件长度(新)=动态链接库文件长度(旧)+增加的.stext段的长度(即.stext段按照段对齐字段(Section Alignment)对齐后的大小,段对齐字段是图2中位于NT头中的可选头里面的一个字段)。.stext段中填充的代码不会超过对齐字段对应的分配粒度,所以.stext段的长度在通常情况下也就是分配粒度的长度。
S24.新增段表,如图3的标记3处,用来描述.stext段的属性。需要修改的属性有段名、段的文件大小(指段中的实际数据大小)、.stext段的长度、段文件偏移和段相对偏移(在内存中加载该动态链接库后的偏移),以及页面属性(可读、可写、可执行)信息。如果动态链接库结构中含有绑定导入表(bound import table,位于图3中PE可选头的数据目录中),因其位于段表之后,所以需要修改其偏移值:新偏移值=旧偏移值+一个段表的大小。每个段表的结构相同,大小均为固定值,可直接求其包含数据的多少获得。再将绑定导入表追加在新段表之后。
S25.如图3的标记4处,将S21.中准备好的.stext段追加在所有段之后。如果动态链接库文件中包含证书表(Certificate Table,位于图3中PE可选头的数据目录中),因其位于段结构之后,所以需要修改其偏移值:新偏移值=旧偏移值+新段大小。再将绑定证书表追加在新段之后,这些并不影响新段的内容。
修改前后的数据库结构如图2所示,原始动态链接库结构包括DOS头、NT头(NT头里面又包括PE签名、PE文件头、PE可选头)、段表、.text段、.data段、.reloc段...(这里只列出动态链接库公有的段,个别动态链接库可能含有其他特定的段,这些段并不影响本发明的功能描述,所以予以忽略)修改后的动态链接库在结构上新增加了一个.stext段,用以实现在原始动态链接库的加载位置填充警告指令。
S3.实现代码跳转,使得填充在新段的代码顺利执行。
S31.修改动态链接库的入口地址,在图3标志2处的PE可选头中获得。系统在加载动态链接库时,会首先执行原入口函数,为了在加载时成功执行.stext段的代码,我们重新设置程序的原入口函数的地址为.stext段的起始地址(S24中的段相对偏移)。
S32.在.stext段后面添加跳转指令,在执行CodeForFill Section中的代码后则通过跳转指令跳转到原来的原入口函数,以便系统正常加载动态链接库。添加的跳转指令只能使用相对跳转指令,跳转距离为跳转指令到原入口函数的地址的相对距离。
S33.计算并修改校验和,校验和是校验整个动态链接库文件,用来验证动态链接库是否被篡改,位于图3标志2处。使用系统提供的接口函数创建动态链接库修改后的文件映射,并根据映射地址和文件长度计算出修改后的动态链接库的新校验和,替换原校验和。这是每当动态链接库发生变化后才必须要修改的地方,因为系统在加载时会用这个值进行验证。
加载阶段,在系统以上述方法进行了防御后,针对ROP的攻击,系统的加载阶段分以下步骤进行:
假设现有一动态链接库的基址字段为0x12340000,修改后的基址字段为0x12560000,修改前后,系统的内存状态如图4所示,左边是加载原始动态链接库的内存空间,原始动态链接库加载于起始位置为0x12340000,结束位置为0x12560000的地方。右边是加载修改后的动态链接库的内存空间,修改后的动态链接库加载在起始位置为0x12560000的地方,即原始动态链接库的结束位置,并且0x12340000~0x12560000的内存空间被填充为了警告指令。
本方案的检测机制是实时的,一旦遭到攻击就会检测出ROP攻击行为,所以该阶段的说明需要结合攻击来阐述。例如在加载阶段中的某原始动态链接库中有下面这样一个代码片段可以被ROP攻击者利用。
0x12367890 pushad
0x12367891 retn
在加载原始动态链接库的系统遭到ROP攻击时,如图5a,ROP攻击者通过内存泄露漏洞将函数的返回地址addr1修改为在目标动态链接库中搜索到的代码片段的地址,如0x12367890,使得本来要跳转到addr1的程序控制流跳转到了0x12367890去执行代码片段(pushad,retn),成功劫持了程序控制流。然而,在加载修改后的动态链接库系统遭到ROP攻击时,如图5b,0x12367890处的代码已经是我们填充的警告指令。当攻击者覆盖了返回地址,跳到0x12367890处时,便会执行警告指令,导致系统发现异常,检测出ROP攻击,使得攻击失败。
该具体步骤如下:
1、ROP攻击者促使系统加载动态链接库;
2、系统从动态链接库的入口地址从而跳转至.stext段;
3、系统执行增加的代码段中的代码,首先在动态链接库的初始基址对应的加载位置(即图4中0x12340000~0x12560000的位置)填充警告指令,然后执行代码段尾部的跳转指令,并跳转至原入口函数;
4、系统执行原入口函数,由于动态链接库的基址字段发生了变化,从而使得动态链接库的对应的加载位置也发生了变化(图4中由0x12340000~0x12560000变为了0x12560000~0x12780000),如此便将动态链接库转移到了一个新的加载位置;
5、此时,ROP攻击者仍然按照动态链接库的初始基址访问动态链接库的初始基址对应的加载位置(即图4中0x12340000~0x12560000的位置),由于此处已被填充为警告指令,于是系统发现ROP攻击,从而实现了ROP攻击的检测。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (4)

1.一种针对ROP攻击的检测方法,其特征在于,包括:
修改动态链接库的基址字段,令所述基址字段指向的基址由动态链接库的初始基址改变为动态链接库的新基址,其中,动态链接库的新基址=偏移量+动态链接库的初始基址,所述偏移量为分配粒度的随机非零整数倍,且所述偏移量的绝对值大于动态链接库的长度;
在动态链接库中增加代码段,所述代码段用于在动态链接库的初始基址对应的加载位置填充警告指令;所述代码段的尾部具有跳转指令,所述跳转指令的跳转距离为跳转指令与动态链接库的原入口函数的相对距离;
将动态链接库的入口地址由原入口函数的起始地址修改为所述代码段的起始地址。
2.如权利要求1所述的检测方法,其特征在于,所述在动态链接库中增加代码段的方法具体为:在动态链接库的所有段之后增加代码段,令新的动态链接库的段数=初始的动态链接库的段数+1;令动态链接库的新长度=动态链接库的初始长度+增加的代码段的长度;将增加的代码段的属性保存于动态链接库的段表中。
3.如权利要求1所述的检测方法,其特征在于,所述检测方法还包括计算并修改所述动态链接库的校验和。
4.如权利要求1所述的检测方法,其特征在于,所述检测方法用于Windows系统。
CN201610740846.8A 2016-08-26 2016-08-26 一种针对rop攻击的检测方法 Expired - Fee Related CN106326747B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610740846.8A CN106326747B (zh) 2016-08-26 2016-08-26 一种针对rop攻击的检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610740846.8A CN106326747B (zh) 2016-08-26 2016-08-26 一种针对rop攻击的检测方法

Publications (2)

Publication Number Publication Date
CN106326747A CN106326747A (zh) 2017-01-11
CN106326747B true CN106326747B (zh) 2018-11-27

Family

ID=57791039

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610740846.8A Expired - Fee Related CN106326747B (zh) 2016-08-26 2016-08-26 一种针对rop攻击的检测方法

Country Status (1)

Country Link
CN (1) CN106326747B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107229862B (zh) * 2017-06-06 2019-11-12 电子科技大学 基于模拟栈和线程注入的一种rop攻击栈溢出防护方法
CN110275792B (zh) * 2019-03-05 2020-10-23 华为技术有限公司 高级语言的异常处理方法、装置和系统
CN114826793B (zh) * 2022-07-04 2022-09-02 中国人民解放军国防科技大学 一种rop链的检测方法、装置及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101304320A (zh) * 2008-06-16 2008-11-12 华为技术有限公司 一种地址处理方法和装置
CN102663312A (zh) * 2012-03-20 2012-09-12 中国科学院信息工程研究所 一种基于虚拟机的rop攻击检测方法及系统
CN105138903A (zh) * 2015-08-14 2015-12-09 电子科技大学 一种基于ret指令与jmp指令的rop攻击检测方法
CN105740697A (zh) * 2016-01-26 2016-07-06 国家信息技术安全研究中心 一种xp中地址空间布局随机化方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101304320A (zh) * 2008-06-16 2008-11-12 华为技术有限公司 一种地址处理方法和装置
CN102663312A (zh) * 2012-03-20 2012-09-12 中国科学院信息工程研究所 一种基于虚拟机的rop攻击检测方法及系统
CN105138903A (zh) * 2015-08-14 2015-12-09 电子科技大学 一种基于ret指令与jmp指令的rop攻击检测方法
CN105740697A (zh) * 2016-01-26 2016-07-06 国家信息技术安全研究中心 一种xp中地址空间布局随机化方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
针对ROP攻击的程序安全性检测与防御技术的研究;黄志军;《中国优秀硕士学位论文全文数据库 信息科技辑》;20150715;第I139-56页 *

Also Published As

Publication number Publication date
CN106326747A (zh) 2017-01-11

Similar Documents

Publication Publication Date Title
KR102192880B1 (ko) 소프트웨어 재패키징 방지 방법 및 장치
Lee et al. Type casting verification: Stopping an emerging attack vector
US9147070B2 (en) Binary translation and randomization system for application security
US11507362B1 (en) System and method for generating a binary patch file for live patching of an application
CN106326747B (zh) 一种针对rop攻击的检测方法
CN106371940A (zh) 一种程序崩溃解决方法及装置
Rivera et al. Keeping safe rust safe with galeed
Di Federico et al. How the {ELF} Ruined Christmas
Haller et al. METAlloc: Efficient and comprehensive metadata management for software security hardening
US10983923B2 (en) Dynamic memory protection
Zhang et al. JITScope: Protecting web users from control-flow hijacking attacks
Jiang et al. Aem: Facilitating cross-version exploitability assessment of linux kernel vulnerabilities
CN107545174B (zh) 一种基于llvm的抵御控制流劫持的系统和方法
US11704404B2 (en) Method for control-flow integrity protection, apparatus, device and storage medium
Zhou et al. The final security problem in IOT: Don’t count on the canary!
CN106127054A (zh) 一种面向智能设备控制指令的系统级安全防护方法
US11055202B1 (en) Compilation scheme for tagged global variables
CN112966258B (zh) 控制流完整性保护方法、系统、装置及可读存储介质
Gadient et al. Automatic Exploitation of Fully Randomized Executables
CN114065208A (zh) 一种面向堆内存错误的检测方法及装置
Borck et al. Frankencode: Creating diverse programs using code clones
KR102351663B1 (ko) Cfi 기반 got 변조 공격 방지 장치 및 그 방법
US11113392B2 (en) Executable binary code insertion
WO2022169661A1 (en) Method and device of protecting a first software application to generate a protected software application
CN110162967A (zh) 一种基于mpx的内存时间错误防护方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20181127

Termination date: 20190826

CF01 Termination of patent right due to non-payment of annual fee