一种基于智能合约的源代码漏洞检测系统的制作方法

文档序号:41308667发布日期:2025-03-19 14:17阅读:6来源:国知局
一种基于智能合约的源代码漏洞检测系统的制作方法

本发明涉及区块链,特别是针对智能合约源代码的安全性分析与漏洞检测的。


背景技术:

1、随着区块链技术的快速发展,智能合约作为区块链上的自动执行合约,其安全性问题日益凸显。源代码中的漏洞可能导致资产损失、数据泄露等严重后果。因此,开发一种高效、准确的智能合约源代码漏洞检测系统显得尤为重要。


技术实现思路

1、本发明提供一种基于智能合约的源代码漏洞检测系统,用以解决源代码中的漏洞可能导致资产损失、数据泄露等严重后果的缺陷。

2、根据本发明第一方面提供的一种基于智能合约的源代码漏洞检测系统,包括:

3、代码解析模块,用于接收网络中广播的第一合约包,并提取所述第一合约包中的源代码,所述第一合约包围基于所述智能合约建立的广播数据,所述源代码为所述第一合约包中待检测代码;

4、漏洞检测模块,用于对接收到的所述源代码进行漏洞检测,并生成检测结果;

5、漏洞报告模块,用于根据所述检测结果生成漏洞报告,基于所述漏洞报告生成第二合约包,并在所述网络中广播所述第二合约包。

6、根据本发明的一种实施方式,所述接收网络中广播的第一合约包,并提取所述第一合约包中的源代码,具体包括:

7、获取所述第一合约包的第一哈希指针,所述第一哈希指针指向所述第一合约包的数据接入端;

8、基于所述第一哈希指针,提取所述第一合约包中的源代码和第二哈希指针,所述第二哈希指针指向所述源代码的上一次漏洞检测。

9、具体来说,本实施例提供了一种提取所述第一合约包中的源代码的实施方式,第一哈希指针直接指向第一合约包的数据接入端,使得系统能够迅速定位到合约包的位置,提高了数据访问的效率;通过第二哈希指针指向源代码的上一次漏洞检测记录,系统可以方便地追溯源代码的历史版本及其安全状态,有助于快速响应和处理潜在的安全问题。

10、可以理解地,第二哈希指针不仅提供了源代码上一次漏洞检测过程中的信息,还建立了一个连续的安全检查链。这种机制有助于确保源代码在每次修改后都经过严格的安全审查,减少了安全漏洞被利用的风险。

11、需要说明的是,在分布式系统中,利用哈希指针可以实现数据的去重存储。如果两个合约包的数据接入端哈希值相同,则它们可以共享相同的存储资源,从而节省存储空间,并且在数据传输过程中,接收方可以通过比较哈希指针来验证数据的完整性和正确性,而无需传输整个数据块。这有助于减少数据传输的带宽消耗和时间成本。

12、进一步地,哈希指针通过生成数据的哈希值来唯一标识数据块,而哈希值本身对数据的变化非常敏感。因此,第一哈希指针确保了第一合约包的数据接入端在传输或存储过程中未被篡改,保证了数据的完整性。

13、根据本发明的一种实施方式,所述对接收到的所述源代码进行漏洞检测,具体包括:

14、基于所述第一哈希指针和所述第二哈希指针,获取所述源代码的语法结构、语义逻辑、复杂度和循环架构;

15、基于所述语法结构、所述语义逻辑、所述复杂度和所述循环架构,对所述源代码进行静态代码漏洞检测。

16、具体来说,本实施例提供了一种对接收到的所述源代码进行漏洞检测的实施方式,通过对源代码的语法结构、语义逻辑、复杂度和循环架构进行深入分析,可以更加全面地理解代码的功能、结构和潜在问题。这种深入的分析为后续的漏洞检测提供了坚实的基础。

17、可以理解地,与传统的基于规则或模式的漏洞检测方法相比,基于源代码深入分析的检测方法能够更准确地识别出潜在的漏洞。因为它不仅考虑了代码的表面特征,还考虑了代码的内在逻辑和结构。

18、进一步地,通过对代码的全面分析,可以减少因规则不匹配或模式遗漏而导致的误报和漏报问题。这提高了漏洞检测的准确性和可靠性。

19、在可能的实施例中,静态代码漏洞检测能够在代码编写和测试的早期阶段就发现潜在的漏洞,从而避免漏洞在生产环境中被利用。这有助于减少安全事件的发生和相关的损失,除了发现漏洞外,对源代码的深入分析还可以揭示代码中的性能瓶颈、冗余代码和不良编程实践等问题。这有助于开发人员优化代码质量,提高软件的性能和可维护性。

20、进一步地,静态代码漏洞检测通常可以自动化进行,减少了开发人员手动检查代码的工作量。这有助于开发人员将更多精力集中在代码设计和实现上,提高开发效率。

21、根据本发明的一种实施方式,所述对接收到的所述源代码进行漏洞检测,具体包括:

22、基于所述第一哈希指针和所述第二哈希指针,获取所述源代码的程序运行环境、标准运行指标和安全架构;

23、基于所述程序运行环境、所述标准运行指标和所述安全架构,对所述源代码进行动态代码漏洞检测,所述动态代码漏洞检测至少包括所述源代码在运行过程中的内存泄漏、访问违例和资源泄露。

24、具体来说,本实施例提供了一种对接收到的所述源代码进行漏洞检测的实施方式,通过第一哈希指针和第二哈希指针,可以精确地重建源代码的运行环境,包括操作系统、库文件、依赖项等,确保测试环境与生产环境的一致性,在模拟的运行环境中,可以对各种边界条件和异常情况进行精细控制,以触发潜在的漏洞。

25、需要说明的是,与静态分析相比,动态代码漏洞检测更接近于真实的运行环境,因此能够发现更多实际运行中的问题,并且通过模拟实际运行,可以排除一些静态分析中可能产生的误报,并发现静态分析遗漏的潜在漏洞。

26、在可能的实施例中,动态代码漏洞检测能够在程序运行时实时监控其内存使用情况、资源访问模式等,从而发现静态分析难以捕捉的问题。

27、在可能的实施例中,通过模拟源代码的完整运行过程,可以检测到内存泄漏、访问违例(如越界访问、空指针解引用)、资源泄露(如文件句柄、网络连接未关闭)等动态问题。

28、根据本发明的一种实施方式,所述对接收到的所述源代码进行漏洞检测,具体包括:

29、基于所述第一哈希指针和所述第二哈希指针,获取所述源代码的污点信息,所述污点信息包括所述源代码中的污点源和污点汇聚点;

30、基于所述污点信息,对所述源代码中的疑似污点进行标记,并获取所述源代码的第一污点特征和第二污点特征,所述第一污点特征指向所述疑似污点源在所述源代码中的数据传播关系,所述第二污点源指向所述疑似污点源在所述源代码中得控制传播关系;

31、基于所述第一污点特征和所述第二污点特征,对所述源代码进行污点漏洞检测。

32、具体来说,本实施例提供了一种对接收到的所述源代码进行漏洞检测的实施方式,通过污点分析,系统能够精准地识别出源代码中的污点源和污点汇聚点,即潜在的漏洞来源和漏洞被利用的位置;第一污点特征和第二污点特征分别揭示了污点在数据传播和控制传播中的路径,有助于系统深入理解漏洞的上下文环境和传播机制。

33、进一步地,通过哈希指针来识别和排除重复的源代码处理,避免了对相同代码的重复检测,从而优化了资源利用,污点分析能够引导系统聚焦于源代码中的关键区域(即污点源和污点汇聚点),减少了对无关代码的检测,提高了检测效率。

34、可以理解地,通过污点信息来对所述源代码进行污点漏洞检测,能够在早期发现漏洞,污点漏洞检测能够在代码开发早期就发现潜在的漏洞,为开发者提供及时的修复建议,从而降低软件发布后的安全风险,并且基于污点分析的漏洞检测结果,开发者可以针对性地加强软件的防御机制,提高软件对恶意攻击的抵抗力。

35、根据本发明的一种实施方式,所述提取所述第一合约包中的源代码和第二哈希指针,具体包括:

36、基于所述第二哈希指针,确定在所述源代码中存在测试探针,且所述测试探针用于检测所述源代码漏洞的情况下,获取所述测试探针的前一次漏洞检测结果,并基于所述前一次漏洞检测结果,执行本次所述源代码的漏洞检测;

37、基于所述第二哈希指针,确定在所述源代码中不存在测试探针的情况下,对所述源代码插入测试探针,并根据插入的所述测试探针执行本次所述源代码的漏洞检测。

38、具体来说,本实施例提供了一种提取所述第一合约包中的源代码和第二哈希指针的实施方式,通过检查源代码中是否已存在测试探针,系统能够动态地调整漏洞检测的策略。这种灵活性使得检测过程更加智能,能够适应不同的代码库和检测需求;在不存在测试探针的情况下,系统能够自动插入新的测试探针,这为检测过程提供了更多的可能性和灵活性。

39、需要说明的是,当确定源代码中存在测试探针且这些探针用于检测漏洞时,通过获取这些探针的前一次漏洞检测结果,可以避免重复检测已知无漏洞的部分,从而显著提高检测效率。

40、可以理解地,对于不存在测试探针的源代码,通过插入新的测试探针并执行检测,可以确保源代码的每一个部分都被覆盖到,从而提高检测的全面性和准确性;新插入的测试探针可能针对特定的漏洞类型或代码区域进行设计,能够更深入地检测潜在的安全问题。

41、根据本发明的一种实施方式,所述接收网络中广播的第一合约包,并提取所述第一合约包中的源代码,具体包括:

42、基于所述网络中存在至少两个指向同一所述第一合约包的数据接入端的所述第一哈希指针,获取每个所述第一哈希指针指向的所述第一合约包中的第二哈希指针;

43、根据所述第二哈希指针提取每个所述第一合约包中所述源代码的上次漏洞检测信息,所述漏洞检测信息至少包括所述源代码的漏洞检测类型和漏洞检测覆盖率;

44、基于所述漏洞检测信息,确定至少两个所述第一哈希指针的优先级结果,根据所述优先级结果获取对应的所述第一哈希指针,并丢弃其余所述第一哈希指针。

45、具体来说,本实施例提供了一种接收网络中广播的第一合约包,并提取所述第一合约包中的源代码的实施方式,通过检测网络中存在至少两个指向同一第一合约包的数据接入端的第一哈希指针,系统能够识别出潜在的数据冗余或重复接入尝试;通过获取每个第一哈希指针指向的第一合约包中的第二哈希指针,并进一步提取源代码的上次漏洞检测信息,系统能够验证不同数据源之间的一致性,确保后续操作的准确性。

46、进一步地,通过确定优先级并仅选择优先级最高的第一哈希指针进行后续处理,系统能够避免对相同数据的重复处理,从而节省计算资源和时间;丢弃其余的第一哈希指针,减少了不必要的计算和存储需求,使得系统能够更高效地处理有效的数据。

47、可以理解地,通过漏洞检测信息(如漏洞检测类型和覆盖率)来确定第一哈希指针的优先级,系统能够更准确地评估每个数据源的重要性和可靠性。

48、进一步地,基于优先级的决策过程有助于系统在选择处理哪个数据接入端时做出更明智的决策,从而提高整个处理流程的效率和准确性。

49、根据本发明的一种实施方式,所述接收网络中广播的第一合约包,并提取所述第一合约包中的源代码,具体包括:

50、在提取所述第一合约包中的所述源代码后,接收到所述网络中广播的指向同一所述第一合约包的所述第一哈希指针,丢弃所述第一哈希指针,并向所述网络中广播所述第一合约包进入编译状态的提示信息。

51、具体来说,本实施例提供了一种接收网络中广播的第一合约包,并提取所述第一合约包中的源代码的实施方式,通过丢弃已经处理过的第一哈希指针,系统避免了对同一合约包的重复提取和编译过程,从而减少了计算资源和时间的浪费;确保每个合约包只被处理一次,使得系统能够更高效地处理其他待处理的合约包。

52、可以理解地,向网络广播第一合约包进入编译状态的提示信息,可以让其他网络节点或用户及时了解合约包的处理进度,提高了系统的响应性和实时性;对于等待合约包处理的用户而言,这种即时的状态更新有助于他们更好地规划自己的操作,提升用户体验。

53、进一步地,通过广播编译状态的提示信息,有助于网络中的其他节点同步更新该合约包的状态信息,从而维护整个网络的一致性和协调性;避免了因多个节点同时处理同一合约包而导致的资源冲突或数据不一致问题。

54、更进一步地,在高并发的网络环境下,这种处理机制能够有效地分散处理压力,避免单点过载,提高系统的可扩展性,即使在网络中存在部分节点故障或延迟,系统也能够通过广播机制确保其他节点能够及时获取合约包的处理状态,增强了系统的健壮性。

55、根据本发明的一种实施方式,所述基于所述漏洞报告生成所述第二合约包之前,具体包括:

56、在所述网络中接收到所述第一合约包进入编译状态的提示信息的情况下,停止对所述源代码的漏洞检测。

57、具体来说,本实施例提供了一种基于所述漏洞报告生成所述第二合约包之前的实施方式,当合约包已经进入编译状态时,继续对其进行漏洞检测可能会与编译过程产生资源冲突,如内存、cpu等资源的使用。停止检测可以避免这种冲突,确保编译过程的顺利进行,并通过合理分配资源,确保编译和漏洞检测等任务能够高效、有序地完成,从而提高整个系统的处理效率。

58、进一步地,通过接收编译状态的提示信息,系统能够实时了解合约包的处理状态,从而与网络中的其他节点保持同步。这种同步性有助于增强系统的协调性和一致性。

59、更进一步地,在分布式系统中,节点之间的通信和协作至关重要。及时接收和处理编译状态的提示信息可以减少因信息不对称而导致的误解和冲突。

60、可以理解地,对于用户而言,及时了解合约包的处理状态可以减少不必要的等待时间。当知道合约包正在编译时,用户可以专注于其他任务或等待编译完成后再进行后续操作。

61、在可能的实施例中,通过接收编译状态的提示信息并据此调整处理流程(如停止漏洞检测),系统能够形成一个闭环的反馈机制。这种机制有助于系统不断优化自身的处理逻辑和性能表现。

62、在可能的实施例中,基于实时数据(如编译状态的提示信息)来指导决策过程(如停止漏洞检测),使得系统更加数据驱动和智能化。

63、根据本发明第二方面提供的一种计算机程序产品,其包括存储有计算机程序的非暂态机器可读介质,所述计算机程序存储于上述的一种基于智能合约的源代码漏洞检测系统中。

64、本发明中的上述一个或多个技术方案,至少具有如下技术效果之一:本发明提供的一种基于分布式账本技术的源代码完整性检测系统,通过自动化的代码解析和漏洞检测流程,系统能够快速地处理大量合约包中的源代码,显著提高了代码处理和漏洞检测的效率,自动化处理减少了人为干预,降低了因人为疏忽或错误导致的漏检、误报等问题。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1