CN105612525A - 针对应用安全性的二进制转换和随机化系统 - Google Patents

针对应用安全性的二进制转换和随机化系统 Download PDF

Info

Publication number
CN105612525A
CN105612525A CN201480056057.1A CN201480056057A CN105612525A CN 105612525 A CN105612525 A CN 105612525A CN 201480056057 A CN201480056057 A CN 201480056057A CN 105612525 A CN105612525 A CN 105612525A
Authority
CN
China
Prior art keywords
reorientation
executable file
address
metadata
data
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.)
Granted
Application number
CN201480056057.1A
Other languages
English (en)
Other versions
CN105612525B (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.)
Cisco Technology Inc
Original Assignee
Cisco Technology Inc
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 Cisco Technology Inc filed Critical Cisco Technology Inc
Publication of CN105612525A publication Critical patent/CN105612525A/zh
Application granted granted Critical
Publication of CN105612525B publication Critical patent/CN105612525B/zh
Active 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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)

Abstract

在一个实施例中,描述了提供二进制转换和随机化系统的方法。重定位元数据被接收,针对可执行文件中的多个执行单元中的每一个执行单元,重定位元数据包括从可执行文件到地址空间范围的映射。针对多个执行单元中的至少一个,映射被修改以用随机定位的地址空间范围处的指令的重定位副本替换该地址空间范围内的指令。多个执行单元的顺序因此可以被修改。使用重定位元数据来从可执行文件生成镜像,并且使得镜像执行。随机化可以以双程实行以提供针对每一个计算机以及针对每一次执行而被唯一随机化的可执行文件。

Description

针对应用安全性的二进制转换和随机化系统
技术领域
本公开一般地涉及计算机应用安全性。更具体地,本公开涉及用于修改二进制计算机程序镜像以提高应用安全性的技术。
背景技术
本节中所描述的方法可以被执行,但不一定是之前已经构思或执行的方法。因此,除非本文中以其他方式进行指示,否则本节中所描述的方法不是本申请中权利要求的现有技术并且不因包含在本节中而承认是现有技术。
为了保护计算机系统免受可能危害系统安全性的恶意攻击,加强计算机应用以对抗使能任意代码未经授权的执行的漏洞利用(exploit)技术是有用的。某些种类的漏洞利用依赖于代码和数据布局的知识来成功攻击应用。防止这些种类的漏洞利用的现有方法只在一定程度有效。
附图说明
在附图中:
图1A示出了针对应用安全性的示例二进制转换和随机化系统;
图1B示出了针对应用安全性的示例双程二进制转换和随机化系统。
图1C示出了由针对应用安全性的二进制转换和随机化系统扩增的示例重定位元数据;
图2示出了用于提供针对应用安全性的二进制转换和随机化系统的方法;
图3示出了可以实现用于提供针对应用安全性的二进制转换和随机化系统的方法的计算机系统。
具体实施方式
在下面的说明中,为了解释,给出许多具体的细节以便提供对本公开的全面理解。然而,对本领域的技术人员显而易见的是本公开可以在没有这些具体细节的情况下被实现。在其他实例中,众所周知的结构和设备以框图的形式被示出以便避免不必要地模糊本公开。
本文中根据下面的大纲来描述实施例:
1.0概述
2.0结构概述
2.1应用攻击向量
2.2地址空间布局随机化
2.3二进制转换和随机化系统
2.4双程BTRS随机化
3.0功能概述
3.1程序分析
3.2元数据扩增
3.3镜像随机化
4.0实现机制-硬件概述
5.0延伸和替换
6.0附加公开
1.0概述
在实施例中,呈现了用于提供针对应用安全性的二进制转换和随机化系统的方法。在实施例中,接收重定位元数据,该重定位元数据针对可执行文件中的多个执行单元的每一个执行单元,包括从可执行文件到地址空间范围的映射。针对多个执行单元中的至少一个,映射被修改以用随机定位的地址空间范围处的指令的重定位副本替换该地址空间范围内的指令。使用重定位元数据来从可执行文件生成镜像,并且执行镜像。
在另一实施例中,重定位元数据在第一计算机处被接收。针对包括计算机可执行指令的可执行文件内的多个执行单元中的每一个特定执行单元,重定位元数据包括该特定执行单元从可执行文件到地址空间范围的映射,其中执行单元是代码函数或基本控制块。针对多个执行单元中的所有执行单元,基于使用对第一计算机唯一的随机化函数,映射被修改以用随机定位的地址空间范围处的指令的重定位副本替换该地址空间范围内的指令。多个执行单元的顺序因此被修改。使用重定位元数据来从可执行文件生成镜像,并且使用第二计算机来执行镜像。对镜像的第二随机化过程可以在执行之前由第二计算机实行。
在其他方面,实施例提供了被配置为实行上述方法的计算机装置和计算机可读介质。
2.0结构概述
图1A示出了针对应用安全性的示例二进制转换和随机化系统。图1A的系统100包括计算机160A、计算机160B、计算机160C、计算机160D和网络119。为了清楚地示出示例,图1A示出了四个计算机160A-160D,但是其他实施例可以在任意大小的联网计算机系统的情境中实现。计算机160A包括可执行文件140、运行时加载器162、元数据数据库163、控制流分析器166、编译器167和源代码168。元数据数据库163包括重定位元数据150。运行时加载器162包括二进制转换和随机化系统(BTRS)应用164以及扩增的重定位元数据180。BTRS应用164包括可以实现随机或伪随机处理的随机化函数165。计算机160B包括可执行文件140。计算机160C包括可执行文件140。计算机160D包括可执行文件140和漏洞利用攻击程序161。
计算机160A-160D中的每一个都可以包括任意类型的计算设备,包括个人计算机、工作站、服务器、膝上型计算机、上网本、平板电脑或移动计算设备。计算机160A-160D还可以包括诸如路由器、交换机和其他联网设备之类的专用设备。网络119宽泛地表示一个或多个网络或互联网络。
计算机160A-160C可以运行包括计算机可执行指令的可执行文件140,该计算机可执行指令用以提供应用、运行服务或者执行任意其他任务。例如,如果计算机160A-160C是路由器,则可执行文件140可以提供网络路由服务。如果计算机160A-160C是通用计算机,则可执行文件140可以是web浏览器或文档阅读器。为了从源代码168生成可执行文件140,可以使用编译器167。除了从源代码168生成的二进制代码,可执行文件140还包括图1A中未具体示出的链接的共享库函数和对外部库(例如,动态链路库和操作系统库)的调用。
为了简单起见,编译器167和源代码168被示为托管于还运行可执行文件140的相同计算机160A。然而,在替换实施例中,编译器工具链可以被托管于单独开发环境,在这种情况下只有经编译的最终结果(可执行文件140)被托管于计算机160A。
2.1应用攻击向量
恶意攻击者可能试图获取可执行文件140的副本以用于分析。在一些情况下,可执行文件140可能已经是免费可用的,例如,作为托管于公共网站上的预编译的二进制文件下载。在这种情况下,其他计算机(例如,计算机160B和160C)还可以运行相同的可执行文件140,并且还可以是攻击者可能的目标。在其他情况下,特别是当计算机160A是专用设备时,可执行文件140可以只托管于计算机160A,在这种情况下,攻击者可以写入固件拔提取工具、使用专用转储(dumping)以及对硬件进行反向工程、或者以其他方式设计提取可执行文件140的方法。
为了示例,假定计算机160D是攻击者的主机。假定二进制提取是成功的,则攻击者可以将可执行文件140的副本存储在计算机160D上。漏洞利用攻击程序161然后可以对可执行文件140执行辅助或自动的分析以(例如,根据对有缺陷数据的错误解析)找出漏洞(bug)或漏洞利用。在路由服务的情况下,可执行文件140可能未能对有缺陷的网络分组执行边界检查。在web浏览器的情况下,可执行文件140可能错误地解析有缺陷的web标签或脚本。在文档观察者的情况下,有缺陷的文档文件可能被错误地解析。
一旦漏洞利用攻击程序161识别漏洞或漏洞利用,则漏洞利用攻击程序161可以继续生成有缺陷的数据并且试图诱导计算机160A-160C上运行的可执行文件140来读取有缺陷的数据。在一些情况下,有缺陷的数据可以例如作为正常服务处理的一部分而被自动读取。在其他情况下,有缺陷的数据必须被手动读取,例如由导航到特定网站或打开特定文档的计算机160A-160C的用户手动读取。在这种情况下,可以使用诸如定制的电子邮件或其他诱导技术之类的社交工程攻击。
一旦漏洞或漏洞利用在目标计算机(例如,计算机160A)上被成功触发,则缓冲器溢出或其他行为可以被用来覆写程序存储器(或者更具体地为栈)以执行任意代码。极简化的攻击包括来将攻击有效负载直接写入栈并且将程序执行重新定向到栈内的有效负载地址,例如通过修改栈中已保存的返回地址,该已保存的返回地址稍后当从函数调用返回时被写入处理器的指令指针(EIP)。
为了防止栈执行任意代码,许多现今的操作系统提供对于配置和强制执行不可执行存储页的许可机制,这种机制可以在硬件级通过页表中所设置的位(例如,NX(从不执行)或XD(执行禁用)位)而被支持。在Windows操作系统中,这种特征被称为数据执行保护(DEP),其他操作系统可以使用不同的术语。对于支持不可执行的存储页的OS环境,栈不能被用来直接执行恶意有效负载。
响应于不可执行的存储页(包括面向返回的编程(return-orientedprogramming,ROP),其中栈可以用调用覆写以执行程序的现有函数和更小的区块或者“gadget(指令片段)”),新种类的攻击已经被开发。gadget可以执行各种有用的任务,诸如设置寄存器的值以将参数传递给函数、执行代码段、设置控制流以及其他任务。在ROP方法中,每一个gadget可以以返回指令结束,以使得下一ROPgadget可以被执行。
另一种类的攻击是依赖于程序中已经存在的控制流结构而不是修改栈中的返回地址的面向跳跃的编程(jump-orientedprogramming,JOP)。所识别的漏洞或漏洞利用可以首先将分支或跳跃的序列写入堆(heap)。然后首先分支到将写入堆中的数据用于程序控制流的调度器gadget。为了简单起见,在本申请中ROP和JOP一般都应该被称为ROP。
Return-to-libc是ROP攻击的一个示例,其调用标准C库中的函数(例如:用以执行诸如OSshell之类的任意程序的system()、或者用以修改对不可执行的存储页的允许的mprotect())。Return-to-libc攻击可以通过使用ASCII-armor定址来重新映射诸如libc之类的重要系统库以在地址上具有null(空)或0x00值(例如,针对32位地址,地址范围从0x00000000到0x01000000)而得以减轻。作为ASCII-armor定址的结果,当基于字符串函数来利用漏洞时更难使用libc函数地址,因为地址中的null将被解释为字符串终止符。然而,其他ROP攻击可以绕开ASCII-armor定址,例如return-to-PLT/GOT(过程链接表/全局偏移表)。
给定用以结合的足够数量的二进制代码(这可以是这样一种情况:由于各种函数和共享库可以被编译并链接到可执行文件140),漏洞利用攻击程序161可以只使用从可执行文件140可获得的函数和gadget来提供图灵(Turing)完备ROP序列发生器,从而通过将相应的ROP序列嵌入触发所识别的漏洞或漏洞利用的有缺陷的数据中,来允许任何任意攻击有效负载代码在目标计算机上被执行。
2.2地址空间布局随机化
由于函数和gadget的地址需要被求解以创建ROP序列,因此ROP攻击依赖于攻击者或攻击计算机获得关于存储器中代码和数据的布局的信息或知识。如果相同的可执行文件140照例用在计算机160A-160C上,则计算机160A-160C中的每一个计算机都易受相同ROP攻击。因此,操作系统经常支持地址空间布局随机化(ASLR)的减轻特征,当可执行文件140被加载至地址空间(通常为虚拟存储器)时该ASLR将代码和数据段的位置随机化。段可以包括可执行和共享的库、堆和栈。由于段被加载至计算机160A-160C中的每一个计算机上的不同虚拟存储器地址,因此ROP攻击具有小得多的机会来成功实现给定目标,尤其当使用大的虚拟地址空间(例如,64位操作系统)时。
因此,ASLR在一定程度是有效的,尤其当与不可执行的存储页进行结合时,但是其仍然具有一些缺点。首先,对于许多操作系统ASLR实现方式,可执行文件必须用ASLR的显式支持进行编译,而情况经常并非如此。例如,二进制文件在Linux操作系统中必须使用“-pie”交换机来被编译为位置独立可执行文件(PIE)。在Windows操作系统中,一些操作系统库相似地不用所使能的ASLR特征进行编译。此外,对于没有用ASLR支持进行编译的旧有程序和库,获得源代码以用ASLR支持来重新编译这些旧有程序和库可能是困难的或不可能的。因此,即使当ASLR是可用的并且被支持时,仍然很难确保给定的可执行文件或库被编译为使用ASLR。
其次,ASLR由于在运行时的地址重定位而招致性能损失。具体地,由于将寄存器状态保存并且重新存储到ASLR的免费寄存器可能招致额外的开销,因此在具有较少数量的可用寄存器的硬件架构中可能招致重大损失。因此,如以上所讨论的,许多操作系统可以使用没有用ASLR支持进行编译的二进制文件以提供最好的性能。
第三,即使ASLR被支持和使能,但ASLR不能避免地址泄漏。由于ASLR只将代码和数据段的开始位置作为整体随机化,因此如果只有特定段的一个函数地址被泄漏或者知晓,则特定段中的所有函数的地址均可以被容易地确定,因为特定段内的函数的顺序即使在ASLR被应用之后仍未改变。
例如,可变参数列表(variableargumentlist)可以被传递给接受格式参数的字符串函数(例如,libc库中的printf函数)。由于这些格式参数被传递的方式,因此如果printf函数的输入未经验证,则专门构建的列表可以被用来确定栈帧的指针和栈中的返回地址。通过已知这些指针的地址,代码段中所有函数的地址可以被容易地确定,并且栈中用以由所识别的漏洞或漏洞利用覆写返回地址的精确位置也是已知的。因此,ASLR的保护可以通过只利用一个地址泄漏而被完全绕过。
2.3二进制转换和随机化系统
在实施例中,二进制转换和随机化系统(BTRS)被配置为提供应用安全性。在实施例中,BTRS被配置用于将虚拟存储器中段的位置作为整体进行随机化,并且代码段内的执行单元的顺序也被随机化。因此,即使代码段的地址被泄漏,但不再保证函数的顺序相同,从而防止攻击者依赖于已知的代码和数据布局序列来实行成功的ROP攻击。在各种实施例中,BTRS可以被用来完全替换ASLR,或者BTRS可以结合ASLR使用。
为了准备可执行文件140以用于BTRS配置,相应的重定位元数据150使用控制流分析器166和/或编译器167而被生成。重定位元数据150的具体内容在下面第3.0节(功能概述)中被更详细地讨论。重定位元数据150可以被存储为数据库(例如,图1A中的元数据数据库163)的一部分。在其他实施例中,重定位元数据150可以被存储在存储器中、被存储在单独文件中,或者被添加到可执行文件140的不可加载部分。
BTRS应用164之后被调用以将可执行文件140内的执行单元的顺序随机化。BTRS应用164可以通过使用操作系统的运行时链接器(runtimelinker)或者图1A中所示的运行时加载器162而被调用。然而,替换实施例可以使用其他方法来调用BTRS应用164。例如,如果用户没有足够的操作系统权限来安装经修改的运行时加载器,则BTRS应用164可以被直接添加到可执行文件140以作为初始加载器。在可执行文件140在虚拟化的环境中运行的情况下,管理程序或虚拟机监视器可以调用BTRS应用164,这可以以对用户和虚拟化的顾客操作系统完全透明的方式进行。
在实施例中,BTRS应用164用来自由随机化函数165提供的随机化顺序的数据来扩增重定位元数据150,从而生成扩增的重定位元数据180。扩增的重定位元数据180然后被用来将可执行文件140转换成随机化的可执行文件170。尽管可执行文件140在图1A中基于按执行的方式被随机化,但替换实施例可以基于按机器、按用户、按客户或其他方式随机化。在完成对随机化的可执行文件170的转换之后,随机化的可执行文件170然后可以被加载至存储器以供执行。在一些实施例中,可以在可执行文件140被加载至存储器的同时应用随机化,并且因此单独的随机化的可执行文件170可以不被创建。
在实施例中,在图1A中的执行之前发生对随机化的可执行文件170的转换。因此,避免了在运行时间期间的地址转换开销。如之前所述,ASLR可能在运行时间期间(特别是在具有较少数量的寄存器的架构上)招致重大的性能损失。另一方面,在运行时间之前的一次地址转换招致最小的性能影响,从而提供具有零运行时间开销或低运行时间开销的高性能。在替换实施例中,可以在运行时间期间应用使用随机化函数165的地址转换。
因此,如以上所描述的,对于计算机160A处的可执行文件140的每一次执行,最近随机化的版本或随机化的可执行文件170可以被替代地生成并且在存储器中被执行,从而保护了计算机160A免受源于漏洞利用攻击程序161的ROP攻击。此外,尽管为了示出清楚的示例只有单个可执行文件140被示出,但计算机160A中所示的BTRS配置可以保护由操作系统运行的任意可执行文件。计算机160A中所示的BTRS配置可以以相似的方式被部署在其他计算机(例如,计算机160B和160C)上,从而也为那些计算机提供保护。
2.4双程BTRS随机化
尽管图1A中所描述的BTRS配置可以为计算机160A-160C提供高度的安全性,但由于相同的可执行文件140被用作每一个计算机随机化的基础,因此每一个计算机可能保持暴露于某些类型的攻击。例如,由于攻击者能够检查BTRS应用164的二进制副本,因此攻击者可以对随机化函数165进行反向工程并且尝试通过蛮力(bruteforce)使用目标计算机160A上的随机化的可执行文件170的每一个可能的随机组合。在BTRS应用164或随机化函数165作为开放资源可获得的情况下,那么攻击者甚至不需要使用任何反向工程。
蛮力攻击可以通过各种防御被减轻,例如通过检测起因于失败漏洞利用尝试以及拒绝运行可执行文件140的新的实例的大量程序崩溃。更难的攻击情境是当攻击者以一个特定的随机组合为目标生成漏洞利用并且广泛地分发该漏洞利用时。针对可执行文件140给定足够大的客户端安装基础,很可能至少一个客户端将匹配到相同的一个特定随机组合,从而允许漏洞利用成功运行。尽管这可以通过增加可能的随机组合的数量(例如,通过使用诸如基本控制块之类的较小的执行单元)来减轻,但是一旦客户端安装基础超过可能的随机组合的数量,则漏洞利用仍然可能成功。
在实施例中,多程方法被使用。图1B示出了针对应用安全性的示例双程二进制转换和随机化系统。图1B的系统102包括二进制分发服务器110、网络119、计算机客户端160A、计算机客户端160B和计算机客户端160C。二进制分发服务器110包括BTRS应用114、客户端数据库118、茎(stem)可执行文件120、重定位元数据130、分支可执行文件140A、分支可执行文件140B、分支可执行文件140C、客户端专用重定位元数据150A、客户端专用重定位元数据150B和客户端专用重定位元数据150C。BTRS应用114包括可以实现随机或伪随机处理的随机化函数115。计算机客户端160A包括分支可执行文件140A、客户端专用重定位元数据150A、运行时加载器162和叶可执行文件170A。运行时加载器162包括BTRS应用164以及客户端和执行专用重定位元数据180A。BTRS应用164包括随机化函数165。针对图1B,计算机客户端160A-160C可以分别与来自图1A的计算机160A-160C类似地实现。
二进制分发服务器110包括与图1A的计算机160A中所示的BTRS环境相似的BTRS环境,但是在图1B的系统中,BTRS应用114代替地创建针对具体客户端而被随机化的可执行文件。这些客户端专用可执行文件然后被分发到各计算机客户端,这些计算机客户端也具有按照执行(或者通过诸如按用户或按客户之类的一些其他基础)进一步将客户端专用可执行文件随机化的BTRS环境。可执行文件因此可以被认为是被组织成树状层级结构,其中茎可执行文件120表示与最初非随机化可执行的文件相对应的顶部根节点,分支可执行文件140A-140C表示按照计算机客户端随机化的中部节点,以及叶可执行文件170A-170C表示进一步按照执行而被随机化的底部节点。
客户端数据库118可以在二进制分发服务器110处被维护以追踪访问二进制分发服务器110的所有客户端,包括计算机客户端160A-160C。以这种方式,每一个计算机客户端可以被唯一标识并且保证唯一客户端密钥以用于随机化函数115。在客户端数据库未被维护的实施例中,可以使用生成唯一标识符的其他方法(例如使用客户端硬件序列号、证书、用户标识符、许可密钥、网络地址或其他数据的任意组合来获取标识符)。
BTRS应用114然后可以继续用来自由随机化函数115针对客户端数据库118中的每一个客户端所提供的随机化顺序的数据来扩增重定位元据130,从而生成客户端专用重定位元数据150A-150C。客户端专用重定位元数据150A-150C然后被用来将茎可执行文件120转换成分支可执行文件140A-140C。分支可执行文件140A-140C和客户端专用重定位元数据150A-150C然后可以通过网络119或者替换地通过诸如光学或闪存介质之类的物理介质而被分别分发到计算机客户端160A-160C。
由于随机化函数115在二进制分发服务器110处被离线实行,因此不受如随机化函数165的相同性能开销考虑,其可以被限制为更低开销的随机化(例如,改变执行单元的顺序和位置)。因此,更为计算密集的技术(例如,代码重生成、寄存器重分配和控制流基本块重排)可以被用于随机化函数115,从而大大增加每一个分支可执行文件可能的随机组合的数量。
在每一个计算机客户端160A-160C处,各BTRS环境可以与图1A中的计算机160A相似地被配置,从而提供具有低开销的、高性能的相同益处。例如,对于图1B中的计算机客户端160A,分支可执行文件140A可以与来自图1A的可执行文件140相对应,客户端专用重定位元数据150A可以与来自图1A的重定位元数据150相对应,叶可执行文件170A可以与来自图1A的经随机化的可执行文件170相对应,客户端和执行专用重定位元数据180A可以与来自图1A的经扩增的重定位元数据180相对应,以及其他元件可以与来自图1A的相同的类似编号的元件(包括运行时加载器162、BTRS应用164和随机化函数165)相对应。
由于每一个计算机客户端160A-160C开始于针对每一个客户端被唯-随机化的各自的分支可执行文件140A-140C,而不是如图1A中开始于相同的可执行文件140,因此没有两个客户端将共享相同的初始可执行文件。因此,当针对一个特定分支可执行文件开发的漏洞利用被应用于另一分支可执行文件时,其不会成功。
此外,由于BTRS应用114只被保持在二进制分发服务器110上并且通常不被分发到终端用户或客户端,因此随机化函数115通常不被暴露给攻击者。随机化函数115的具体处理因此对于二进制分发服务器110是唯一的,并且从攻击者的视角包括“黑匣子”。除非攻击者以某种方式获得来自客户端数据库118的BTRS用于114和客户端密钥的副本或者目标计算机的具体分支可执行文件的副本,否则攻击者不能开发起作用的漏洞利用。
此外,由于二进制分发在二进制分发服务器110处被集中化,因此可以进行对随机化函数115的定期或手动更新,其中可执行文件和元数据更新补丁被推送到每一个客户端计算机。因此,即使在攻击者以某种方式管理从而对随机化函数115进行反向工程的情况下,更新也可以用攻击者必须最近进行反向工程的新函数来替换随机化函数115。因此,在维护客户端应用的高运行时性能的同时,图1B中所示的双程BTRS环境可以提供对抗ROP攻击的鲁棒的安全性。
3.0功能概述
图2是示出用于提供针对应用安全性的二进制转换和随机化系统的方法的流程图。为了清楚地示出示例,图2可以参考图1A进行描述;然而,图2的处理可以被用在许多其他安排和上下文中。
3.1程序分析
在过程200的块202中,计算机160A接收重定位元数据150,针对可执行文件140内的多个执行单元中的每一个执行单元,重定位元数据150包括从可执行文件140到地址空间范围的映射。如之前所讨论的,重定位元数据150之前使用控制流分析器166和/或编译器167而生成。在编译器167和源代码168可用的情况下,那么重定位元数据150可以被直接从编译器167(例如,从编译器167的代码生成器和链路编辑器)获取。如果只有预编译的可执行文件140可用,则控制流分析器166可以对可执行文件140执行二进制分析以生成重定位元数据150。如之前所讨论的,重定位元数据150可以被维护并且被从各种位置(例如,元数据数据库163、可执行文件140的不可加载部分或单独文件)接收。
为了提供重定位元数据150内的数据的具体示例,图1C示出了由针对应用安全性的二进制转换和随机化系统扩增的示例重定位元数据。图1C的图104包括可执行文件140、重定位元数据150、随机化的可执行文件170和经扩增的重定位元数据180。可执行文件140包括执行单元142A、执行单元142B、执行单元142C和数据单元146A。执行单元142A包括目标代码144A、目标代码144B和目标代码144C。重定位元数据150包括头部151、二进制原子(binaryatom)152A、二进制原子152B、二进制原子152C、文件重定位156和程序控制流程图158。二进制原子152A包括原子重定位154A、原子重定位154B和原子重定位154C。经随机化的可执行文件170包括执行单元172A、执行单元172B、执行单元172C和数据单元176A。执行单元172A包括目标代码174A、目标代码174B和目标代码174C。经扩增的重定位元数据180包括头部181、二进制原子182A、二进制原子182B、二进制原子182C、文件重定位186和程序控制流程图188。二进制原子182A包括原子重定位184A、原子重定位184B原子重定位184C。对于图1C,相似标号的元件可以与图1A中的相同元件相对应。此外,尽管32位地址在图1C中被示出,但任意大小的地址空间可以被支持。
具体地转向重定位元数据150,头部151可以提供用于成功解析重定位元数据150的所有信息,包括重定位元数据150和头部151的大小、版本及文件标识符和校验和、二进制原子的数量、原子重定位以及文件重定位、虚拟地址偏移、文件偏移和当可执行文件140被加载至虚拟存储器时的镜像部署区域的大小以及其他数据。
作为初始步骤,程序控制流程图158可以被构建以标识可执行文件140的程序控制结构,从而允许可执行文件140的单元被标识以供重定位。尽管程序控制流程图158作为图1C中的重定位元数据150的一部分被示出,但其他实施例可以将程序控制流程图158分配至重定位元数据150以外。如果来自编译器167的数据是可用的,则程序控制流程图158可以直接对可执行文件140中的间接控制流转换指令的精确目标进行标识。
如果只有可执行文件140是可用的,则控制流分析器166可以使用可执行文件140的静态二进制分析来构建传统的程序控制流程图158,该程序控制流程图158更一般地来说只标识可执行文件140中的转换指令的目标。因此,在一些实施例中,精确的程序控制流程图158可以被从重定位元数据150忽略。尽管这可能在随机化的可执行文件镜像中产生可能导致存储器消耗增加的一些冗余数据,但其相比于用以进行完全动态二进制分析所需要的高处理开销仍然是优选的。
不管程序控制流程图158如何被构建,与可执行文件140的执行单元142A-142C相对应的二进制原子152A-152C然后可以使用来自程序控制流程图158的信息而被描述。如图1C所示,二进制原子152A指向执行单元142A,该执行单元142A被映射至从0x00010000到0x00010FFF的虚拟地址范围并且与main()函数相对应。二进制原子152B指向执行单元142B,该执行单元142B被映射至从0x00011000到0x00011FFF的虚拟地址范围并且与foo()函数相对应。二进制原子152C指向执行单元142C,该执行单元142C被映射至从0x00012000到0x00012FFF的虚拟地址范围并且与bar()函数相对应。
尽管图1C只示出了镜像数据的虚拟地址,但可执行文件140中所存储的镜像数据的文件偏移也被二进制原子和原子重定位标识。此外,文件重定位156可以建立文件偏移以及由此建立可执行文件140内的执行单元142A-142C的顺序。此外,尽管每一个执行单元142A-142C与图1C中的完整代码函数相对应,但执行单元还可以与诸如控制流基本块之类的更小的区块相对应。
一旦二进制原子被标识,则每一个二进制原子中的具体原子重定位也被标识。例如,如二进制原子152A中所示,存在三个可能需要重定位更新的代码位置,或分别指向目标代码144A-144C的原子重定位154A-154C。目标代码144A-144C可以包括在各虚拟地址0x00010200、0x00010400和0x00010800处、至foo()、foo()和bar()函数的分支指令或子例程调用。如果执行单元142A-142C的顺序被修改,则目标代码144A-144C中的子例程调用也将需要被修改以指向反映经改变的顺序的正确地址。
因此,每一个原子重定位154A-154C可以标识以下各项:1)到被修改的单元的原子中的偏移,或者对于各目标代码144A-144C处的分支指令,到执行单元142A中的偏移0x200、0x400和0x800;2)被参考以用于重定位的原子,或者位于各执行单元142B、142B和142C的foo()、foo()和bar()函数;3)对参考进行编码的方法(例如,绝对或相对的以及用以修改的位的数量);以及4)任意其他信息(例如,加数)。文件重定位156可以以相似的方式参考原子,除了修改未被包含在任何原子内部的单元的情况,其中1)偏移始终参考可执行文件140。
尽管图1C只示出了针对二进制原子152A的原子重定位的列表,但应该注意到,二进制原子152B-152C还可以包括针对相应的目标代码的原子重定位的列表。此外,尽管重定位元数据150中的二进制原子的列表被示为单级列表,但其他实施例可以将二进制原子嵌套到二进制原子内部以形成代码块的层级结构。这可以允许BTRS应用164通过在最适当的代码块粒度等级应用随机化来平衡性能和安全性。因此,尽管二进制原子152A只参考单个原子或执行单元142A中的目标代码,但其他实施例可以包括参考其他原子的原子重定位;例如,原子重定位154B代替地可以参考执行单元142C。
因此,控制流分析器166可以分析可执行文件140中的执行单元142A-142C中的每一个执行单元以针对每一个相应的二进制原子152A-152C来标识原子重定位,这可以从二进制分析或者从已经存在于可执行文件140中的重定位元数据提供。替换地,编译器167可以直接提供原子重定位。因此,重定位元数据150现在是完备的并且可以被存储在准备好进行接收的存储器或磁盘(例如,元数据数据库163)中。在图1A的情况下,操作系统可以请求可执行文件140的执行,其自动调用运行时加载器162。BTRS应用164然后可以通过查询元数据数据库163来寻找与可执行文件140相关联的元数据,从而接收重定位元数据150。
3.2元数据扩增
在过程200的块204中,针对执行单元142A-142C中的至少一个,BTRS应用164修改二进制原子152A-152C的相应映射以用随机定位的地址空间范围处的指令的重定位副本替换该地址空间范围内的指令。因此,块204应用随机化函数165来将二进制原子152A-152C中的至少一个的映射随机化。因此,重分配元数据150被更新并被写为扩增的重定位元数据180。
在图1C所示的示例中,所有三个二进制原子152A-152C的映射被随机化。由二进制原子152A对执行单元142A或main()至虚拟地址0x00010000至0x00010FFF中的映射被随机化成二进制原子182A的新的映射,该新的映射将重定位的执行单元172A映射至虚拟地址0x12011000至0x12011FFF。由二进制原子152B对执行单元142B或foo()至虚拟地址0x00011000至0x00011FFF的映射被随机化成二进制原子182B的新的映射,该新的映射将重定位的执行单元172B映射至虚拟地址0x12010000至0x12010FFF。由二进制原子152C对执行单元142C或bar()至虚拟地址0x00012000至0x00012FFF的映射被随机化成二进制原子182C的新的映射,该新的映射将重定位的执行单元172C映射至虚拟地址0x12012000至0x12012FFF。
因此,如二进制原子182A-182C所反映的,可见执行单元142A-142C的顺序被从1)main()、2)foo()和3)bar()改变成执行单元172A-172C的顺序中的1)foo()、2)main()和3)bar()。此外,0x00010000处的代码段“.text”的起始地址被重定位到0x12010000处的代码段“.new_text”。数据段或数据单元146A的位置被从0x10000000移动到数据单元176A中的0x00010000,这可以由文件重定位156和186反映。
如经扩增的重定位元数据180的文件重定位186中所反映的,虚拟存储器中的段的顺序可以与随机化的可执行文件170中所存储的段镜像的顺序互为镜像。尽管执行单元172A-172C可以直接临近彼此被存储在随机化的可执行文件170中,但二进制原子182A-182C可以将执行单元172A-172C映射至虚拟存储器中的页对齐的地址。然而,执行单元的起始地址可以被从页的开始偏移以提供额外的熵。
注意到,尽管执行单元172A-172C都被合并成经扩增的重定位元数据180的映射中的单个“.new_text”代码段,但替换实施例可以将执行单元置于单独的代码段中,上至每个执行单元一个代码段的最大分离。这些代码段中的每一个然后可以被置于虚拟地址空间中的随机页对齐的起始地址中,从而提供甚至更高水平的熵。空页还可以被插入代码段中以得到更多的熵。未使用的页区域可以用诸如INT3而不是NOP之类的单字节指令替换以防止NOPslide的使用。
为了额外的安全性,可能希望将参考到执行单元中的地址的位置的数据的位置随机化。这些数据的非详尽列表包括交换表、函数指针、VTBL、PLT和GOT。这种数据随机化可以帮助防止诸如return-to-PLT/GOT之类的攻击。一种方法是使用来自编译器167的信息或启发式方法(heuristics)来标识这种数据的位置,并且将数据重定位到虚拟存储器中随机定位的数据段,这可以在文件重定位186中反映。由于编译器167通常可以将参考位置的数据置于读和执行页中的代码中,因此这些数据段还可以被标记为只读段以防止代码执行。此外,由于这种分离为代码段和只读数据段将从代码段读取参考数据的任何需求移除,因此代码段可以被标记为只执行以禁止对代码段的读操作,从而提供对抗恶意的读尝试的额外安全性。由于未引入运行时间开销,因此这种方法提供了最高的性能。
在只有可执行文件140可用的情况下,单单依赖于启发式方法可能是不可取的。在这种情况下,随机化的可执行文件170中使用代码的数据参考来执行控制转换的代码可以用使用置于随机定位的数据段中的查找表的查找函数替换,该随机定位的数据段可以被标记为只读段以防止代码执行。尽管该替换方法添加了一些运行时间开销,但查找函数能够检测跳转到无效地址的攻击尝试,并且任意可能的查找表地址泄漏不能被用在直接控制转换的上下文中。因此,这种方法可以提供甚至更高的安全性。
3.3镜像随机化
在过程200的块206中,BTRS应用164使用经扩增的重定位元数据180从可执行文件140生成镜像或随机化的可执行文件170。由于大多数分析工作已经在块202和204中实行,因此块206是相对直接的重定位处理,从而固定控制流指令并且将数据写入由扩增的重定位元数据180所指示的适当的位置。例如,目标代码174A-174C将被修补以分支到针对0x12010000处的随机重定位的foo()函数和0x12012000处的随机重定位的bar()函数的正确地址。其他数据结构(例如,动态符号表、异常表和可选调试信息)还可以根据扩增的重定位元数据180而在随机化的可执行文件170中被更新。重定位元数据可以被写入随机化的可执行文件170中以指定将被用于代码和数据段的静态虚拟地址。
在过程200的块208中,BTRS应用164例如通过将控制回传到运行时加载器162以加载随机化的可执行文件170而不是可执行文件140,来使随机化的可执行文件170执行。在一些实施例中,如图1B中所示,执行可以被推迟直到发生BTRS随机化的第二次传递。
4.0实现方式机制—硬件概述
图3是示出了可以实现本公开的实施例的计算机系统300的框图。优选的实施例使用在诸如路由器设备之类的网络元件上运行的一个或多个计算机程序而被实现。因此,在本实施例中,计算机系统300是路由器。
计算机系统300包括总线302或者用于传输信息的其他通信机制以及与用于处理信息的与总线302耦合的处理器304。计算机系统300还包括耦合到总线302的用于存储将被处理器304执行的信息和指令的主存储器306(例如,随机存取存储器(RAM)、闪存或其他动态存储设备)。主存储器306还可以被用于在执行由处理器304执行的指令期间存储临时变量或其他中间信息。计算机系统300还包括耦合到总线302的用于存储针对处理器304的静态信息和指令的只读存储器(ROM)308或其他静态存储设备。用于存储信息和指令的存储设备310(例如,磁盘、闪存或光盘)被提供并且被耦合到总线302。
通信接口318可以被耦合到总线302以用于将信息和命令选择传输到处理器304。接口318是诸如RS-232或RS-422接口之类的传统串行接口。外部终端312或其他计算机系统连接到计算机系统300,并且使用接口314来向计算机系统300提供命令。在计算机系统300中运行的固件或软件提供终端接口或基于字符的命令接口,以使得外部命令可以被给予计算机系统。
交换系统316被耦合到总线302并且具有到一个或多个外部网络元件的输出接口319和输入接口314。外部网络元件可以包括被耦合到一个或多个主机324的本地网络322或者具有一个或多个服务器330的全局网络(例如,互联网328)。交换系统316根据预定的协议或众所周知的惯例来将到达输入接口314的信息流量交换到输出接口319。例如,交换系统316与处理器304合作可以确定到达输入接口314的数据的分组的目的地,并且使用输出接口319将其发送到正确的目的地。目的地可以包括主机324、服务器330、其他终端站或者本地网络322或互联网328中的其他路由和交换设备。
本公开与针对本文所描述的网络系统中的技术和功能的计算机系统300的使用有关。根据本公开的一个实施例,这些技术和功能由计算机系统300响应于执行主存储器306中所包括的一个或多个指令的一个或多个序列的处理器304而被提供。这些指令可以被从另一计算机可读介质(例如,存储设备310)读入主存储器306。主存储器306中所包括的指令的序列的执行使得处理器304执行本文所描述的处理步骤。多处理调度中的一个或多个处理器还可以被用来执行主存储器306中所包括的指令的序列。在替换实施例中,硬连线的电路可以被用来替换或结合实现本公开的软件指令。因此,本公开的实施例不受限于硬件电路和软件的任意具体组合。
本文所使用的术语“计算机可读介质”指代参与向处理器304提供用于执行的指令的任意介质。这种介质可以采取多种形式,包括但不限于非易失性介质、易失性介质和传输介质。非易失性介质包括例如诸如存储设备310之类的光盘或磁盘。易失性介质包括诸如主存储器306之类的动态存储器。传输介质包括同轴电缆、铜线和光纤,包括含有总线302的电线。传输介质还可以采取声波或光波的形式,例如在无线电波和红外数据传输期间所生成的那些声波或光波。
计算机可读介质的常见形式包括例如软盘、柔性盘、硬盘、磁带、或任意其他磁性介质、CD-ROM、任意其他光学介质、打孔卡、纸带、具有孔图案的任意其他物理介质、RAM、PROM、以及EPROM、FLASH-EPROM、任意其他存储器芯片或磁带盒、下文中所描述的载波或者计算机可以根据其进行读取的任意其他介质。
各种形式的计算机可读介质可以涉及将用于执行的一个或多个指令中的一个或多个序列载送到处理器304。例如,指令最初可能被载送至远程计算机的磁盘。远程计算机可以将指令加载至其动态存储器中并且使用调制解调器通过电话线来发送指令。计算机系统300的本地调制解调器可以接收电话线上的数据,并且使用红外线发射器来将数据转换成红外线信号。被耦合到总线302的红外线检测器可以接收红外线信号中所载送的数据并且将数据置于总线302上。处理器304从其获取指令并执行指令的总线302将数据载送到主存储器306。由主存储器306接收的指令可以可选地在由处理器304执行之前或之后被存储在存储设备310上。
通信接口318还提供耦合到被连接到本地网络322的网络链路320的双向数据通信。例如,通信接口318可以是用以提供到相应类型的电话线的数据通信连接的集成服务数字网络(ISDN)卡或调制解调器。如另一示例,通信接口318可以是用以提供到兼容局域网(LAN)的数据通信连接的LAN。无线链路也可以被实现。在任意这种实现方式中,通信接口318对载送表示各种类型信息的数字数据流的电的、电磁的或光学信号进行发送和接收。
网络链路320通常通过一个或多个网络来提供到其他数据设备的数据通信。例如,网络链路320可以通过本地网络322来提供到主机计算机324或者向由互联网服务提供商(ISP)326操作的数据装备的连接。ISP326进而通过世界范围的分组数据通信网络(现在通常被称为“互联网”328)来提供数据通信服务。本地网络322和互联网328都使用载送数字数据流的电的、电磁的或光学信号。将数字数据载送到计算机系统300以及从计算机系统300载送数字数据的通过各种网络的信号和在网络链路320上的以及通过通信接口318的信号是传输信息的载波的示例形式。
计算机系统300可以通过(一个或多个)网络、网络链路320和通信接口318来发送消息和接收数据,包括程序代码。在互联网示例中,服务器330可以通过互联网328、ISP326、本地网络322和通信接口318来发送用于应用程序的被请求的代码。根据本公开的实施例,一种所下载的应用提供本文所描述的技术和功能。
当所接收的代码被接收和/或被存储在存储设备310或者用于稍后执行的其他非易失性存储设备中时可以由处理器304执行。以这种方式,计算机系统300可以以载波形式获得应用代码。
5.0延伸和替换
在上述说明中,本公开已经参考其具体实施例被描述。然而,显而易见的是各种修改和改变可以在不脱离本公开的更宽泛的精神和范围的情况下进行。说明书和附图相应地被认为是以示意意义而非限制性意义。
任意适当的协议和机制可以适应于实现本公开。所提出的方法步骤可以以任意适当的顺序被实行,并且来自示例和实施例的方面视情况被并列或交替地描述。
6.0附加公开
在实施例中,方法包括:接收重定位元数据,针对可执行文件中的多个执行单元中的每一个执行单元,重定位元数据包括从可执行文件到地址空间范围的映射;针对多个执行单元中的至少一个,修改映射以用随机定位的地址空间范围处的指令的重定位副本替换地址空间范围内的指令;使用重定位元数据来从可执行文件生成镜像;使得镜像执行;其中方法由一个或多个计算设备执行。
在实施例中,一个或多个计算设备包括分发服务器,并且镜像的执行在客户端计算设备上。
在实施例中,多个执行单元是代码函数或基本控制块。
在实施例中,所进行的修改还包括修改多个执行单元的顺序。
在实施例中,所进行的修改还包括针对多个执行单元中的至少一个执行单元的代码重生成或寄存器重分配。
在实施例中,所进行的修改还包括将多个执行单元映射到多个代码段。
在实施例中,随机定位的地址空间范围基于使用随机化函数,该随机化函数对拥有镜像的用户或执行镜像的机器中的一个是唯一的。
在实施例中,可执行文件包括参考多个执行单元中的地址的数据。
在实施例中,针对参考多个执行单元中的地址的数据,重定位元数据还包括映射至数据地址空间范围的数据,并且还包括在所进行的生成之前:将数据地址空间范围修改成随机定位的地址空间范围。
在实施例中,镜像包括被置于随机定位的地址空间范围的查找表,其中查找表被用来通过使用查找函数来查找多个执行单元中的地址。
在实施例中,参考多个执行单元中的地址的数据包括以下各项中的一个:过程链接表(PLT)、全局偏移表(GOT)、交换表、函数指针或虚拟方法表(VTBL)。
在实施例中,方法由操作系统的运行时加载器响应于由该操作系统执行可执行文件的请求而被执行。
在实施例中,方法由管理程序响应于由虚拟化的操作系统执行可执行文件的请求而被执行。
在实施例中,指令的重定位副本包括参考数据地址空间范围的代码段,并且其中代码段被标记为只执行。

Claims (15)

1.一种数据处理方法,包括:
接收重定位元数据,针对可执行文件中的多个执行单元中的每一个执行单元,所述重定位元数据包括从所述可执行文件到地址空间范围的映射;
针对所述多个执行单元中的至少一个,修改所述映射以用随机定位的地址空间范围处的指令的重定位副本替换所述地址空间范围内的指令;
使用所述重定位元数据来从所述可执行文件生成镜像;
使得所述镜像执行;
其中,所述方法由一个或多个计算设备执行。
2.如权利要求1所述的数据处理方法,其中,所述一个或多个计算设备包括分发服务器,并且其中,所述镜像的执行在客户端计算设备上。
3.如权利要求1所述的数据处理方法,其中,所述多个执行单元是代码函数或基本控制块。
4.如权利要求1所述的数据处理方法,其中,所述修改还包括修改所述多个执行单元的顺序。
5.如权利要求1所述的数据处理方法,其中,所述修改还包括针对所述多个执行单元的至少一个的代码重生成或寄存器重分配。
6.如权利要求1所述的数据处理方法,其中,所述修改还包括将所述多个执行单元映射到多个代码段。
7.如权利要求1所述的数据处理方法,其中,所述随机定位的地址空间范围基于使用随机化函数,所述随机化函数对拥有所述镜像的用户或者执行所述镜像的机器中的一个是唯一的。
8.如权利要求1所述的数据处理方法,其中,所述可执行文件包括参考所述多个执行单元中的地址的数据。
9.如权利要求8所述的数据处理方法,其中,针对参考所述多个执行单元中的地址的数据,所述重定位元数据还包括映射至数据地址空间范围的数据,并且还包括在所述生成之前:将所述数据地址空间范围修改成随机定位的地址空间范围。
10.如权利要求8所述的数据处理方法,其中,所述镜像包括被置于随机定位的地址空间范围的查找表,其中,所述查找表被用来通过使用查找函数来查找所述多个执行单元中的地址。
11.如权利要求8所述的数据处理方法,其中,参考所述多个执行单元中的地址的数据包括以下各项中的一个:过程链接表(PLT)、全局偏移表(GOT)、交换表、函数指针或虚拟方法表(VTBL)。
12.如权利要求1所述的数据处理方法,其中,所述方法由操作系统的运行时加载器响应于由所述操作系统执行所述可执行文件的请求而被执行,或者其中,所述方法由管理程序响应于由虚拟化的操作系统执行所述可执行文件的请求而被执行。
13.如权利要求9所述的数据处理方法,其中,所述指令的重定位副本包括参考所述数据地址空间范围的代码段,并且其中,所述代码段被标记为只执行。
14.一种包括一个或多个计算设备的装置,所述装置被配置为执行如权利要求1-13中的任意权利要求所记载的方法。
15.一种包括指令的计算机可读存储介质,当所述指令被一个或多个处理器执行时,使得如权利要求1-13中的任意权利要求所记载的方法执行。
CN201480056057.1A 2013-08-12 2014-08-07 针对应用安全性的二进制转换和随机化系统 Active CN105612525B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/964,917 2013-08-12
US13/964,917 US9147070B2 (en) 2013-08-12 2013-08-12 Binary translation and randomization system for application security
PCT/US2014/050073 WO2015023502A1 (en) 2013-08-12 2014-08-07 Binary translation and randomization system for application security

Publications (2)

Publication Number Publication Date
CN105612525A true CN105612525A (zh) 2016-05-25
CN105612525B CN105612525B (zh) 2021-09-24

Family

ID=51483656

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480056057.1A Active CN105612525B (zh) 2013-08-12 2014-08-07 针对应用安全性的二进制转换和随机化系统

Country Status (4)

Country Link
US (1) US9147070B2 (zh)
EP (1) EP3033706B1 (zh)
CN (1) CN105612525B (zh)
WO (1) WO2015023502A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107688474A (zh) * 2016-08-04 2018-02-13 阿里巴巴集团控股有限公司 启动方法、生成内核镜像的方法及装置
CN109891384A (zh) * 2016-11-01 2019-06-14 三菱电机株式会社 状态图执行装置
CN110430209A (zh) * 2019-08-13 2019-11-08 中科天御(苏州)科技有限公司 一种基于动态多样化的工控系统安全防御方法及装置
CN113412483A (zh) * 2018-12-07 2021-09-17 皇家飞利浦有限公司 具有针对地址探测的增加的阻力的计算设备

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160321454A1 (en) * 2014-01-13 2016-11-03 Purdue Research Foundation Binary component extraction and embedding
US10311228B2 (en) * 2014-09-30 2019-06-04 Apple Inc. Using a fine-grained address space layout randomization to mitigate potential security exploits
EP3281104B1 (en) * 2015-04-07 2024-01-24 Runsafe Security, Inc. System and method of obfuscation through binary and memory diversity
CN106155660B (zh) * 2015-04-14 2019-06-25 龙芯中科技术有限公司 随机测试程序生成方法及装置
US10868665B1 (en) * 2015-05-18 2020-12-15 Amazon Technologies, Inc. Mitigating timing side-channel attacks by obscuring accesses to sensitive data
US10311229B1 (en) 2015-05-18 2019-06-04 Amazon Technologies, Inc. Mitigating timing side-channel attacks by obscuring alternatives in code
US10365937B2 (en) * 2015-07-24 2019-07-30 Red Hat Israel, Ltd. Entropy increase by executable loader
CN105095762B (zh) * 2015-07-31 2017-10-10 中国人民解放军信息工程大学 基于地址随机和段隔离的全局偏移表保护方法
US9576138B1 (en) 2015-09-30 2017-02-21 International Business Machines Corporation Mitigating ROP attacks
US10762199B2 (en) * 2015-12-11 2020-09-01 International Business Machines Corporation Compiler assisted protection against arbitrary code execution
US10152592B2 (en) 2015-12-11 2018-12-11 International Business Machines Corporation Compiler assisted protection against arbitrary code execution
US10007787B2 (en) * 2015-12-28 2018-06-26 International Business Machines Corporation Runtime return-oriented programming detection
US10108798B1 (en) 2016-01-04 2018-10-23 Smart Information Flow Technologies LLC Methods and systems for defending against cyber-attacks
CN105787368A (zh) * 2016-02-26 2016-07-20 武汉大学 一种基于函数置乱的rop防御方法与装置
US10419224B2 (en) * 2016-06-14 2019-09-17 International Business Machines Corporation Preventing monoculture in application distribution
US10268601B2 (en) 2016-06-17 2019-04-23 Massachusetts Institute Of Technology Timely randomized memory protection
US20190163899A1 (en) * 2016-07-29 2019-05-30 Hewlett-Packard Development Company, L.P. Load time anti-propagationprotection for a machine ...
US10310991B2 (en) * 2016-08-11 2019-06-04 Massachusetts Institute Of Technology Timely address space randomization
US10223527B2 (en) 2016-09-20 2019-03-05 International Business Machines Corporation Protecting computer code against ROP attacks
US10423792B2 (en) 2016-09-23 2019-09-24 Red Hat, Inc. Identifying exploitable code sequences
US10417412B2 (en) * 2017-02-15 2019-09-17 International Business Machines Corporation Protecting computer code against ROP attacks
US10885184B1 (en) * 2017-03-16 2021-01-05 Mcafee, Llc Rearranging executables in memory to prevent rop attacks
US10719610B2 (en) * 2017-08-14 2020-07-21 Blackberry Limited Generating security manifests for software components using binary static analysis
US20190114401A1 (en) * 2017-10-12 2019-04-18 Qualcomm Incorporated On device structure layout randomization for binary code to enhance security through increased entropy
GB2568527B (en) * 2017-11-20 2020-04-15 Trustonic Ltd Address layout varying process
US10860738B2 (en) * 2018-01-30 2020-12-08 Hewlett Packard Enterprise Development Lp Augmented metadata and signatures for objects in object stores
US11809871B2 (en) * 2018-09-17 2023-11-07 Raytheon Company Dynamic fragmented address space layout randomization
EP3660715A1 (en) * 2018-11-30 2020-06-03 Conax AS Protecting sensitive data in a software program
US11500969B2 (en) * 2020-01-03 2022-11-15 Microsoft Technology Licensing, Llc Protecting commercial off-the-shelf program binaries from piracy using hardware enclaves
WO2022044021A1 (en) * 2020-08-31 2022-03-03 Seraphic Algorithms Ltd. Exploit prevention based on generation of random chaotic execution context
CN112000484A (zh) * 2020-09-01 2020-11-27 北京元心科技有限公司 栈帧地址随机化方法及相关设备
US11693760B2 (en) * 2020-12-21 2023-07-04 RunSafe Security, Inc. System and methods for live debugging of transformed binaries
WO2022140347A1 (en) * 2020-12-21 2022-06-30 RunSafe Security, Inc. System and methods for post-mortem debugging of transformed binaries
US11599625B2 (en) * 2021-01-28 2023-03-07 Qualcomm Incorporated Techniques for instruction perturbation for improved device security

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1497448A (zh) * 2002-09-30 2004-05-19 �Ҵ���˾ 在操作系统内核环境中高速缓存应用数据的系统和方法
US20080016314A1 (en) * 2006-07-12 2008-01-17 Lixin Li Diversity-based security system and method
CN101755255A (zh) * 2007-06-28 2010-06-23 诺基亚公司 文件访问管理系统
CN102187317A (zh) * 2008-10-30 2011-09-14 国际商业机器公司 闪速拷贝管理

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7631292B2 (en) * 2003-11-05 2009-12-08 Microsoft Corporation Code individualism and execution protection
US7546430B1 (en) * 2005-08-15 2009-06-09 Wehnus, Llc Method of address space layout randomization for windows operating systems
US20120260106A1 (en) 2011-04-07 2012-10-11 Apple Inc. System and method for binary layout randomization
US8694738B2 (en) * 2011-10-11 2014-04-08 Mcafee, Inc. System and method for critical address space protection in a hypervisor environment
WO2013130548A2 (en) * 2012-02-27 2013-09-06 University Of Virginia Patent Foundation Method of instruction location randomization (ilr) and related system
US9694276B2 (en) * 2012-06-29 2017-07-04 Sony Interactive Entertainment Inc. Pre-loading translated code in cloud based emulated applications
US9135435B2 (en) * 2013-02-13 2015-09-15 Intel Corporation Binary translator driven program state relocation
US9015834B2 (en) * 2013-03-15 2015-04-21 Cisco Technology, Inc. Mitigating just-in-time spraying attacks in a network environment

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1497448A (zh) * 2002-09-30 2004-05-19 �Ҵ���˾ 在操作系统内核环境中高速缓存应用数据的系统和方法
US20080016314A1 (en) * 2006-07-12 2008-01-17 Lixin Li Diversity-based security system and method
CN101755255A (zh) * 2007-06-28 2010-06-23 诺基亚公司 文件访问管理系统
CN102187317A (zh) * 2008-10-30 2011-09-14 国际商业机器公司 闪速拷贝管理

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
CHONGKYUNG KIL ET AL: ""Address Space Layout Permutation(ASLP):Towards Fine-Grained Randomization of Commodity Software"", 《IEEE》 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107688474A (zh) * 2016-08-04 2018-02-13 阿里巴巴集团控股有限公司 启动方法、生成内核镜像的方法及装置
CN107688474B (zh) * 2016-08-04 2021-05-07 斑马智行网络(香港)有限公司 启动方法、生成内核镜像的方法及装置
CN109891384A (zh) * 2016-11-01 2019-06-14 三菱电机株式会社 状态图执行装置
CN109891384B (zh) * 2016-11-01 2022-04-15 三菱电机株式会社 状态图执行装置
CN113412483A (zh) * 2018-12-07 2021-09-17 皇家飞利浦有限公司 具有针对地址探测的增加的阻力的计算设备
CN113412483B (zh) * 2018-12-07 2024-05-14 皇家飞利浦有限公司 具有针对地址探测的增加的阻力的计算设备
CN110430209A (zh) * 2019-08-13 2019-11-08 中科天御(苏州)科技有限公司 一种基于动态多样化的工控系统安全防御方法及装置
CN110430209B (zh) * 2019-08-13 2021-12-14 中科天御(苏州)科技有限公司 一种基于动态多样化的工控系统安全防御方法及装置

Also Published As

Publication number Publication date
CN105612525B (zh) 2021-09-24
US9147070B2 (en) 2015-09-29
EP3033706B1 (en) 2019-10-09
US20150047049A1 (en) 2015-02-12
EP3033706A1 (en) 2016-06-22
WO2015023502A1 (en) 2015-02-19

Similar Documents

Publication Publication Date Title
CN105612525A (zh) 针对应用安全性的二进制转换和随机化系统
US11816453B1 (en) Smart contract blockchain abstraction API
CN102165431B (zh) 使用仿真对物理硬件的运行时替换的方法和系统
CN111095198B (zh) 用于数据处理的系统和方法
CN102934114B (zh) 用于文件系统的检查点
EP2557498B1 (en) Updating method and computer system for hypervisor components
JP2021534486A (ja) アップグレード可能な証券トークン
CN100462921C (zh) 用于简档形成接口辅助类加载的方法和系统
JP2019506666A (ja) ハードウェア管理スタック・アーキテクチャにおける呼び出し元により保護されるスタック・リターンアドレス
CN105528179B (zh) 存储器位置之间控制的转移的系统和方法
CN107506221A (zh) 应用程序升级方法、装置及设备
CN102939588A (zh) 不依赖于管理程序平台的数据中心管理的方法和装置
CN105631337A (zh) 控制机器代码的本机图像访问操作系统资源的系统及方法
CN101390053A (zh) 自适应编译的代码
US10120745B2 (en) Providing instructions to protect stack return addresses in a hardware managed stack architecture
CN103562915A (zh) 高速缓冲存储器结构和方法
CN101853269B (zh) 分布数据更新的一致性处理方法
US9336361B2 (en) Feature license-related repair/replacement processes and credit handling
US11347523B2 (en) Updated shared library reloading without stopping the execution of an application
US10782959B1 (en) Storing a file list for a public file repository as a file to avoid rate limits on file list requests
US11200253B2 (en) Providing instant and distributed access to a source blob via copy-on-read blobs and link blobs
US10936290B2 (en) Compile-time folding of assumed constant values
WO2008043647A2 (en) Defending smart cards against attacks by redundant processing
CN109144967A (zh) 一种用于改进分布式计算系统的维护系统及方法
US20240152371A1 (en) Dynamic re-execution of parts of a containerized application pipeline

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant