受保护操作处理制造技术

技术编号:30149495 阅读:21 留言:0更新日期:2021-09-25 14:56
一种模糊计算机代码的计算机实施的方法,包括:接收(1201)原始计算机程序,其包括具有计算机指令的多个代码块,所述原始计算机程序可在输入空间内的输入数据上操作,所述原始计算机程序能用于在接收所述输入数据时跟随通过所述多个代码块的执行路径,其中,所述输入空间根据分割被分割成至少一个分段,每个分段包括所述输入空间的子集,其包含对应于相同执行路径的输入。多个经更新的代码块被包括(1302)在经更新的计算机程序中。选择代码在所述经更新的计算机程序的执行期间能用于1303根据所述输入数据来选择多个经更新的代码块中的经更新的代码块;所述选择代码被包括(1304)在所述经更新的计算机程序中。(1304)在所述经更新的计算机程序中。(1304)在所述经更新的计算机程序中。

【技术实现步骤摘要】
【国外来华专利技术】受保护操作处理


[0001]本专利技术涉及防止程序被分析用于发现漏洞。

技术介绍

[0002]软件可以包括影响系统(诸如医疗保健系统)的安全和安全性的故障和漏洞。存在甚至以自动方式找到故障和发现漏洞的解决方案。模糊是找到程序中的故障的技术。其涉及利用可能触发故障的任意输入馈送程序。这样的模糊可以利用程序的知识或者有效程序输入的语法。已知的模糊器是AFL(American Fuzzy Lop)。在AFL中,要模糊的代码首先插装,使得AFL稍后可以跟踪覆盖并且因此引导模糊过程。Angr是还允许找到代码中的故障的符号执行引擎。钻孔机是Angr中的AFL的混合方法,其中,Angr被用于穿过困难块并且一旦这完成,AFL被用于实现大的代码覆盖。尽管模糊器可以被用于调试程序并且找到和校正错误,但是恶意用户可以使用找到的任何故障来损害程序。
[0003]US8918768公开了接收具有代码块的第一源代码以更新具有代码块的多个副本的第一源代码来防止相关攻击。代码块可以基于第一源代码执行一个或多个操作以用于执行。操作可以经由代码块的副本中的随机副本执行。基于经更新的第一源代码的第二源代码可以被生成以由处理器执行以产生与第一源代码相同的结果。
[0004]US8918768还公开了通过添加选择代码和两个或更多个经更新的代码块更新第一源代码,该更新导致经更新的第一源代码具有两个或更多个执行路径,每个执行路径等效于特定执行路径,选择代码包括选择变量,选择变量具有多个选择值之一,每个选择值表示执行路径之一,选择代码随机地选择执行路径之一,每个执行路径包括经更新的代码块中的单独一个,每个经更新的代码块具有代码块的副本和中性代码,中性代码引用选择值和选择变量之一,中性代码使用一个选择值和选择变量对变量执行操作以模糊经更新的第一源代码;并且基于经更新的第一源代码来生成第二源代码,其中,从第一源代码编译的第一可执行代码包括从特定可执行路径编译的指令,其中,从第二源代码编译的第二可执行代码包括从两个或更多个执行路径编译的指令,并且其中,第一可执行代码和第二可执行代码当由处理器执行时产生相同结果。
[0005]EP 1 410 140 B1公开了用于特定功能的多个执行路径。针对该模糊,多个执行路径中的每个实现相同结果,并且任何路径可以任选地在软件的执行期间随机选择。某些执行路径可以任选地并且优选地绝不到达。因此,任选地并且更优选地,“随机”选择实际上是加权的,以便某些路径更频繁地选择。该加权还模糊软件的功能并且通过增加猜测哪些分支绝不使用(“死亡代码”)的困难使分析更困难。
[0006]然而,将意识到,这些解决方案未提供针对由人类或特别地由自动化分析软件造成的外部分析的足够的保护。

技术实现思路

[0007]具有一种模糊计算机代码的经改进的方法将是有利的。
[0008]为了更好地解决该问题,提供了一种模糊计算机代码的计算机实施的方法,所述方法包括:
[0009]接收原始计算机程序,所述原始计算机程序包括具有计算机指令的多个代码块,所述原始计算机程序能够在输入空间内的输入数据上操作,所述原始计算机程序能用于当接收到所述输入数据时跟随通过所述多个代码块的执行路径,其中,所述输入空间是根据分割被分割成至少一个分段的,每个分段包括所述输入空间的子集,所述子集包含对应于相同执行路径的输入;并且
[0010]基于所述原始计算机程序来生成经更新的计算机程序,其中,生成所述经更新的计算机程序包括:
[0011]将多个经更新的代码块包括在所述经更新的计算机程序中;
[0012]生成选择代码,所述选择代码能用于在所述经更新的计算机程序的执行期间根据所述输入数据来选择所述多个经更新的代码块中的经更新的代码块;并且
[0013]将所述选择代码连同转换代码一起包括在所述经更新的计算机程序中,所述转换代码涉及执行点到由所述选择代码选择的所述经更新的块的转换,
[0014]其中,所述选择代码被配置为使得所述经更新的计算机程序根据经更新的分割对所述输入空间进行分割,所述经更新的分割与所述原始计算机程序的所述分割不同,并且
[0015]其中,所述原始计算机程序和所述经更新的计算机程序能用于至少生成相同结果,所述相同结果取决于所述输入数据。
[0016]通过包括通过根据程序的输入选择下一块使得所述输入空间的分割与所述原始程序不同的选择代码,分析器将发现找到所述计算机程序中的漏洞是更困难的。此外,所述输入空间可以通过根据期望添加尽可能多的这样的选择代码以及转换代码以任意复杂方式来分割。因此,所述程序结构的复杂性增加,使得找到关于所述程序的结构的完整信息更困难、更耗费时间或更内存密集。取决于分割的复杂性,对于分析器而言测试所述经更新的计算机程序的所有块和转换可能是困难的。此外,就程序结构已经被分析而言,解释所述程序结构可能变得更困难。此外,检测具有其中的故障或漏洞的代码块可能是更困难的。
[0017]由所述选择代码选择的经更新的代码块可以完全由所述输入数据确定。在这种情况下,分割表现为对于分析器是高度相关的。
[0018]所述方法可以包括:通过在所述经更新的计算机程序中包括调度器并且由经更新的转换代码替换多个转换代码来使所述计算机程序扁平化,所述多个转换代码涉及从第一代码块到第二代码块的转换,所述经更新的转换代码涉及从所述第一代码块到所述调度器的转换和从所述调度器到所述第二代码块的转换。所述调度器能够使执行路径的分析更困难。
[0019]所述调度器可以包括多个第一调度器代码块,其中,所述第一代码块包括所述选择代码,所述选择代码能用于在所述经更新的计算机程序的执行期间根据所述经更新的分割和涉及从所述第一代码块到所述第一调度器代码块的所述转换的所述经更新的转换代码根据所述输入数据在所述多个第一调度器代码块中间选择第一调度器代码块。这是将更多块添加到所述程序并且引入关于执行路径的复杂分割同时仍然考虑所述原始计算机程序的结构的适合的方式。
[0020]所述调度器可以包括多个第二调度器代码块,并且所述第一调度器代码块可以包
括所述选择代码,所述选择代码能用于在所述经更新的计算机程序的执行期间根据所述经更新的分割和涉及从所述第一调度器代码块到所述第二调度器块的转换的所述经更新的转换代码根据所述输入数据在所述多个第二调度器代码块中间选择第二调度器代码块。两层块允许由所述调度器执行的调度过程包括到许多块之一的两个转换,这向所述分割添加另外的复杂性。
[0021]第一调度器块或第二调度器块可以包括涉及从其到所述第二代码块的转换的转换代码。因此,所述原始程序的代码在执行(一个或多个)相关调度器代码块之后恢复。
[0022]将多个经更新的代码块包括在所述经更新的计算机程序中的步骤可以包括通过以下操作根据所述原始程序的第一代码块来生成第一经更新的代码块:由根据模式变量的值引用所述第一变量或第二变量中的任一个变量的代码替换引用第一变量的所述第一代码块的代码,使得在所述模式变量的值指示本文档来自技高网
...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】1.一种模糊计算机代码的计算机实施的方法,所述方法包括:接收(1201)原始计算机程序,所述原始计算机程序包括具有计算机指令的多个代码块,所述原始计算机程序能够在输入空间内的输入数据上操作,所述原始计算机程序能用于当接收到所述输入数据时跟随通过所述多个代码块的执行路径,其中,所述输入空间是根据分割被分割成至少一个分段的,每个分段包括所述输入空间的子集,所述子集包含对应于相同执行路径的输入;并且基于所述原始计算机程序来生成(1202)经更新的计算机程序,其中,生成所述经更新的计算机程序包括:将多个经更新的代码块包括(1302)在所述经更新的计算机程序中;生成(1303)选择代码,所述选择代码能用于在所述经更新的计算机程序的执行期间根据所述输入数据来选择所述多个经更新的代码块中的经更新的代码块;并且将所述选择代码连同转换代码一起包括(1304)在所述经更新的计算机程序中,所述转换代码涉及执行点到由所述选择代码选择的所述经更新的块的转换,其中,所述选择代码被配置为使得所述经更新的计算机程序根据经更新的分割对所述输入空间进行分割,所述经更新的分割与所述原始计算机程序的所述分割不同,并且其中,所述原始计算机程序和所述经更新的计算机程序能用于至少生成相同结果,所述相同结果取决于所述输入数据。2.根据权利要求1所述的方法,还包括:通过在所述经更新的计算机程序中包括调度器(701)并且用经更新的转换代码替换多个转换代码来使所述计算机程序扁平化(1301),所述多个转换代码涉及从第一代码块到第二代码块的转换,所述经更新的转换代码涉及从所述第一代码块到所述调度器的转换和从所述调度器到所述第二代码块的转换。3.根据权利要求2所述的方法,其中,所述调度器(801、1001)包括多个第一调度器代码块(802、1002),其中,所述第一代码块包括所述选择代码,所述选择代码能用于在所述经更新的计算机程序的执行期间根据所述经更新的分割和涉及从所述第一代码块到所述第一调度器代码块的所述转换的所述经更新的转换代码根据所述输入数据在所述多个第一调度器代码块中间选择第一调度器代码块。4.根据权利要求3所述的方法,其中,所述调度器(1001)还包括多个第二调度器代码块(1003),并且其中,所述第一调度器代码块(1002)包括所述选择代码,所述选择代码能用于在所述经更新的计算机程序的执行期间根据所述经更新的分割和涉及从所述第一调度器代码块到所述第二调度器块的转换的所述经更新的转换代码根据所述输入数据在所述多个第二调度器代码块(1003)中间选择第二调度器代码块。5.根据权利要求3或4所述的方法,其中,所述第一调度器块或所述第二调度器代码块包括涉及从其到所述第二代码块的转换的转换代码。6.根据权利要求1、3或4所述的方法,其中,将多个经更新的代码块包括在所述经更新的计算机程序(1302)中包括通过以下操作根据所述原始程序的第一代码块来生成第一经更新的代码块:
用根据模式变量的值引用所述第一变量或第二变量中的任一个变量的代码替换引用第一变量的所述第一代码块(101)的代码,使得在所述模式变量的值指示正常模式的情况下,在所述第一经更新的代码块(501)的出口上,所述第一变量的值与所述原始程序的所述第一代码块(101)的出口上的所述第一变量的值相同,并且在所述模式变量的值指示中性模式的情况下,所述经更新的代码块(501)的所述指令不影响所述第一变量。7.根据权利要求6所述的方法,其中,在所述模式变量的值指示中性模式的情况下,所述经更新的代码块(501)的所述指令改变所述第二变量。8.根据权利要求6所述的方法,其中,涉及执行点到由所述选择代码选择的所述第一经更新的代码块(501)的转换的所述转换代码被配置为利用具有指示所述中性模式...

【专利技术属性】
技术研发人员:P
申请(专利权)人:皇家飞利浦有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1