[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

CN117725594A - 智能合约的多重复合检测方法、装置、设备及存储介质 - Google Patents

智能合约的多重复合检测方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN117725594A
CN117725594A CN202311765424.2A CN202311765424A CN117725594A CN 117725594 A CN117725594 A CN 117725594A CN 202311765424 A CN202311765424 A CN 202311765424A CN 117725594 A CN117725594 A CN 117725594A
Authority
CN
China
Prior art keywords
vulnerability
detection
initial
list
detector
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.)
Pending
Application number
CN202311765424.2A
Other languages
English (en)
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.)
City University Of Hong Kong Dongguan Preparatory
Original Assignee
City University Of Hong Kong Dongguan Preparatory
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 City University Of Hong Kong Dongguan Preparatory filed Critical City University Of Hong Kong Dongguan Preparatory
Priority to CN202311765424.2A priority Critical patent/CN117725594A/zh
Publication of CN117725594A publication Critical patent/CN117725594A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本公开涉及智能合约的多重复合检测方法、装置、设备及存储介质,上述方法包括:获取待检测智能合约;采用多个检测工具分别对待检测智能合约进行检测,获得每个检测工具分别生成的检测结果文件;对多个检测结果文件进行数据整合处理,获得初始漏洞列表;采用大语言模型验证初始漏洞列表,获得目标漏洞列表。本公开提供的智能合约的多重复合检测方法通过多个检测工具对待检测智能合约进行检测,解决了单个检测工具对不同漏洞类型存在较大偏向性,以及漏洞检测覆盖面不高的技术问题。使用大语言模型验证检测工具输出的检测结果,利用大语言模型检测覆盖面广的特点,可以进一步降低漏洞的误报率和漏报率,提高了智能合约的安全性。

Description

智能合约的多重复合检测方法、装置、设备及存储介质
技术领域
本公开涉及计算机技术领域,尤其涉及智能合约的多重复合检测方法、装置、设备及存储介质。
背景技术
随着医疗健康、物联网、金融信息等多方面的快速发展,区块链技术在其中的应用也逐渐得到认可。智能合约作为区块链中的去中心化应用,可以在无第三方证明的情况下完成透明、不可篡改、可追溯的信息传递和货币交易。然而,目前智能合约也面临着恶意攻击、代码漏洞等问题。
相关技术中,为了提高智能合约的安全性并发现潜在代码漏洞,通常采用智能合约检测工具对智能合约进行代码检测。检测工具中包含多个检测器,每个检测器有其关注的漏洞类型,但是不同检测工具之间的差异性较大,对不同漏洞类型具有较大的偏向性,而且检测工具依赖专家定义的规则来检测代码漏洞。随着智能合约数量的增多和复杂性的提升,存在漏洞误报率和漏报率高等问题,导致开发人员无法及时发现智能合约中的潜在漏洞,进而增加了智能合约的安全风险。
发明内容
根据本公开的第一方面,提供了一种智能合约的多重复合检测方法,包括:
获取待检测智能合约;
采用多个检测工具分别对所述待检测智能合约进行检测,获得每个检测工具分别生成的检测结果文件;
对多个所述检测结果文件进行数据整合处理,获得初始漏洞列表;
采用大语言模型验证所述初始漏洞列表,获得目标漏洞列表。
根据本公开的第二方面,提供了一种智能合约的多重复合检测装置,包括:
数据获取模块,用于获取待检测智能合约;
数据处理模块,用于采用多个检测工具分别对所述待检测智能合约进行检测,获得每个检测工具分别生成的检测结果文件;
所述数据处理模块,还用于对多个所述检测结果文件进行数据整合处理,获得初始漏洞列表;
所述数据处理模块,还用于采用大语言模型验证所述初始漏洞列表,获得目标漏洞列表。
根据本公开的第三方面,提供了一种电子设备,包括:
处理器;以及,
存储程序的存储器;
其中,所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行根据本公开示例性实施例所述的方法。
根据本公开的第四方面,提供了一种非瞬时计算机可读存储介质,所述非瞬时计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行根据本公开示例性实施例所述的方法。
本公开实施例中提供的一个或多个技术方案,通过获取待检测智能合约,采用多个检测工具分别对待检测智能合约进行检测,获得每个检测工具分别生成的检测结果文件。对多个检测结果文件进行数据整合处理,获得初始漏洞列表。采用大语言模型验证初始漏洞列表,获得目标漏洞列表。本公开提供的智能合约的多重复合检测方法通过多个检测工具对待检测智能合约进行检测,解决了单个检测工具对不同漏洞类型存在较大偏向性,以及检测工具的漏洞检测覆盖面不高的技术问题。使用大语言模型验证检测工具输出的检测结果,可以进一步降低漏洞的误报率和漏报率,提高了智能合约的安全性。
附图说明
在下面结合附图对于示例性实施例的描述中,本公开的更多细节、特征和优点被公开,在附图中:
图1为本公开一示例性提供的智能合约的多重复合检测方法的整体框架图;
图2为本公开一示例性提供的智能合约的多重复合检测方法流程图;
图3为本公开一示例性提供的检测模块流程图;
图4为本公开一示例性提供的验证模块流程图;
图5为本公开一示例性提供的智能合约的多重复合检测方法的流程原理图;
图6为本公开一示例性提供的智能合约的多重复合检测装置的功能模块示意性框图;
图7为本公开一示例性提供的芯片的示意性框图;
图8为本公开一示例性提供的电子设备的结构框图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”“术语”“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
可以理解的是,在使用本公开各实施例公开的技术方案之前,均应当依据相关法律法规通过恰当的方式对本公开所涉及个人信息的类型、使用范围、使用场景等告知用户并获得用户的授权。
例如,在响应于接收到用户的主动请求时,向用户发送提示信息,以明确地提示用户,其请求执行的操作将需要获取和使用到用户的个人信息。从而,使得用户可以根据提示信息来自主地选择是否向执行本公开技术方案的操作的电子设备、应用程序、服务器或存储介质等软件或硬件提供个人信息。
作为一种可选的但非限定性的实现方式,响应于接收到用户的主动请求,向用户发送提示信息的方式例如可以是弹窗的方式,弹窗中可以以文字的方式呈现提示信息。此外,弹窗中还可以承载供用户选择“同意”或者“不同意”向电子设备提供个人信息的选择控件。可以理解的是,上述通知和获取用户授权过程仅是示意性的,不对本公开的实现方式构成限定,其它满足相关法律法规的方式也可应用于本公开的实现方式中。
在介绍本公开实施例之前首先对本公开实施例中涉及到的相关名词作如下释义:
智能合约:智能合约是一种在区块链上执行的自动化合约或程序,其中包含了预定义的规则和逻辑,用于在满足特定条件时自动执行合约中定义的操作。智能合约是区块链技术的一项关键功能,它通过去中心化的方式实现了可编程的、不可篡改的合约执行。
检索增强生成(RetrievalAugmented Generation,RAG)方法:RAG是一种结合了信息检索和生成模型的自然语言处理技术。该方法旨在通过从大型知识库中检索相关信息,并将这些信息整合到生成模型中,从而提高生成模型在特定任务上的性能。
随着医疗健康、物联网、金融信息等多方面的快速发展,区块链技术在其中的应用也逐渐得到认可。智能合约作为区块链中的去中心化应用,可以在无第三方证明的情况下完成透明、不可篡改、可追溯的信息传递和货币交易。然而,目前智能合约也面临着恶意攻击、代码漏洞等问题。
相关技术中,为了提高智能合约的安全性并发现潜在代码漏洞,通常采用智能合约检测工具对智能合约进行代码检测。然而,检测工具依赖专家定义的规则来检测代码漏洞,随着智能合约数量的增多和复杂性的提升,存在漏洞误报率和漏报率高等问题。此外,不同检测工具输出的检测报告格式不统一,可读性较差,导致开发人员无法及时发现智能合约中的潜在漏洞,进而增加了智能合约的安全风险。
因此,为了解决上述问题,本公开实施例首先提供了一种智能合约的多重复合检测方法,示例性的,图1为本公开一示例性提供的智能合约的多重复合检测方法的整体框架图。如图1所示,智能合约的多重复合检测方法100可以包括检测模块110、验证模块120和报告生成模块130。首先,将多个检测工具整合进检测模块110中,在检测模块110中,依次使用多个检测工具对待检测的智能合约进行多轮检测,获得多个检测结果文件。对多个检测结果文件进行数据分析处理,获得初始漏洞列表。随后,在验证模块120中,使用大语言模型对初始漏洞列表进行验证,获得验证后的漏洞列表和对应的修改建议。最后,在报告生成模块130,使用大语言模型对漏洞列表和修改建议进行自然语言通俗化处理,提高漏洞列表和修改建议的可读性。
示例性的,图2为本公开一示例性提供的智能合约的多重复合检测方法流程图。如图2所示,智能合约的多重复合检测方法可以包括以下步骤:
步骤S210:对检测模块中的多个检测工具的检测器进行分类处理。
示例性的,虽然每个检测工具包含多个检测器,但是不同检测工具之间的差异性较大,对不同漏洞类型具有较大的偏向性,因此通过提前在检测模块中内置多个检测工具,例如Slither、Mythril和Securify等,可以解决不同检测工具之间的差异性较大的问题,并且在检测过程中可以涵盖更广泛的漏洞类型,提高对智能合约潜在风险的全面性检测。
示例性的,检测模块还提供检测工具插入功能,用于拓展检测模块内的检测工具。允许用户往检测模块中添加新的检测工具,使用户可以根据其特定需求选择并整合适用于待检测智能合约的定制化检测模块,从而更好地适应特定的开发环境和安全要求,应对智能合约领域不断涌现新的漏洞和威胁。
由于检测工具中多个检测器的侧重点不同,所针对的特定漏洞也不尽相同,为方便后续分析比较不同检测工具生成的检测结果文件,可以先对检测模块中所有检测工具内的所有检测器进行分类处理。
示例性的,可以按检测器所关注的漏洞类型,对检测器进行分类处理。将检测器所关注的漏洞类型与已经确定要归类的漏洞类型进行匹配。如果检测器专注于某一特定类型的漏洞,那么将其分到与该漏洞类型对应的类别中。
在本实施例中,可以将漏洞类型分为以下14类:重入攻击、整形溢出、访问控制、异常操作、服务否定、类型不匹配、以太冻结、短地址攻击、以太丢失、调用堆栈溢出、Tx.origin使用漏洞、时间戳依赖、块参数依赖以及交易顺序依赖。针对上述14类漏洞及其对应的检测器进行归类整合,获得归类集合a。归类集合a可以包括检测器名称和对应的漏洞类型信息,例如,重入攻击漏洞对应的检测器为A1、A2和A3,重入攻击漏洞的编号为1;整形溢出漏洞对应的检测器为B1和B2,整形溢出漏洞的编号为2……交易顺序依赖对应的检测器为N1、N2、N3和N4,访问控制漏洞的编号为14;则归类集合a可以表示为:{1,A1,A2,A3},{2,B1,B2}……{14,N1,N2,N3,N4}。
在实际应用中,可以根据待检测的智能合约,对上述14类漏洞类型进行增减,使用户可以根据需求定制出适用于待检测智能合约的检测模块。
对于不关注上述14类漏洞的检测器可以自己单独归类。
将多个检测工具内置进检测模块,并提供新检测工具拓展入口,不仅减弱了后续拓展新的检测工具的复杂度,降低了检测模块的维护成本,而且最大程度地保留各个检测工具的特点,扩大了对漏洞检测的覆盖范围。
基于此,对检测模块中的多个检测器进行分类处理,不仅可以更清晰地了解每个检测器关注的漏洞类型,为用户提供更准确和详尽的信息。还可以直观地比较不同检测器的性能和覆盖范围。通过对同一类别的漏洞结果进行对比,可以更好地评估各个检测器的优劣和适用场景。此外,新检测工具拓展入口可以提高系统的可拓展性,使用户可以根据其特定需求选择并整合适用于待检测智能合约的定制化检测模块。
步骤S220:对多个检测器进行统一化数据处理。
首先,依次使用检测模块中的多个检测工具对待检测智能合约源码进行检测,获得每个检测工具对应的检测结果文件。检测结果文件可以包括检测工具中被触发的检测器的名称、漏洞描述以及漏洞发生的位置。为方便对检测结果文件进行统一化数据处理,可以将检测结果文件的格式统一为JSON格式。
然后,根据检测结果文件,获取检测出漏洞的检测器,并对检测出漏洞的检测器进行统一化数据处理。对于自己单独归类的检测器,可以将检测器名称、所针对的漏洞类型、对于漏洞的描述以及修改建议保存至初始漏洞列表中。对于归类集合a中的检测器,则按照上述14种漏洞类型,将检测器名称、所针对的漏洞类型、对于漏洞的描述以及修改建议保存至对应漏洞类型的检测结果文件中。
由于不同的检测器采用不同的静态分析技术和规则集,从而在检测漏洞时具有不同的优势。因此,采用多个检测工具对待检测智能合约进行检测,可以通过交叉验证和综合结果,提高检测的准确性,减少漏洞的误报和漏报。
示例性的,图3为本公开一示例性提供的检测模块流程图,如图3所示,检测模块包括多个检测工具,如检测工具A、检测工具B和检测工具C,根据每个检测工具输出的检测结果文件依次进行统一化数据处理和择优处理,获得初始漏洞列表。
步骤S230:对同一漏洞类型中的多个检测器进行择优处理,获得初始漏洞列表。
首先,对于归类集合a中的检测器,可以对上述14种漏洞类型分别对应的检测器的置信度进行赋值。
具体地,可以通过以下方式进行置信度赋值:
①通过工具开发者获取检测器的准确率:可以直接向工具开发者获取检测器的准确率,并将该准确率作为对应检测器的置信度。这种方式依赖于开发者对其工具性能的客观评估,为每个检测器提供了一个基于专业经验的可信度值。
②通过数据集自行测试获得对应检测器的准确率:准备存在已知漏洞的智能合约数据集,使用检测器对数据集中的智能合约进行检测测试,将测试获得的准确率赋值为对应检测器的置信度。
③通过机器学习动态调整检测器对应的置信度:可以设置目标函数,根据目标函数的输出调整每个检测器的置信度。其中,对于检测出漏洞的检测器,对置信度进行调高处理;对于未检测出漏洞的检测器,对置信度进行降低处理,以最小化目标函数输出值,从而提高检测模块的准确率。
具体地,目标函数可以通过下述公式(1)表示:
Z=1-[x1,x2,…xn]·[y1,y2,…,yn]T (1)
其中,Z为目标函数输出值;xn为每个检测器的触发状态,检测出漏洞的检测器的触发状态为1,未检测出漏洞的触发状态为-1;yn为每个检测器的置信度;n为每种漏洞类型中包含的检测器数量。
在置信度赋值过程中,为保证矩阵维度计算正确,如果某个漏洞类型没有对应的检测器,则其触发状态和置信度均默认为0。
获得每个检测器对应的触发状态和置信度后,开始对同一漏洞类型中的检测器进行择优处理。
示例性的,择优处理可以通过下述公式(2)表示:
Q=[x1,x2,…xn]·[y1,y2,…,yn]T (2)
其中,Q为择优处理的输出值;xn为每个检测器的触发状态,检测出漏洞的检测器的触发状态为1,未检测出漏洞的触发状态为-1;yn为每个检测器的置信度;n为每种漏洞类型中包含的检测器数量。
通过上述公式(2)输出值的正负判断漏洞是否存在,输出值为正则漏洞存在,将该漏洞类型中的检测器名称、所针对的漏洞类型、对于漏洞的描述以及修改建议保存到初始漏洞列表中。如果输出值为负则漏洞不存在,该漏洞类型中的检测器名称、所针对的漏洞类型、对于漏洞的描述以及修改建议不会保存到初始漏洞列表中。
依次对每一种漏洞类型进行择优处理,获得初始漏洞列表。
以重入攻击漏洞类型为例,假设重入攻击漏洞类型包含三个检测器,分别为A1、A2和A3,其触发状态分别为-1,1和1,其置信度分别为0.3,0.3和0.4,则择优处理输出值为[-1,1,1][0.3,0.3,0.4]=-0.3+0.3+0.4=0.4,输出值为正,待检测智能合约中存在重入攻击漏洞。
基于此,通过采用不同的置信度赋值方式,综合利用了工具开发者的专业经验、实际测试数据的准确率和机器学习的动态调整,从而更全面、多角度地评估每个检测器的置信度。采用择优处理策略,综合考虑同一漏洞类型下的多个检测器的性能和置信度,以输出最具置信度的结果,提高对漏洞存在性判断的准确性。
步骤S240:在验证模块对初始漏洞列表进行验证,获得验证后的漏洞列表。
示例性的,图4为本公开一示例性提供的验证模块流程图,如图4所示,将初始漏洞列表和待检测智能合约源码作为输入数据,输入大语言模型中。大语言模型通过RAG方式,从预先设置的知识库a和知识库b中检索相关信息,并对检索到的信息进行整合、学习,生成攻击合约,并对待检测智能合约源码进行模拟攻击,获得验证后的漏洞列表和修改建议。
在验证模块中,通过大语言模型对初始漏洞列表进行验证,具体包括借助RAG辅助大语言模型生成攻击合约,然后通过大语言模型对待验证智能合约进行模拟攻击,根据预先设定的攻击成立依据,获得模拟攻击结果,逐一验证初始漏洞列表中的每个漏洞,获得验证后的漏洞列表。在本实施例中,大语言模型可以使用gpt-3.5-turbo-0613。
为保证模拟攻击的质量,可以预先维护知识库a和知识库b。
其中,知识库a可以包括存在上述14种漏洞类型的智能合约源码以及对应的攻击合约源码,每种漏洞类型的智能合约源码和对应的攻击合约源码各10篇以上。知识库a用于为大语言模型提供在生成攻击的过程中借助RAG方法获取相对应的信息,降低大语言模型生成攻击合约的误差。
知识库b可以包括上述14种漏洞类型对应的攻击成立依据。知识库b用于辅助大语言模型在虚拟执行源码合约和攻击合约时,提供攻击成立的判断依据。
通过维护这两个知识库,可以为模拟攻击提供必要的背景知识和验证准则,有助于提高攻击合约的生成质量并减少潜在的误导性信息。
示例性的,为方便后续生成攻击合约,可以对知识库a中的内容进行分块处理,并将每个数据块转换成对应的向量嵌入块。
在一种可选的方式中,可以按照漏洞类型进行分块处理,使得每个数据块都用于表达一个具体的漏洞类型,有助于大语言模型进行检索。
在一种可选的方式中,可以按照智能合约进行分块处理,考虑对每个智能合约进行分块,每个数据块就代表了一个独立的智能合约,有助于大语言模型更好地理解每个智能合约的结构和漏洞情况。
在一种可选的方式中,可以按照攻击场景进行分块处理,由于知识库a中包含了攻击合约,可以考虑按照攻击合约中的每个攻击场景进行分块。分块后,每个数据块就代表了一个具体的攻击情境,有助于大语言模型理解攻击和漏洞之间的关联。
分块规则可以根据具体情况进行组合或调整,选择合适的分块策略可以使得向量嵌入块更好地捕捉知识库a中的信息,为大语言模型提供更有针对性的输入。
示例性的,维护好知识库a和知识库b后,可以开始生成攻击指令。
攻击指令模块可以为:”’你是一个执行问答任务的智能合约漏洞验证助手。通过使用接下来我所给你的[Context]所述内容为参考,回答[Question]所示的问题。如果你不知道如何回答,就说:“我不知道”就行。
Question:{问题模板}
Context:{知识库中与问题上下文相似性高的内容}”’
问题模板:“对这篇智能合约就{vulnerability},生成对应的漏洞攻击合约,智能合约源码:{智能合约源码}”
其中,{}代表其中的内容需要依照不同场景替换,{vulnerability}在不同的验证轮次中依次枚举初始漏洞列表中所存在的漏洞;{知识库中与问题上下文相似性高的内容}这部分内容可以通过检索器组件对问题模板中该轮次的问题和知识库a进行语言匹配,在知识库a中获取问题模块中提及的漏洞类型、漏洞对应的智能合约源码和攻击合约分别对应的嵌入向量块。
进而,将生成的攻击指令输入到大语言模型中,得到攻击合约。
然后,通过大语言模型对待验证智能合约进行模拟攻击。
具体地,通过大语言模型模拟两个存在于区块链上的账户,在账户a部署待检测的智能合约源码,在账户b部署生成的攻击合约,并且设置攻击成立依据。最后,根据攻击成立依据,获取大语言模型的输出结果,判断攻击是否成功。
如果攻击成功,则表示待检测智能合约中存在对应的漏洞,保留初始漏洞列表中的对应信息;如果攻击无效,则表示待检测智能合约中不存在对应的漏洞,需要去除漏洞列表中的对应信息。
在该步骤中,遍历漏洞列表中的每个漏洞,依次生成对应的攻击合约,获得对应的虚拟攻击结果。遍历完漏洞列表中的每个漏洞后,获得验证后的漏洞列表以及修改建议。
对于新加入检测模块的检测工具,需要补充以下信息以确保大语言模型能对其输出的检测结果文件进行验证。补充的信息可以包括:
①如果新加入的检测工具中的检测器所关注的漏洞类型已存在于归类集合a中,则将该检测器的名称和置信度补充到对应的漏洞类型中。
②如果新加入的检测工具中的检测器所关注的漏洞类型不存在于归类集合a中,则将该漏洞类型补充进归类集合a中,并将该检测器的名称和置信度补充到对应的漏洞类型中。
③如果新加入的检测工具中的检测器所关注的漏洞类型不存在于归类集合a中,需要在知识库a补充带有该漏洞类型的智能合约源码以及对应的攻击合约各10篇。在知识库b补充该漏洞类型的攻击成立依据。
步骤S250:在报告模块对漏洞列表以及修改建议进行语言优化处理,获得目标检测报告。
在报告生成模块,使用大语言模型对验证后的漏洞列表和修改建议进行自然语言通俗化处理,获得目标检测报告。自然语言通俗化处理可以提高漏洞列表和修改建议的可读性,有助于非专业读者更轻松地理解漏洞信息,从而提高漏洞修复过程的效率和准确性。
基于上述实施例,为方便用户使用,本公开还提供的人机交互界面,人机交互界面可以包括:检测工具管理模块、文件上传模块、报告浏览模块。
检测工具管理模块,用于管理、更新检测模块中内置的多个检测工具。还可以提供检测工具插入功能,用于拓展新的检测工具,以满足不断演变的安全需求。
文件上传模块,用于上传知识库a中不同漏洞类型的智能合约源码以及对应的攻击合约源码。还用于上传知识库b中不同漏洞类型对应的攻击成立依据。还用于上传待检测的智能合约源码。
报告浏览模块,用于展示目标检测报告,呈现漏洞列表和修改建议。
本公开示例性实施例中提供的一个或多个技术方案,通过整合多个检测工具,实现了对智能合约的多轮综合检测,从而提高了漏洞检测的全面性和准确性。通过对多个检测结果文件进行数据分析处理,得到初始漏洞列表,有助于综合考虑不同检测器的输出,提升漏洞识别的鲁棒性。在验证模块中,采用大语言模型进行漏洞验证,能够更全面地分析和理解漏洞,提供更准确的验证结果。最后,通过大语言模型对漏洞列表和修改建议进行通俗化处理,提高漏洞列表和修改建议的可读性。
因此,本公开示例性实施例中提供的智能合约的多重复合检测方法通过多个漏洞检测工具以及大语言模型的结合,可以解决单个检测工具漏洞覆盖率不广,大语言模型的漏洞检测准确率不高的技术问题。
基于上述实施例,本公开还提供的一种智能合约的多重复合检测方法,图5为本公开一示例性提供的智能合约的多重复合检测方法的流程原理图,如图5所示,该方法可以包括如下步骤:
步骤S510:获取待检测智能合约。
实施例中,需要获取待检测智能合约的源码,以供后续进行多重复合检测。
步骤S520:采用多个检测工具分别对待检测智能合约进行检测,获得每个检测工具分别生成的检测结果文件。
实施例中,虽然每个检测工具包含多个检测器,但是不同检测工具之间的差异性较大,对不同漏洞类型具有较大的偏向性,因此可以提前内置多个检测工具,例如Slither、Mythril和Securify等。从而涵盖更广泛的漏洞类型,提高对智能合约潜在风险的全面性检测。
本实施例中,还提供检测工具插入功能,用于添加新的检测工具。使用户可以根据其特定需求选择并整合适用于待检测智能合约的多个检测工具,从而更好地适应特定的开发环境和安全要求,应对智能合约领域不断涌现新的漏洞和威胁。
依次使用多个检测工具对待检测智能合约进行检测,获得每个检测工具对应的检测结果文件。检测结果文件可以包括检测工具中被触发的检测器的名称、漏洞描述、漏洞类型、漏洞发生的位置以及修改建议。
步骤S530:对多个检测结果文件进行数据整合处理,获得初始漏洞列表。
由于多个检测工具生成的检测结果文件格式不统一,为方便后续大语言模型进行验证,需要对多个检测结果文件进行数据整合处理。其中,数据整合处理可以包括统一化数据处理和择优处理。统一化数据处理用于按照漏洞类型对检测结果文件进行分类,择优处理用于根据每一漏洞类型中检测器的准确率进行检测结果判断。
步骤S540:采用大语言模型验证初始漏洞列表,获得目标漏洞列表。
实施例中,将初始漏洞列表和待检测智能合约作为输入数据,输入大语言模型中。大语言模型通过RAG方式,从预先设置的数据库中检索相关信息,并对检索到的信息进行整合、学习,生成攻击合约,并对待检测智能合约进行模拟攻击,获得模拟攻击。根据模拟攻击结果判断漏洞是否存在,从而验证初始漏洞列表的准确性。对于存在的漏洞,保留其在初始漏洞列表中的相关信息。对于不存在的漏洞,去除其在初始漏洞列表中的相关信息。依次验证初始漏洞列表中的每一个漏洞,最终获得目标漏洞列表。
基于此,本公开示例性实施例中,通过获取待检测智能合约,采用多个检测工具分别对待检测智能合约进行检测,获得每个检测工具分别生成的检测结果文件。对多个检测结果文件进行数据整合处理,获得初始漏洞列表。采用大语言模型验证初始漏洞列表,获得目标漏洞列表。本公开提供的智能合约的多重复合检测方法通过多个检测工具对待检测智能合约进行检测,解决了单个检测工具对不同漏洞类型存在较大偏向性,以及检测工具的漏洞检测覆盖面不高的技术问题。使用大语言模型验证检测工具输出的检测结果,可以进一步降低漏洞的误报率和漏报率,提高了智能合约的安全性。
基于上述实施例,在本公开提供的又一实施例中,检测工具包括多个检测器,上述步骤S520具体可以包括:
获取多个检测器以及多个检测器分别关注的漏洞类型;
按漏洞类型对多个检测器进行分类处理;
采用多个检测工具分别对待检测智能合约进行检测,获得每个检测工具分别生成的检测结果文件;
将多个检测结果文件分别保存至检测器对应的漏洞类型中。
实施例中,由于检测工具中多个检测器的侧重点不同,所针对的特定漏洞也不尽相同,为方便后续分析比较不同检测工具生成的检测结果文件,可以先对检测模块中所有检测工具内的所有检测器进行分类处理。
具体地,可以获取提前内置和新拓展的多个检测工具中的所有检测器,以及每个检测器所关注的漏洞类型。按照漏洞类型,对检测器进行分类处理,将关注同一漏洞类型的检测器分到同一类别中。
采用多个检测工具分别对待检测智能合约进行检测,获得每个检测工具分别生成的检测结果文件。检测结果文件可以包括检测工具中被触发的检测器的名称、漏洞描述以及漏洞发生的位置。为方便对检测结果文件进行统一化数据处理,可以将检测结果文件的格式统一为JSON格式。并将检测结果文件分类到检测器对应的漏洞类型中。
基于此,由于不同的检测器采用不同的静态分析技术和规则集,从而在检测漏洞时具有不同的优势。因此,采用多个检测工具对待检测智能合约进行检测,可以通过交叉验证和综合结果,提高检测的准确性,减少误报和漏报。
基于上述实施例,在本公开提供的又一实施例中,按漏洞类型对多个检测器进行分类处理,具体可以包括:
预设多个第一漏洞类型;
在检测器关注的漏洞类型与第一漏洞类型相匹配的情况下,将对应的检测器分类到对应的第一漏洞类型中;
在检测器关注的漏洞类型与第一漏洞类型不匹配的情况下,将对应的检测器分类到第二漏洞类型中。
实施例中,可以根据常见的漏洞类型,预设多个第一漏洞类型。在本实施例中,第一漏洞类型可以包括:重入攻击、整形溢出、访问控制、异常操作、服务否定、类型不匹配、以太冻结、短地址攻击、以太丢失、调用堆栈溢出、Tx.origin使用漏洞、时间戳依赖、块参数依赖以及交易顺序依赖。
在实际应用中,可以根据待检测的智能合约,对第一漏洞类型进行增减,使用户可以根据需求定制出适用于待检测智能合约的第一漏洞类型。
将检测器所关注的漏洞类型与第一漏洞类型进行匹配。如果检测器关注的漏洞类型在第一漏洞类型中,则将检测器分类到对应的漏洞类型里。如果检测器关注的漏洞类型不在第一漏洞类型中,则将检测器单独分类,分类到第二漏洞类型中。遍历每个检测器,对所有检测器进行分类处理。
基于此,对多个检测器进行分类处理,不仅可以更清晰地了解每个检测器关注的漏洞类型,为用户提供更准确和详尽的信息。还可以直观地比较不同检测器的性能和覆盖范围。通过对同一类别的漏洞结果进行对比,可以更好地评估各个检测器的优劣和适用场景。
基于上述实施例,在本公开提供的又一实施例中,上述步骤S530具体可以包括:
获取第一漏洞类型中每个检测器的触发状态和置信度信息;其中,在检测器检测出漏洞的情况下,触发状态赋值为正,在检测器未检测出漏洞的情况下,触发状态赋值为负;
基于触发状态和置信度信息,计算每个第一漏洞类型对应的择优处理输出值;
在择优处理输出值为正数的情况下,将对应的第一漏洞类型中的检测结果文件保存至初始漏洞列表;
获取第二漏洞类型中的检测结果文件,并将第二漏洞类型中的检测结果文件保存至初始漏洞列表。
实施例中,数据整合处理可以包括统一化数据处理和择优处理。
具体地,统一化数据处理可以包括:
根据检测结果文件,获取检测出漏洞的检测器,对于第二漏洞类型中的检测器,可以将检测结果文件保存至初始漏洞列表中。对于第一漏洞类型中的检测器,则需要进行择优处理,才能将检测结果文件整理进初始漏洞列表中。
具体地,择优处理可以包括:
获取第一漏洞类型中每个检测器的触发状态和置信度信息。其中,触发状态用于表示检测器在检测过程中是否检测出漏洞。在检测器检测出漏洞的情况下,可以将检测状态赋值为1,在检测器未检测出漏洞的情况下,可以将检测状态赋值为-1。置信度信息用于表示检测器对于漏洞检测的准确率。
获得每个检测器对应的触发状态和置信度信息后,开始对第一漏洞类型中每种漏洞类型对应的检测器进行择优处理,获得择优处理输出值。
示例性的,择优处理可以通过上述公式(2)表示。通过择优处理输出值的正负判断漏洞是否存在,输出值为正则漏洞存在,将该漏洞类型对应的检测结果文件保存到初始漏洞列表中。如果输出值为负则漏洞不存在,该漏洞类型对应的检测结果文件不会保存到初始漏洞列表中。
依次对每一种漏洞类型进行择优处理,获得初始漏洞列表。
基于此,采用统一化数据处理和择优处理策略,综合考虑同一漏洞类型下的多个检测器的性能和置信度,输出最具置信度的结果,从而提高对漏洞存在性判断的准确性。
基于上述实施例,在本公开提供的又一实施例中,获取第一漏洞类型中每个检测器的置信度信息,具体可以包括:
获取官方发布的检测准确率,和/或,通过数据集测试得到的检测准确率作为初始置信度信息;
采用目标函数调整初始置信度信息,获得调整后的置信度信息;
其中,采用目标函数调整初始置信度信息,包括:
对于触发状态为正的检测器,提升对应的初始置信度信息,对于触发状态为负的检测器,降低对应的初始置信度信息;
目标函数包括:
Z=1-[x1,x2,…xn]·[y’1,y’2,…,y’n]T
其中,Z为目标函数输出值;xn为每个检测器的触发状态,检测出漏洞的检测器的触发状态为1,未检测出漏洞的触发状态为-1;y’n为每个检测器的初始置信度信息;n为每个第一漏洞类型中分别对应的检测器数量。
实施例中,获取官方发布的检测准确率可以包括:直接向工具开发者获取检测器的准确率,并将该准确率作为对应检测器的初始置信度信息。这种方式依赖于开发者对其工具性能的客观评估,为每个检测器提供了一个基于专业经验的置信度。
实施例中,通过数据集测试得到的检测准确率可以包括:准备存在已知漏洞的智能合约数据集,使用检测器对数据集中的智能合约进行检测测试,将测试获得的准确率赋值为对应检测器的初始置信度信息。
在初始置信度信息的赋值过程中,为保证后续矩阵维度的计算正确,如果某个漏洞类型没有对应的检测器,则其触发状态和初始置信度信息均默认为0。
实施例中,获得初始置信度信息后,可以通过机器学习动态调整检测器对应的初始置信度信息,获得调整后的置信度信息。
具体地,可以设置目标函数,根据目标函数的输出调整每个检测器的初始置信度信息。其中,对于检测出漏洞的检测器,对初始置信度信息进行调高处理;对于未检测出漏洞的检测器,对初始置信度信息进行降低处理,以最小化目标函数输出值,从而提高调整后置信度信息的准确率。
示例性的,目标函数可以通过下述公式(3)表示:
Z=1-[x1,x2,…xn]·[y’1,y’2,…,y’n]T (3)
其中,Z为目标函数输出值;xn为每个检测器的触发状态,检测出漏洞的检测器的触发状态为1,未检测出漏洞的触发状态为-1;y’n为每个检测器的初始置信度信息;n为每个第一漏洞类型中分别对应的检测器数量。
基于此,通过采用不同的置信度信息赋值方式,综合利用了工具开发者的专业经验、实际测试数据的准确率和机器学习的动态调整,从而更全面、多角度地评估每个检测器的置信度信息。
基于上述实施例,在本公开提供的又一实施例中,上述步骤S540具体可以包括:
大语言模型通过检索增强生成RAG方式生成初始漏洞列表中每个漏洞分别对应的攻击合约;
在大语言模型中,使用攻击合约对待检测智能合约发起模拟攻击,获得模拟攻击结果;
在模拟攻击成立的情况下,保留初始漏洞列表中对应漏洞的检测结果文件;
在模拟攻击不成立的情况下,去除初始漏洞列表中对应漏洞的检测结果文件;
遍历验证初始漏洞列表中每个漏洞,获得目标漏洞列表。
实施例中,可以预先设置知识库a,在知识库a中维护每个漏洞类型对应的智能合约源码以及对应的攻击合约源码,每种漏洞类型的智能合约源码和对应的攻击合约源码各10篇以上。知识库a用于为大语言模型提供在生成攻击的过程中借助RAG方法获取相对应的信息,降低大语言模型生成攻击合约的误差。
为方便后续生成攻击合约,可以对知识库a中的内容进行分块处理,并将每个数据块转换成对应的向量嵌入块。
在一种可选的方式中,可以按照漏洞类型进行分块处理,使得每个数据块都用于表达一个具体的漏洞类型,有助于大语言模型进行检索。
在一种可选的方式中,可以按照智能合约进行分块处理,考虑对每个智能合约进行分块,每个数据块就代表了一个独立的智能合约,有助于大语言模型更好地理解每个智能合约的结构和漏洞情况。
在一种可选的方式中,可以按照攻击场景进行分块处理,由于知识库a中包含了攻击合约,可以考虑按照攻击合约中的每个攻击场景进行分块。分块后,每个数据块就代表了一个具体的攻击情境,有助于大语言模型理解攻击和漏洞之间的关联。
分块规则可以根据具体情况进行组合或调整,选择合适的分块策略可以使得向量嵌入块更好地捕捉知识库a中的信息,为大语言模型提供更有针对性的输入。
示例性的,维护好知识库a后,可以开始生成攻击指令。
攻击指令模块可以为:”’你是一个执行问答任务的智能合约漏洞验证助手。通过使用接下来我所给你的[Context]所述内容为参考,回答[Question]所示的问题。如果你不知道如何回答,就说:“我不知道”就行。
Question:{问题模板}
Context:{知识库中与问题上下文相似性高的内容}”’
问题模板:“对这篇智能合约就{vulnerability},生成对应的漏洞攻击合约,智能合约源码:{智能合约源码}”
其中,{}代表其中的内容需要依照不同场景替换,{vulnerability}在不同的验证轮次中依次枚举初始漏洞列表中所存在的漏洞;{知识库中与问题上下文相似性高的内容}这部分内容可以通过检索器组件对问题模板中该轮次的问题和知识库a进行语言匹配,在知识库a中获取问题模块中提及的漏洞类型、漏洞对应的智能合约源码和攻击合约分别对应的嵌入向量块。
进而,将生成的攻击指令输入到大语言模型中,大语言模型通过RAG方式,从预先设置的知识库a中检索相关信息,对检索到的信息进行整合、学习,生成攻击合约,并对待检测智能合约源码进行模拟攻击,获得模拟攻击结果。在本实施例中,大语言模型可以使用gpt-3.5-turbo-0613。
如果攻击成立,则表示待检测智能合约中存在对应的漏洞,保留初始漏洞列表中的对应漏洞的检测结果文件;如果攻击不成立,则表示待检测智能合约中不存在对应的漏洞,需要去除初始漏洞列表中对应漏洞的检测结果文件。
使用大语言模型遍历验证漏洞列表中的每个漏洞,依次生成对应的攻击合约,对待检测智能合约进行模拟攻击,逐一验证,获得验证后的漏洞列表。
基于此,通过维护知识库a,可以为模拟攻击提供必要的背景知识和验证准则,有助于提高攻击合约的生成质量并减少潜在的误导性信息。分块规则可以根据具体情况进行组合或调整,选择合适的分块策略可以使得向量嵌入块更好地捕捉知识库a中的信息,为大语言模型提供更有针对性的输入。
基于上述实施例,在本公开提供的又一实施例中,在大语言模型中,使用攻击合约对待检测智能合约发起模拟攻击,获得模拟攻击结果,具体可以包括:
获取初始漏洞列表中每个漏洞分别对应的攻击成立依据;
在大语言模型中创建第一账户和第二账户;
在第一账户中部署待检测智能合约,在第二账户中依次部署初始漏洞列表中每个漏洞对应的攻击合约;
通过第二账户向第一账户发起模拟攻击,并基于攻击成立依据获得模拟攻击结果。
实施例中,可以预先设置知识库b,在知识库b中维护每个漏洞类型对应的攻击成立依据。知识库b用于辅助大语言模型在虚拟执行源码合约和攻击合约时,提供攻击成立的判断依据。可以通过RAG方式从知识库b中获得每个漏洞分别对应的攻击成立依据。
实施例中,通过大语言模型创建存在于区块链上的第一账户和第二账户,在第一账户部署待检测智能合约的源码,在第二账户部署生成的攻击合约,并且设置攻击成立依据。
通过第二账户向第一账户发起模拟攻击,并根据攻击成立依据,获取大语言模型的模拟攻击结果,判断攻击是否成立。
基于此,通过维护知识库b,可以用于辅助大语言模型在虚拟执行源码合约和攻击合约时,提供攻击成立的判断依据。在大语言模型中对待检测智能合约进行模拟攻击,可以利用大语言模型覆盖面广的特性,覆盖更多待检测智能合约中的源码内容,发现待检测智能合约中的漏洞,降低漏洞的漏报率。
基于上述实施例,在本公开提供的又一实施例中,遍历验证初始漏洞列表中每个漏洞,获得目标漏洞列表,具体可以包括:
遍历验证初始漏洞列表中每个漏洞,获得验证后的漏洞列表;
采用大语言模型对验证后的漏洞列表进行自然语言处理,获得目标漏洞列表。
实施例中,使用大语言模型依次对初始漏洞列表中的每个漏洞进行模拟攻击,逐一验证,获得验证后的漏洞列表。大语言模型还可以通过RAG方式,针对验证后漏洞列表中的每个漏洞生成修改建议。进而,可以使用大语言模型对验证后的漏洞列表和修改建议进行自然语言通俗化处理,获得目标漏洞列表。
在该步骤中,自然语言通俗化处理可以提高漏洞列表和修改建议的可读性,有助于非专业读者更轻松地理解漏洞信息,从而提高漏洞修复过程的效率和准确性。
本公开示例性实施例中提供的一个或多个技术方案,通过整合多个检测工具,实现了对智能合约的多轮综合检测,从而提高了漏洞检测的全面性和准确性。通过对多个检测结果文件进行数据分析处理,得到初始漏洞列表,有助于综合考虑不同检测器的输出,提升漏洞识别的鲁棒性。在验证模块中,采用大语言模型进行漏洞验证,能够更全面地分析和理解漏洞,提供更准确的验证结果。最后,通过大语言模型对漏洞列表和修改建议进行通俗化处理,提高漏洞列表和修改建议的可读性。
因此,本公开示例性实施例中提供的智能合约的多重复合检测方法通过多个漏洞检测工具以及大语言模型的结合,可以解决单个检测工具漏洞覆盖率不广,大语言模型的漏洞检测准确率不高的技术问题。
上述主要从方法的角度对本公开实施例提供的方案进行了介绍。可以理解的是,为了实现上述功能,本公开示例性实施例的方法对应的装置包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本公开能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本公开的范围。
本公开实施例可以根据上述方法示例对服务器进行功能单元的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本公开实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,本公开示例性实施例提供一种智能合约的多重复合检测装置,该智能合约的多重复合检测装置可以为服务器或应用于服务器的芯片。图6为本公开一示例性提供的智能合约的多重复合检测装置的功能模块示意性框图。如图6所示,该智能合约的多重复合检测装置600包括:
数据获取模块610,用于获取待检测智能合约;
数据处理模块620,用于采用多个检测工具分别对所述待检测智能合约进行检测,获得每个检测工具分别生成的检测结果文件;
所述数据处理模块620,还用于对多个所述检测结果文件进行数据整合处理,获得初始漏洞列表;
所述数据处理模块620,还用于采用大语言模型验证所述初始漏洞列表,获得目标漏洞列表。
在本公开提供的又一实施例中,所述检测工具包括多个检测器;所述数据处理模块620,还用于获取多个检测器以及所述多个检测器分别关注的漏洞类型;按漏洞类型对所述多个检测器进行分类处理;采用所述多个检测工具分别对所述待检测智能合约进行检测,获得每个检测工具分别生成的检测结果文件;将多个所述检测结果文件分别保存至所述检测器对应的漏洞类型中。
在本公开提供的又一实施例中,所述数据处理模块620,还用于预设多个第一漏洞类型;在检测器关注的漏洞类型与所述第一漏洞类型相匹配的情况下,将对应的检测器分类到对应的第一漏洞类型中;在检测器关注的漏洞类型与所述第一漏洞类型不匹配的情况下,将对应的检测器分类到第二漏洞类型中。
在本公开提供的又一实施例中,所述数据处理模块620,还用于获取所述第一漏洞类型中每个检测器的触发状态和置信度信息;其中,在所述检测器检测出漏洞的情况下,触发状态赋值为正,在所述检测器未检测出漏洞的情况下,触发状态赋值为负;基于所述触发状态和所述置信度信息,计算每个所述第一漏洞类型对应的择优处理输出值;在所述择优处理输出值为正数的情况下,将对应的第一漏洞类型中的检测结果文件保存至初始漏洞列表;获取所述第二漏洞类型中的检测结果文件,并将所述第二漏洞类型中的检测结果文件保存至初始漏洞列表。
在本公开提供的又一实施例中,所述数据处理模块620,还用于获取官方发布的检测准确率,和/或,通过数据集测试得到的检测准确率作为初始置信度信息;采用目标函数调整所述初始置信度信息,获得调整后的所述置信度信息;其中,所述采用目标函数调整所述初始置信度信息,包括:对于触发状态为正的检测器,提升对应的初始置信度信息,对于触发状态为负的检测器,降低对应的初始置信度信息;
所述目标函数包括:
Z=1-[x1,x2,…xn]·[y’1,y’2,…,y’n]T
其中,Z为目标函数输出值;xn为每个检测器的触发状态,检测出漏洞的检测器的触发状态为1,未检测出漏洞的触发状态为-1;y’n为每个检测器的初始置信度信息;n为每个第一漏洞类型中分别对应的检测器数量。
在本公开提供的又一实施例中,所述数据处理模块620,还用于所述大语言模型通过检索增强生成RAG方式生成所述初始漏洞列表中每个漏洞分别对应的攻击合约;在所述大语言模型中,使用所述攻击合约对所述待检测智能合约发起模拟攻击,获得模拟攻击结果;在模拟攻击成立的情况下,保留所述初始漏洞列表中对应漏洞的检测结果文件;在模拟攻击不成立的情况下,去除所述初始漏洞列表中对应漏洞的检测结果文件;遍历验证所述初始漏洞列表中每个漏洞,获得所述目标漏洞列表。
在本公开提供的又一实施例中,所述数据处理模块620,还用于获取所述初始漏洞列表中每个漏洞分别对应的攻击成立依据;在所述大语言模型中创建第一账户和第二账户;在所述第一账户中部署所述待检测智能合约,在所述第二账户中依次部署所述初始漏洞列表中每个漏洞对应的攻击合约;通过所述第二账户向所述第一账户发起模拟攻击,并基于所述攻击成立依据获得所述模拟攻击结果。
在本公开提供的又一实施例中,所述数据处理模块620,还用于遍历验证所述初始漏洞列表中每个漏洞,获得验证后的漏洞列表;采用大语言模型对所述验证后的漏洞列表进行自然语言处理,获得所述目标漏洞列表。
图7为本公开一示例性提供的芯片的示意性框图。如图7所示,该芯片700包括一个或两个以上(包括两个)处理器701和通信接口702。通信接口702可以支持服务器执行上述方法中的数据收发步骤,处理器701可以支持服务器执行上述方法中的数据处理步骤。
可选的,如图7所示,该芯片700还包括存储器703,存储器703可以包括只读存储器和随机存取存储器,并向处理器提供操作指令和数据。存储器的一部分还可以包括非易失性随机存取存储器(non-volatile random access memory,NVRAM)。
在一些实施方式中,如图7所示,处理器701通过调用存储器存储的操作指令(该操作指令可存储在操作系统中),执行相应的操作。处理器701控制终端设备中任一个的处理操作,处理器还可以称为中央处理单元(centralprocessing unit,CPU)。存储器703可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。存储器703的一部分还可以包括NVRAM。例如应用中存储器、通信接口以及存储器通过总线系统耦合在一起,其中总线系统除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图7中将各种总线都标为总线系统704。
上述本公开实施例揭示的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器、数字信号处理器(digital signal processing,DSP)、ASIC、现成可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本公开实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本公开实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
本公开示例性实施例还提供一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器。所述存储器存储有能够被所述至少一个处理器执行的计算机程序,所述计算机程序在被所述至少一个处理器执行时用于使所述电子设备执行根据本公开实施例的方法。
本公开示例性实施例还提供一种存储有计算机程序的非瞬时计算机可读存储介质,其中,所述计算机程序在被计算机的处理器执行时用于使所述计算机执行根据本公开实施例的方法。
本公开示例性实施例还提供一种计算机程序产品,包括计算机程序,其中,所述计算机程序在被计算机的处理器执行时用于使所述计算机执行根据本公开实施例的方法。
图8为本公开一示例性提供的电子设备的结构框图。参考图8,现将描述可以作为本公开的服务器或客户端的电子设备800的结构框图,其是可以应用于本公开的各方面的硬件设备的示例。电子设备旨在表示各种形式的数字电子的计算机设备,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图8所示,电子设备800包括计算单元801,其可以根据存储在只读存储器(ROM)802中的计算机程序或者从存储单元808加载到随机访问存储器(RAM)803中的计算机程序,来执行各种适当的动作和处理。在RAM 803中,还可存储电子设备800操作所需的各种程序和数据。计算单元801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
电子设备800中的多个部件连接至I/O接口805,包括:输入单元806、输出单元807、存储单元808以及通信单元809。输入单元806可以是能向电子设备800输入信息的任何类型的设备,输入单元806可以接收输入的数字或字符信息,以及产生与电子设备的用户设置和/或功能控制有关的键信号输入。输出单元807可以是能呈现信息的任何类型的设备,并且可以包括但不限于显示器、扬声器、视频/音频输出终端、振动器和/或打印机。存储单元808可以包括但不限于磁盘、光盘。通信单元809允许电子设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据,并且可以包括但不限于调制解调器、网卡、红外通信设备、无线通信收发机和/或芯片组,例如蓝牙TM设备、WiFi设备、WiMax设备、蜂窝通信设备和/或类似物。
计算单元801可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元801的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(PU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元801执行上文所描述的各个方法和处理。上文所描述的各个方法均可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由ROM 802和/或通信单元809而被载入和/或安装到电子设备800上。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
如本公开使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机程序或指令。在计算机上加载和执行所述计算机程序或指令时,全部或部分地执行本公开实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、终端、用户设备或者其它可编程装置。所述计算机程序或指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机程序或指令可以从一个网站站点、计算机、服务器或数据中心通过有线或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是集成一个或多个可用介质的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,例如,软盘、硬盘、磁带;也可以是光介质,例如,数字视频光盘(Digital video disc,DVD);还可以是半导体介质,例如,固态硬盘(solid state drive,SSD)。
尽管结合具体特征及其实施例对本公开进行了描述,显而易见的,在不脱离本公开的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本公开的示例性说明,且视为已覆盖本公开范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本公开进行各种改动和变型而不脱离本公开的精神和范围。这样,倘若本公开的这些修改和变型属于本公开权利要求及其等同技术的范围之内,则本公开也意图包括这些改动和变型在内。

Claims (11)

1.一种智能合约的多重复合检测方法,其特征在于,所述方法包括:
获取待检测智能合约;
采用多个检测工具分别对所述待检测智能合约进行检测,获得每个检测工具分别生成的检测结果文件;
对多个所述检测结果文件进行数据整合处理,获得初始漏洞列表;
采用大语言模型验证所述初始漏洞列表,获得目标漏洞列表。
2.根据权利要求1所述的方法,其特征在于,所述检测工具包括多个检测器;所述采用多个检测工具分别对所述待检测智能合约进行检测,获得每个检测工具分别生成的检测结果文件,包括:
获取多个检测器以及所述多个检测器分别关注的漏洞类型;
按漏洞类型对所述多个检测器进行分类处理;
采用所述多个检测工具分别对所述待检测智能合约进行检测,获得每个检测工具分别生成的检测结果文件;
将多个所述检测结果文件分别保存至所述检测器对应的漏洞类型中。
3.根据权利要求2所述的方法,其特征在于,所述按漏洞类型对所述多个检测器进行分类处理,包括:
预设多个第一漏洞类型;
在检测器关注的漏洞类型与所述第一漏洞类型相匹配的情况下,将对应的检测器分类到对应的第一漏洞类型中;
在检测器关注的漏洞类型与所述第一漏洞类型不匹配的情况下,将对应的检测器分类到第二漏洞类型中。
4.根据权利要求3所述的方法,其特征在于,所述对多个所述检测结果文件进行数据整合处理,获得初始漏洞列表,包括:
获取所述第一漏洞类型中每个检测器的触发状态和置信度信息;其中,在所述检测器检测出漏洞的情况下,触发状态赋值为正,在所述检测器未检测出漏洞的情况下,触发状态赋值为负;
基于所述触发状态和所述置信度信息,计算每个所述第一漏洞类型对应的择优处理输出值;
在所述择优处理输出值为正数的情况下,将对应的第一漏洞类型中的检测结果文件保存至初始漏洞列表;
获取所述第二漏洞类型中的检测结果文件,并将所述第二漏洞类型中的检测结果文件保存至初始漏洞列表。
5.根据权利要求4所述的方法,其特征在于,所述获取所述第一漏洞类型中每个检测器的置信度信息,包括:
获取官方发布的检测准确率,和/或,通过数据集测试得到的检测准确率作为初始置信度信息;
采用目标函数调整所述初始置信度信息,获得调整后的所述置信度信息;
其中,所述采用目标函数调整所述初始置信度信息,包括:
对于触发状态为正的检测器,提升对应的初始置信度信息,对于触发状态为负的检测器,降低对应的初始置信度信息;
所述目标函数包括:
Z=1-[x1,x2,…xn]·[y’1,y’2,…,y’n]T
其中,Z为目标函数输出值;xn为每个检测器的触发状态,检测出漏洞的检测器的触发状态为1,未检测出漏洞的触发状态为-1;y’n为每个检测器的初始置信度信息;n为每个第一漏洞类型中分别对应的检测器数量。
6.根据权利要求1所述的方法,其特征在于,所述采用大语言模型验证所述初始漏洞列表,获得目标漏洞列表,包括:
所述大语言模型通过检索增强生成RAG方式生成所述初始漏洞列表中每个漏洞分别对应的攻击合约;
在所述大语言模型中,使用所述攻击合约对所述待检测智能合约发起模拟攻击,获得模拟攻击结果;
在模拟攻击成立的情况下,保留所述初始漏洞列表中对应漏洞的检测结果文件;
在模拟攻击不成立的情况下,去除所述初始漏洞列表中对应漏洞的检测结果文件;
遍历验证所述初始漏洞列表中每个漏洞,获得所述目标漏洞列表。
7.根据权利要求6所述的方法,其特征在于,所述在所述大语言模型中,使用所述攻击合约对所述待检测智能合约发起模拟攻击,获得模拟攻击结果,包括:
获取所述初始漏洞列表中每个漏洞分别对应的攻击成立依据;
在所述大语言模型中创建第一账户和第二账户;
在所述第一账户中部署所述待检测智能合约,在所述第二账户中依次部署所述初始漏洞列表中每个漏洞对应的攻击合约;
通过所述第二账户向所述第一账户发起模拟攻击,并基于所述攻击成立依据获得所述模拟攻击结果。
8.根据权利要求6所述的方法,其特征在于,所述遍历验证所述初始漏洞列表中每个漏洞,获得所述目标漏洞列表,包括:
遍历验证所述初始漏洞列表中每个漏洞,获得验证后的漏洞列表;
采用大语言模型对所述验证后的漏洞列表进行自然语言处理,获得所述目标漏洞列表。
9.一种智能合约的多重复合检测装置,其特征在于,包括:
数据获取模块,用于获取待检测智能合约;
数据处理模块,用于采用多个检测工具分别对所述待检测智能合约进行检测,获得每个检测工具分别生成的检测结果文件;
所述数据处理模块,还用于对多个所述检测结果文件进行数据整合处理,获得初始漏洞列表;
所述数据处理模块,还用于采用大语言模型验证所述初始漏洞列表,获得目标漏洞列表。
10.一种电子设备,其特征在于,包括:
处理器;以及,
存储程序的存储器;
其中,所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行根据权利要求1-8中任一项所述的方法。
11.一种非瞬时计算机可读存储介质,其特征在于,所述非瞬时计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行根据权利要求1-8中任一项所述的方法。
CN202311765424.2A 2023-12-21 2023-12-21 智能合约的多重复合检测方法、装置、设备及存储介质 Pending CN117725594A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311765424.2A CN117725594A (zh) 2023-12-21 2023-12-21 智能合约的多重复合检测方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311765424.2A CN117725594A (zh) 2023-12-21 2023-12-21 智能合约的多重复合检测方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN117725594A true CN117725594A (zh) 2024-03-19

Family

ID=90199567

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311765424.2A Pending CN117725594A (zh) 2023-12-21 2023-12-21 智能合约的多重复合检测方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN117725594A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118395457A (zh) * 2024-06-28 2024-07-26 北京安普诺信息技术有限公司 基于llm的asoc漏洞评估方法、装置、设备及介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118395457A (zh) * 2024-06-28 2024-07-26 北京安普诺信息技术有限公司 基于llm的asoc漏洞评估方法、装置、设备及介质
CN118395457B (zh) * 2024-06-28 2024-09-24 北京安普诺信息技术有限公司 基于llm的asoc漏洞评估方法、装置、设备及介质

Similar Documents

Publication Publication Date Title
US11868242B1 (en) Method, apparatus, and computer program product for predictive API test suite selection
EP4217893B1 (en) Systems and methods for triaging software vulnerabilities
US11128668B2 (en) Hybrid network infrastructure management
US11176257B2 (en) Reducing risk of smart contracts in a blockchain
EP3120281B1 (en) Dynamic identity checking
US20150220332A1 (en) Resolving merge conflicts that prevent blocks of program code from properly being merged
US12074912B2 (en) Dynamic, runtime application programming interface parameter labeling, flow parameter tracking and security policy enforcement
WO2019144549A1 (zh) 漏洞测试方法、装置、计算机设备和存储介质
CN111160749A (zh) 一种情报质量评估和情报融合方法及装置
US11720825B2 (en) Framework for multi-tenant data science experiments at-scale
US20210234833A1 (en) Application firewalls based on self-modeling service flows
CN111294347B (zh) 一种工控设备的安全管理方法及系统
CN115061874B (zh) 日志信息验证方法、装置、设备及介质
CN110363121A (zh) 指纹图像处理方法及装置、存储介质和电子设备
CN117725594A (zh) 智能合约的多重复合检测方法、装置、设备及存储介质
US20230196195A1 (en) Identifying, or checking integrity of, a machine-learning classification model
CN113297583B (zh) 漏洞风险分析方法、装置、设备及存储介质
CN114546256A (zh) 从时间序列数据导出的用于kpi的基于数据质量的置信度计算
CN118567993A (zh) 异常识别方法、模型训练方法、装置、设备、介质和产品
US11704222B2 (en) Event log processing
US20170149831A1 (en) Apparatus and method for verifying detection rule
CN115809466B (zh) 基于stride模型的安全需求生成方法、装置、电子设备及介质
US11941115B2 (en) Automatic vulnerability detection based on clustering of applications with similar structures and data flows
KR102465307B1 (ko) 화이트 리스트 생성 방법 및 이를 수행하는 사용자 단말, 컴퓨터 판독 가능한 기록 매체 및 컴퓨터 프로그램
CN116010951A (zh) 电力区块链智能合约安全检测方法、装置、设备及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination