本技术涉及网络安全,尤其涉及一种代码分析方法、装置、设备、计算机可读存储介质、计算机程序产品。
背景技术:
1、目前随着互联网的迅猛发展,网络环境面临的网络安全威胁和攻击也越来越多。如何保证网络环境的安全、降低黑客攻击的威胁成为网络安全领域一个热议的话题。其中,蜜罐(honeypot)作为一种应对未知的网络攻击、保护网络资产安全的方案也受到了业界极大的关注。
2、蜜罐是一种在互联网上运行的诱骗系统,该诱骗系统通过模拟一个或多个易受攻击的主机,给攻击者提供一个容易攻击的目标,如此可以降低真实系统(例如真实的应用系统)收到的威胁,并且通过对网络攻击流量进行分析,了解攻击者的攻击意图、使用的工具和攻击方案以及真实环境中存在的漏洞,然后通过修复漏洞提高真实环境的安全能力。
3、然而,上述方法对于漏洞的分析粒度较粗,导致漏洞分析、研究、修复进展缓慢,漏洞无法及时得到有效处理,难以满足业务对安全的需求。
技术实现思路
1、本技术提供了一种代码分析方法,该方法通过获取代码执行信息,基于多条代码执行信息获得代码执行链路,通过更全面的攻击信息可以实现较为全面的、细粒度的代码分析,从而确定疑似漏洞触发点,加快漏洞分析、研究、修复的进度,漏洞能够及时得到有效处理,提升了安全能力,满足了业务需求。本技术还提供了对应的代码分析装置、计算机集群、计算机可读存储介质以及计算机程序产品。
2、第一方面,本技术提供了一种代码分析方法。该方法可以由代码分析装置执行。代码分析装置可以是软件装置,该软件装置部署在计算机集群中,计算机集群运行该软件装置的程序代码,从而执行本技术的软件分析方法。在一些实施例中,代码分析装置也可以是具有代码分析功能的硬件装置,例如可以是具有代码分析功能的计算机集群。
3、具体地,代码分析装置获取蜜罐应用被攻击时的多条代码执行信息,该蜜罐应用为用于诱导攻击者攻击的应用,然后基于多条代码执行信息,获得该蜜罐应用被攻击时的代码执行链路,接着从代码执行链路中确定疑似漏洞触发点,并向用户呈现疑似漏洞触发点。
4、该方法不仅可以收集网络攻击流量和攻击行为,还可以收集代码执行信息,基于多条代码执行信息获得代码执行链路,通过更全面的攻击信息可以实现较为全面的、细粒度的代码分析,从而确定疑似漏洞触发点,加快漏洞分析、研究、修复的进度,漏洞能够及时得到有效处理,提升了安全能力,满足了业务需求。
5、在一些可能的实现方式中,代码分析装置还可以向用户呈现:所述代码执行链路,以及所述疑似漏洞触发点在所述代码执行链路中的位置。具体地,代码分析装置可以通过标注框在代码执行链路中标识出疑似漏洞触发点。如此可以方便用户快速定位疑似漏洞触发点,进而快速决策漏洞修复采用的修复方案。
6、在一些可能的实现方式中,代码分析装置还可以向用户呈现所述疑似漏洞触发点的修复方案。具体地,代码分析装置可以基于漏洞修复模型确定疑似漏洞触发点的修复方案,然后向用户呈现该疑似漏洞触发点的修复方案。其中,漏洞修复模型可以通过历史数据训练得到。在一些实施例中,代码分析装置获取历史数据,该历史数据包括历史漏洞触发点和该历史漏洞触发点的修复方案,根据上述历史数据构造样本数据,该样本数据为监督样本,其中,历史漏洞触发点的修复方案为监督样本中的监督信息,然后代码分析装置可以根据上述样本数据,采用监督学习算法训练得到漏洞修复模型。相应地,代码分析装置可以将疑似漏洞触发点输入训练好的漏洞修复模型,获得疑似漏洞触发点的修复方案。
7、该方法通过向用户呈现疑似漏洞触发点的修复方案,减少了用户确定修复方案所需要花费的时间和精力,提高了漏洞修复的效率。
8、在一些可能的实现方式中,所述蜜罐应用的代码中插入有数据收集模块,所述数据收集模块用于收集所述蜜罐应用被攻击时的代码执行信息。数据收集模块可以是收集代码执行信息的代码段,包括但不限于赋值语句或采集代码执行信息的函数调用。
9、该方法通过代码插桩实现采集蜜罐应用被攻击时的代码执行信息,相较于传统方式,该方法收集的攻击信息更为全面,基于全面的攻击信息进行代码分析,提高了分析结果的准确度。
10、在一些可能的实现方式中,所述蜜罐应用中插入有所述数据收集模块的代码为以下的一种或多种:
11、数据库操作语句、函数调用语句、命令执行语句、网络通信语句、身份认证语句或文件操作语句。
12、该方法通过在不同代码块分别插桩,以收集相应位置的代码执行信息,从而可以收集较为全面、精准的代码执行信息,为代码分析奠定基础。
13、在一些可能的实现方式中,所述代码执行信息包括执行单元标识、执行链路标识和父执行单元标识。其中,执行单元标识用于标识蜜罐应用的执行单元。执行单元可以是是代码的执行单位,通常与代码逻辑结构中的逻辑单元对应。例如,一个执行单元可以对应一个数据库操作语句,或者对应一个文件操作语句。对于一个执行单元而言,其父执行单元可以是调用该执行单元的执行单元。例如,执行单元b调用执行单元a,则执行单元b为执行单元a的父执行单元。执行链路标识用于标识蜜罐应用的执行链路。其中,执行链路也可以称作执行路径,该执行路径包括蜜罐应用在本次执行过程中所执行的执行单元以及执行单元之间的时序关系。
14、在该方法中,执行链路标识、执行单元标识和父执行单元标识可以用于构建代码执行链路,从而为确定疑似漏洞触发点提供帮助。
15、在一些可能的实现方式中,代码分析装置可以根据所述多条代码执行信息的执行链路标识,获得具有相同执行链路标识的多条代码执行信息,然后根据具有相同链路执行标识的多条代码执行信息的执行单元标识和父执行单元标识,将具有相同链路执行标识的多条代码执行信息对应的多个执行单元连接,获得所述蜜罐应用被攻击时的代码执行链路。例如,一条代码执行信息中执行单元标识为128,父执行单元标识为123,另一条代码执行信息中执行单元标识为131,父执行单元标识为128,则可以将上述两条代码执行信息对应的执行单元连接,以此类推,代码分析装置将关联的执行单元连接,从而获得代码执行链路。通过将代码执行链路与期望的代码执行链路比较可以快速确定疑似漏洞触发点,加快漏洞分析、研究、修复的进度,漏洞能够及时得到有效处理,提升了安全能力,满足了业务需求。
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、本技术在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。