技术新讯 > 计算推算,计数设备的制造及其应用技术 > 基于静态分析的跨链桥智能合约漏洞检测方法及装置  >  正文

基于静态分析的跨链桥智能合约漏洞检测方法及装置

  • 国知局
  • 2024-07-31 23:22:16

本技术涉及智能合约漏洞检测,特别涉及一种基于静态分析的跨链桥智能合约漏洞检测方法及装置。

背景技术:

1、跨链桥通过链上智能合约和链下程序将两个异构区块链互连起来,以促进两个异构区块链之间的资产交互操作,其主要目的是将源区块链资产转移到目的地区块链。从本质上讲,智能合约是在区块链上运行的程序,使用预先设置的执行逻辑来执行特定功能,然而智能合约一旦部署在区块链中,便无法更改。由于跨链桥智能合约(或称桥合约)持有大量资产用于价值流通,因此即使是很小的合约漏洞也可能导致重大资产损失;然而,在跨链桥中,为了确保两个异构区块链的一致性,数据首先从一个区块链流向链外,然后再流向另一个区块链,而这需要通过调用外部合约模块来实现,此时不确定的链外数据可能会触发桥合约中隐蔽的外部交互漏洞。

2、现有方法将evm(ethereum virtual machine,以太坊虚拟机)字节码转换为中间代表,并使用符号执行、形式验证和信息流跟踪等程序分析技术来检测合约漏洞。然而,这些基于ir的方法抽象掉了部分执行语义,导致缺少执行逻辑(如执行路径和约束)和关键数据流(如指令参数级的数据流),因此,其无法区分链外数据对微小调用逻辑的影响,难以检测到桥接合约中的外部交互漏洞;此外,传统的符号执行方法需要遍历智能合约的所有执行路径并记录路径的执行状态,随着桥接合约规模的增大,路径爆炸问题会变得更加突出,其路径状态空间的需求也会快速增长,所以在检测过程中会存在路径状态空间爆炸的问题,从而导致检测漏洞时间过长,增大了时间开销,降低了代码覆盖率和检测精度。

3、综上所述,现有技术无法区分链外数据对微小调用逻辑的影响,难以检测到桥接合约中的外部交互漏洞;此外,现有技术检测漏洞的时间过长,代码覆盖率和检测精度较低,亟待解决。

技术实现思路

1、本技术提供一种基于静态分析的跨链桥智能合约漏洞检测方法及装置,以解决现有技术无法区分链外数据对微小调用逻辑的影响,难以检测到桥接合约中的外部交互漏洞;此外,现有技术检测漏洞的时间过长,代码覆盖率和检测精度较低等问题。

2、本技术第一方面实施例提供一种基于静态分析的跨链桥智能合约漏洞检测方法,包括以下步骤:获取目标跨链桥智能合约的字节码和api信息,并生成所述字节码对应的指令字典,且根据所述api信息提取所述目标跨链桥智能合约目标函数的函数名和所述函数名对应的参数类型数组;基于所述指令字典、所述函数名和所述参数类型数组,构建底层环境模型,并通过所述底层环境模型执行所述目标函数有效路径的路径条件和细粒度数据流的提取操作;基于预设的跨链函数调用漏洞特征和无保护数据注入漏洞特征,确定跨链函数调用漏洞检测策略和无保护数据注入漏洞检测策略,并根据所述跨链函数调用漏洞检测策略、所述无保护数据注入漏洞检测策略、所述路径条件和所述细粒度数据流进行漏洞识别操作,以生成漏洞检测结果;通过预设的启发式定向剪枝策略,对所述目标函数的提取操作进行剪枝优化处理,以生成所述目标函数的有效执行路径,且根据所述有效执行路径得到所述目标跨链桥智能合约的检测结果报告。

3、可选地,在本技术的一个实施例中,所述通过所述底层环境模型执行所述目标函数有效路径的路径条件和细粒度数据流的提取操作,包括:对所述底层环境模型的全局状态、机器状态和执行数据进行建模,以构建多个运行函数,其中,所述多个运行函数包括symbolize函数、taint函数、taintpropagation函数、isauthentication函数和istaint函数;通过所述symbolize函数和所述taint函数对预设的链外数据进行符号化和污染,以得到受污染的符号值;对所述目标函数的所有有效路径进行编号,以获取所述所有有效路径中每条有效路径对应的路径编号;基于所述taintpropagation函数、所述isauthentication函数和所述istaint函数和所述受污染的符号值,并结合预设的深度优先原则,在所述所有有效路径中进行污染传播操作,以得到污染传播结果;利用所述污染传播结果提取所述路径编号对应的所述路径条件和所述细粒度数据流。

4、可选地,在本技术的一个实施例中,所述基于预设的跨链函数调用漏洞特征和无保护数据注入漏洞特征,确定跨链函数调用漏洞检测策略和无保护数据注入漏洞检测策略,并根据所述跨链函数调用漏洞检测策略、所述无保护数据注入漏洞检测策略、所述路径条件和所述细粒度数据流进行漏洞识别操作,以生成漏洞检测结果,包括:通过所述路径条件、所述细粒度数据流、所述有效路径上的调用指令判断所述目标跨链桥智能合约是否存在跨链函数调用漏洞和无保护数据注入漏洞;如果所述目标跨链桥智能合约缺乏所述链外数据对应的链外实体的身份验证条件,且所述调用指令的调用函数和函数参数均由所述目标跨链桥智能合约的输入数据决定,则判定所述目标跨链桥智能合约存在所述跨链函数调用漏洞,否则,所述目标跨链桥智能合约不存在所述跨链函数调用漏洞;如果所述目标跨链桥智能合约缺乏所述链外数据对应的链外实体的身份验证条件,且所述调用指令的被调用合约地址由所述目标跨链桥智能合约的输入数据决定,则判定所述目标跨链桥智能合约存在所述无保护数据注入漏洞,否则,所述目标跨链桥智能合约不存在所述无保护数据注入漏洞。

5、可选地,在本技术的一个实施例中,所述通过预设的启发式定向剪枝策略,对所述目标函数的提取操作进行剪枝优化处理,以生成所述目标函数的有效执行路径,包括:确定所述目标函数中每条有效路径的执行路径深度,并比较所述执行路径深度和预设的执行条件数量阈值,且在所述执行路径深度大于所述执行条件数量阈值的情况下,终止所述所述执行路径深度对应的有效路径,以确定所述启发式定向剪枝策略中的执行深度限制机制;计算所有有效路径中每对有效路径之间的相似度,并在所述相似度大于预设相似度阈值时,对所述相似度对应的所述每对有效路径进行合并,生成有效合并路径,以确定所述启发式定向剪枝策略中的重复路径合并机制;对所述有效路径进行路径条件求解操作,以获取所述路径条件求解操作对应的求解时间,并在所述求解时间大于预设时间阈值时,删除所述求解时间对应的有效路径,以确定所述启发式定向剪枝策略中的不可达路径终止机制;计算每个路径条件在每个有效路径中的出现次数,并在所述出现次数大于预设重复阈值的情况下,删除所述出现次数对应的有效路径,以确定所述启发式定向剪枝策略中的循环路径终止机制;基于所述执行深度限制机制、所述重复路径合并机制、所述不可达路径终止机制和所述循环路径终止机制,生成所述目标函数的有效执行路径。

6、本技术第二方面实施例提供一种基于静态分析的跨链桥智能合约漏洞检测装置,包括:生成模块,用于获取目标跨链桥智能合约的字节码和api信息,并生成所述字节码对应的指令字典,且根据所述api信息提取所述目标跨链桥智能合约目标函数的函数名和所述函数名对应的参数类型数组;提取模块,用于基于所述指令字典、所述函数名和所述参数类型数组,构建底层环境模型,并通过所述底层环境模型执行所述目标函数有效路径的路径条件和细粒度数据流的提取操作;检测模块,用于基于预设的跨链函数调用漏洞特征和无保护数据注入漏洞特征,确定跨链函数调用漏洞检测策略和无保护数据注入漏洞检测策略,并根据所述跨链函数调用漏洞检测策略、所述无保护数据注入漏洞检测策略、所述路径条件和所述细粒度数据流进行漏洞识别操作,以生成漏洞检测结果;剪枝模块,用于通过预设的启发式定向剪枝策略,对所述目标函数的提取操作进行剪枝优化处理,以生成所述目标函数的有效执行路径,且根据所述有效执行路径得到所述目标跨链桥智能合约的检测结果报告。

7、可选地,在本技术的一个实施例中,所述提取操作包括:建模单元,用于对所述底层环境模型的全局状态、机器状态和执行数据进行建模,以构建多个运行函数,其中,所述多个运行函数包括symbolize函数、taint函数、taintpropagation函数、isauthentication函数和istaint函数;污染单元,用于通过所述symbolize函数和所述taint函数对预设的链外数据进行符号化和污染,以得到受污染的符号值;编号单元,用于对所述目标函数的所有有效路径进行编号,以获取所述所有有效路径中每条有效路径对应的路径编号;传播单元,用于基于所述taintpropagation函数、所述isauthentication函数和所述istaint函数和所述受污染的符号值,并结合预设的深度优先原则,在所述所有有效路径中进行污染传播操作,以得到污染传播结果;获取单元,用于利用所述污染传播结果提取所述路径编号对应的所述路径条件和所述细粒度数据流。

8、可选地,在本技术的一个实施例中,所述检测模块包括:判断单元,用于通过所述路径条件、所述细粒度数据流、所述有效路径上的调用指令判断所述目标跨链桥智能合约是否存在跨链函数调用漏洞和无保护数据注入漏洞;第一判定单元,用于如果所述目标跨链桥智能合约缺乏所述链外数据对应的链外实体的身份验证条件,且所述调用指令的调用函数和函数参数均由所述目标跨链桥智能合约的输入数据决定,则判定所述目标跨链桥智能合约存在所述跨链函数调用漏洞,否则,所述目标跨链桥智能合约不存在所述跨链函数调用漏洞;第二判定单元,用于如果所述目标跨链桥智能合约缺乏所述链外数据对应的链外实体的身份验证条件,且所述调用指令的被调用合约地址由所述目标跨链桥智能合约的输入数据决定,则判定所述目标跨链桥智能合约存在所述无保护数据注入漏洞,否则,所述目标跨链桥智能合约不存在所述无保护数据注入漏洞。

9、可选地,在本技术的一个实施例中,所述剪枝模块包括:执行深度限制单元,用于确定所述目标函数中每条有效路径的执行路径深度,并比较所述执行路径深度和预设的执行条件数量阈值,且在所述执行路径深度大于所述执行条件数量阈值的情况下,终止所述所述执行路径深度对应的有效路径,以确定所述启发式定向剪枝策略中的执行深度限制机制;重复路径合并单元,用于计算所有有效路径中每对有效路径之间的相似度,并在所述相似度大于预设相似度阈值时,对所述相似度对应的所述每对有效路径进行合并,生成有效合并路径,以确定所述启发式定向剪枝策略中的重复路径合并机制;不可达路径终止单元,用于对所述有效路径进行路径条件求解操作,以获取所述路径条件求解操作对应的求解时间,并在所述求解时间大于预设时间阈值时,删除所述求解时间对应的有效路径,以确定所述启发式定向剪枝策略中的不可达路径终止机制;循环路径终止单元,用于计算每个路径条件在每个有效路径中的出现次数,并在所述出现次数大于预设重复阈值的情况下,删除所述出现次数对应的有效路径,以确定所述启发式定向剪枝策略中的循环路径终止机制;优化单元,用于基于所述执行深度限制机制、所述重复路径合并机制、所述不可达路径终止机制和所述循环路径终止机制,生成所述目标函数的有效执行路径。

10、本技术第三方面实施例提供一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以实现如上述实施例所述的基于静态分析的跨链桥智能合约漏洞检测方法。

11、本技术第四方面实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储计算机程序,该程序被处理器执行时实现如上的基于静态分析的跨链桥智能合约漏洞检测方法。

12、由此,本技术的实施例具有以下有益效果:

13、本技术的实施例可通过获取目标跨链桥智能合约的字节码和api信息,并生成字节码对应的指令字典,且根据api信息提取目标跨链桥智能合约目标函数的函数名和函数名对应的参数类型数组;基于指令字典、函数名和参数类型数组,构建底层环境模型,并通过底层环境模型执行目标函数有效路径的路径条件和细粒度数据流的提取操作;基于预设的跨链函数调用漏洞特征和无保护数据注入漏洞特征,确定跨链函数调用漏洞检测策略和无保护数据注入漏洞检测策略,并根据跨链函数调用漏洞检测策略、无保护数据注入漏洞检测策略、路径条件和细粒度数据流进行漏洞识别操作,以生成漏洞检测结果;通过预设的启发式定向剪枝策略,对目标函数的提取操作进行剪枝优化处理,以生成目标函数的有效执行路径,且根据有效执行路径得到目标跨链桥智能合约的检测结果报告,从而提高了外部交互漏洞的检测效率,有效提升了代码覆盖率和检测精度。由此,解决了现有技术无法区分链外数据对微小调用逻辑的影响,难以检测到桥接合约中的外部交互漏洞;此外,现有技术检测漏洞的时间过长,代码覆盖率和检测精度较低等问题。

14、本技术附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本技术的实践了解到。

本文地址:https://www.jishuxx.com/zhuanli/20240730/197246.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。