基于可准许活动规则确定可准许活动的制作方法

文档序号:11635296阅读:304来源:国知局
基于可准许活动规则确定可准许活动的制造方法与工艺



背景技术:

软件安全测试被用来识别应用程序(诸如web应用程序)中的漏洞。应用程序是攻击者青睐的目标。网络安全和安全测试提供一些防御,但是这些类型的测试可能遗漏一些恶意活动(例如,一些零日攻击)。

附图说明

下面的详细描述参考附图,在附图中:

图1和图2是根据各种示例的用于确定和/或使用描述应用程序的可准许活动的一组规则的计算系统的框图;

图3是根据一个示例的用于确定和/或实施描述应用程序的可准许活动的一组规则的方法的流程图;

图4是根据一个示例的能够提供描述应用程序的可准许活动的一组规则的种子信息并且实施该组规则的计算设备的框图;

图5是根据一个示例的用于生成描述应用程序的可准许活动的规则的方法的流程图;以及

图6是根据一个示例的能够基于来自监视应用程序的代理的种子信息来生成描述应用程序的可准许活动的一组规则的计算设备的框图。

具体实施方式

web应用程序是运行在web浏览器上的软件。访问由web应用程序服务器提供。web应用程序由于web浏览器的流行而变得流行,web浏览器可以被用作应用程序的客户端。然而,web应用程序是各种攻击者的目标。

随着企业应用程序的数量和复杂度的增加,漏洞利用(exploit)的攻击面增大,使得企业被暴露。保护应用程序的传统方法可能花费大量的时间来实施,并且其专注于处于开发中的软件。这些保护动作并不保护在产品中运行的应用程序。另外,由于大多数成功的破坏发生在应用层,因此明显的是,安装简单的外围防御来保护产品软件缺乏有效性。

运行时应用程序自我保护(rasp)解决方案以及web应用程序防火墙(waf)受制于为手动微调解决方案以保护免受攻击并使正常的用户流量通过而花费的时间。手动微调给解决方案添加了大量的开销,并使解决方案容易出现人为错误。产生这样的错误可能导致阻止人们使用解决方案,或者反之亦然,让攻击通过并且因此解决方案被破坏。

因此,本文中的各种实施例描述一种方法,该方法防止应用程序内的攻击,同时降低对手动微调该方法的需求。运行时分析技术被用来监视运行时环境中的活动,以检测并防止实时攻击。微调rasp解决方案考虑到表征不良流量是什么样的以及良好的流量是什么样的。由于存在已知的攻击向量,因此rasp解决方案可以通过合并这些已知的攻击向量(黑名单)来开始。

然而,目前并非所有的不良攻击向量都是已知的,因此更稳健的解决方案将被用来表征良好的流量(白名单)。这可以附加于其他安全机制被执行,或者被独立地执行。这种方法的挑战是,良好的流量趋向于在应用程序之间不同。安全分析师可以以手动尝试的方式来试图表征良好的流量,并且在正常情况下,分析师通常将通过查看将得到什么样的趋势来这样做。

使这自动化可以通过基于训练数据表征良好的流量来完成。为此,可以使用机器学习。具体地,k-均值聚类可以结合密度估计来使用。当提供足够大的样本集合并且数据收敛时,k个簇将可用,该k个簇可以被用来检查引入的流量防范。k均值聚类是用于向量量化的方法,其允许通过原型分布向量对概率密度函数进行建模。k均值聚类方法适用于将n个观察结果(observation)(在这种情况下,其将是应用程序的正常使用)划分为具有类似行为的k个簇。这里,每个观察结果属于具有最接近的“均值”的簇。

这些观察结果可以来自于应用程序编程接口(api),该应用程序编程接口由运行在包括web应用程序的一个或多个服务器上的运行时代理监视。在一些示例中,应用程序可以被实施使得应用程序被安装在多个服务器上,并且负载平衡器可以被用来在运行应用程序的服务器之间提供平衡负载。执行可能是攻击者的目标的动作(action)的api可以被监视以得到观察结果。用来查看观察结果的api的示例包括调用执行查询的api、导致事物被呈现在web浏览器中的api等。

在一个示例中,要防范的漏洞是结构化查询语言(sql)注入。在该示例中,针对数据库执行的每个查询可以被记录,并且当足够的训练数据可用时,通过聚类算法来处理数据。在k均值聚类方法的示例中,聚类算法的最终结果将是包含训练数据的k个簇。

一旦簇可用,就可以利用密度估计来生成规则,该规则可以被用于到应用程序的引入流量,以寻找异常。对于该给定的示例,针对数据库执行的每个查询将首先被检查,以查看其是否是异常。如果是异常,则可以采取默认动作来保护应用程序免于针对数据库执行异常查询。如本文中所描述的,关于查询以及其他api的信息可以被用来帮助确定动作是否是异常,从而帮助保护应用程序。

如上所述,解决方案基于正常流量具有某些特征并且正常流量是进入的请求中的大多数的事实。另一方面,攻击通常不经常出现,并且具有与正常流量不同的特征。

该解决方案可以被用于各种可能的应用程序漏洞,诸如sql注入、跨站点脚本(xss)、命令注入等。由于它作用于应用程序本身的api,因此相比于使用waf,运行时代理可以提供用于生成规则的附加背景。

如本文中所描述的,在本文中被称为运行时代理的软件程序被用来察看由应用程序执行的内部操作。软件可以由硬件执行。运行时代理可以确定应用程序的操作以及它是如何运转的,并且将该信息提供给规则引擎。运行时代理也允许检查对从规则引擎接收的规则的未来的api调用。

图1和图2是根据各种示例的用于确定和/或使用描述应用程序的可准许活动的一组规则的计算系统的框图。根据图1,计算系统100可以包括服务器110a、数据库120和规则引擎130。服务器可以包括应用程序142和运行时代理引擎144。进一步,根据图2,系统100可以进一步包括其他服务器110b-110n以及将服务器110连接到设备170a-170n的通信网络160。此外,服务器110a可以进一步包括存储器146、至少一个处理器148和/或输入/输出接口150。相应的设备110a-110n、170a-170n可以是笔记本计算机、台式计算机、服务器、工作站或能够执行所记载的功能的任何其他计算设备。在某些示例中,服务器140是可以通过计算机网络响应请求以提供或帮助提供网络服务的系统。设备之间的通信可以使用诸如超文本传输协议(http)或其他通信过程的请求-响应协议来进行。进一步,规则引擎130和/或数据库120可以被实施为计算设备。

服务器110a可以包括应用程序142。应用程序142可以由设备170(例如,客户端)使用。如上所述,应用程序142可以是web应用程序,例如可以是可由计算机执行的web浏览器中的软件。web应用程序可以以浏览器支持的编程语言(诸如javascript、超文本标记语言(html)、级联样式表(css)等)来创建。进一步,web应用程序框架(例如,.net,javaee等)可以被用来实施web应用程序。web应用程序的示例包括电子邮件应用程序、地图和导航应用程序、银行网站、交易网站、新闻网站、论坛等。应用程序142可以访问一个或多个数据库120。

如上所述,应用程序142可以以任何合适的基于web的计算机语言(诸如java或.net及其他等)来编码。应用程序142可以在诸如struts、struts2、asp.netmvc、oracleweblogic和springmvc等的合适软件框架内操作。软件框架包括提供通用功能的一组共用代码模块,其可以通过用户代码被选择性地覆盖或专门化,以提供特定的功能。应用程序142可以被配置为执行java虚拟机(jvm)、公共语言运行时(clr)或其他运行时环境的一个或多个实例。由软件框架或运行时环境的共用代码模块提供的编程指令可以被称为容器代码。

应用程序142可以包括用于实现服务器110与设备170、数据库120和/或规则引擎130之间的通信的网络接口。网络接口暴露可以提供对应用程序142的访问,但是也暴露应用程序142的攻击面。应用程序142通过网络接口与其他设备之间的通信可以通过从设备170向应用程序142发布的http请求以及从应用程序142向设备170发布的http响应来进行。以应用程序142为目标的请求可以被称为应用程序请求,并且从应用程序142接收的响应可以被称为应用程序响应。在一些示例中,通信包括应用程序142与设备170之间的通信以及与其他设备(例如数据库120、其他服务器10b0-110n、规则引擎130等)的通信。

应用程序142可以耦接到文件系统、数据库120和由应用程序142使用的其他资源。文件系统可以包括由应用程序142使用的数据和程序,以及可能被用户请求的数据,例如http页面、软件程序、媒体文件等。

运行时代理引擎144可以在应用程序142的执行环境内操作,并且可以访问由应用程序142执行的内部操作。例如,在某些示例中,运行时代理引擎144可以通过在各种程序点处注入诸如java类的附加代码来修改应用程序142的字节码。所注入的代码充当观察应用程序142的监视器。所注入的监视器代码可以位于应用程序142中的策略程序点处,例如,执行诸如读取url参数、写入到文件系统、执行查询、使得呈现到web浏览器等特定操作的应用程序编程接口(api)调用。每当应用程序142中的这样的程序点被执行,监视器就调用由运行时代理引擎144提供的服务,以记录由应用程序142执行的操作。运行时代理引擎可以耦接到缓冲器,缓冲器用于存储已经收集的有关应用程序142的内部操作的信息。缓冲器可以被用来存储已经被收集的数据。缓冲器被存储在诸如硬盘驱动器、固态驱动器等的非易失性存储介质中。缓冲器中的信息可以被传输。例如,由运行时代理引擎144收集的信息可以被发送到规则引擎130。

运行时代理引擎144也可以包括用于通过网络实现运行时代理引擎144与规则引擎130之间的通信的附加网络接口。

可以利用各种机制来保护应用程序142、服务器110和/或数据库120。一种这样的保护可以包括使用运行时代理引擎144来监视应用程序142并且提供动态保护。运行时代理引擎144可以被配置为监视特定类型的活动。例如,运行时代理引擎144可以监视应用程序142的多个api,以生成api的使用信息。这可以被存储在缓冲器中并且被提供给规则引擎130(例如,经由网络连接)。在一些示例中,运行时代理引擎144可以具有规则引擎130的地址信息,并且可以被配置为通过访问服务器的组件(例如,经由应用程序142的api或另一方法)来提供该信息。此外,应用程序可以在多个服务器110上执行,并且规则引擎130可以接收来自多个应用程序实例的使用信息。可以提供一时间段内的使用信息。该时间段可以是用来提供关于应用程序142的基线信息量的时间量。

如上所述,这种方法的观察结果中的一个观察结果是应用程序142以特定的方式正常工作的结果。该时间段可以允许信息的样本大小足够大以确定应用程序142的正常活动。

规则引擎130可以根据使用信息生成规则,并且经由更新将规则发送到运行时代理引擎144。规则可以使用机器学习方法来生成。在一个示例中,规则引擎130进一步将使用信息划分为多个簇,其中相应的规则基于相应的簇。规则引擎130可以在与服务器110分离的计算设备上实施。这种实施方式的优点是将用于生成规则的分析所使用的资源分离。进一步,在一些示例中,规则引擎130可以生成用于多个不同应用程序的规则。此外,在一些示例中,规则引擎130可以产生用于作为多个服务器上的实例运行的同一应用程序的规则。

可以使用k均值聚类方法。这种方法有利于寻找多个不同类型的、对于应用程序可能被认为是正常的活动并将它们放入类似的簇中。在一个示例中,(a)k个初始“均值”经由划分方案(例如,随机划分,forgy等)被分类。在某些示例中,观察结果是描述特定事件(例如,api使用)发生时特定信息(例如,时间、变量/参数的大小、变量/参数的复杂度、哪些变量/参数被使用、特定查询的来源、其他背景信息等)的状态的数据。然后,(b)通过将每个观察结果与最近的均值相关联来生成k个簇。然后,(c)k个簇中的每个簇的质心可以成为新的均值。方法(b)和(c)可以被重复,直到达到收敛。在一些示例中,当均值在最后一次迭代的阈值内时可以发生收敛。在其他示例中,当迭代的均值相同时发生收敛。存在k均值方法的各种机器学习变体(例如,k中值聚类、模糊c均值聚类、高斯混合模型等)。针对观察结果可以使用某些特征。例如,使用信息和特征可以包括关于特定api的诸如查询至少一个数据库的信息。簇至少部分地基于下列中的至少一项使用k均值聚类来划分:相应查询的长度、相应查询中使用的字符的类型、与相应查询相关联的时间信息,以及相应查询中的语法的复杂度等。在一些示例中,可以使用其他api的类似方面。例如,一个或多个参数可以被用作观察结果。这些特征可以被用来设置尺寸以便观察。

对于如sql注入或命令注入的漏洞,查询看起来像什么是重要的。因此,特征可以基于查询。示例包括查询的语法、长度、定时信息、特殊字符(例如符号)的长度等。定时信息可能是有用的,因为一些活动可能在特定的时间发生(例如,在星期五下午5点备份),并且该活动在该时间可以被认为正常,但是在另一时间被认为是异常。

密度估计可以被规则引擎130用来确定相较于簇的样本集合的异常。在概率和统计学中,密度估计是基于观察结果对潜在的概率密度函数的估计的构建。进一步,概率密度函数是描述变量取提供值的可能性的函数。样本集合可以基于基线数据被假定为是正常的或非异常的。在一些示例中,可以在应用程序上使用其他控制(例如,其他安全措施)来帮助确保正常的基线。该目标是建立模型来预测活动(例如,api的查询或使用)适合或非异常的概率。k均值聚类的输出是类似数据的群组。这些簇中的每一个可以通过密度估计来处理,以基于特征生成描述簇的正则表达式。可以针对单独的api产生单独的规则。进一步,可以针对所监视的每个api完成聚类和密度估计。针对异常检测,可以针对每个簇产生模型p(x)。这可以被转换成正则表达式。在一些示例中,针对特定的api,用于每个簇的每个模型可以被转变为正则表达式,并且通过将正则表达式或运算(oring)在一起而被组合。

正则表达式可以被认为是一组规则的一部分。如果活动在正则表达式的模型内,则该活动被认为是非异常的。如果活动不在正则表达式的模型内,则该活动可以被认为是异常的。在一些示例中,正则表达式可以基于p(x)的模型小于ε。在一些示例中,ε可以针对特定的应用程序和/或api由用户来确定。此外,模型可以具有等级。在一个示例中,p(x)<ε1可以表示没有异常,而ε1<p(x)<ε2可以表示可能的异常,并且p(x)>ε2可以表示异常。正则表达式可以与每个模型范围相关联。在其他示例中,模型不需要被转换为正则表达式,并且可以作为要对所监视的特征执行以确定其是否适合于相应的模型的步骤来处理。

运行时代理引擎144可以接收规则。规则可以描述允许何时执行某个活动(例如,api调用)的可准许活动。描述可准许活动的规则是根据一时间段内的使用信息描述非异常活动的规则。如果活动不满足规则的参数,则该规则可以将其标记为异常。在一个示例中,规则可以是正则表达式的形式,以检查特定的api。在针对正则表达式来检查活动的情况下,如果活动偏离规范,则其可以被认为是异常的,如果该活动没有偏离规范,则其可以被认为是非异常的。

当发生对被监视的api中的一个的新的使用时,运行时代理引擎144可以监视活动。可以针对规则来检查api使用。如果活动是非异常的,则其可以继续进行。如果活动被视为异常的,则可以执行安全动作。安全动作可以是阻碍和/或监视恶意活动的动作。例如,安全动作可以用来阻止api被使用、发送错误消息、记录活动等。

在一个示例中,应用程序142可以包括带有名称输入字段和用于社会安全号码的输入的网页。api可以基于该信息生成对数据库的查询。应用程序的正常使用可以显示作为变量的社会安全号码字段通常具有9位数字。进一步,正常使用可以显示作为变量的名称字段通常具有多个特定范围的字母字符和/或空格。正常使用的模型可以基于训练数据,该训练数据包括由聚类算法处理并且由密度估计进一步处理的api信息。第一簇可以包括社会安全号码的9位数字和无空格的单个字符串。第二簇可以包括社会安全号码的9位数字和之间有空格的两个字符串。第三簇可以包括社会安全号码的9位数字和三个字符串,三个字符串为第一字符串、空格、表明开始的具有长度1的第二字符串以及第三字符串。其他这样的簇也可以被形成。可以在每个簇上进行密度估计以建立簇的模型,例如,规则可以包括社会安全号码字段仅具有9个字符,并且该字符需要是数字,而其他限制可以被形成以适合与名称有关的串。规则(例如,正则表达式)可以根据密度估计来产生。

当调用api来执行查询时,运行时代理引擎144可以比较字段与规则,以确定字段是否满足规则。如果否(例如,由于社会安全号码字段包括注入脚本的尝试),则访问尝试可以被认为是异常的,并且因此可以执行安全动作(例如,不允许执行动作、通知管理员、日志记录等)。

通信网络160可以使用有线通信、无线通信或其组合。进一步,通信网络160可以包括多个子通信网络,诸如数据网络、无线网络、电话网络等。这种网络可以包括例如诸如因特网的公共数据网络、局域网(lan)、广域网(wan)、城域网(man)、有线网络、光纤网络及其组合等。在某些示例中,无线网络可以包括蜂窝网络、卫星通信、无线lan等。进一步,通信网络160可以是设备之间的直接网络链路的形式。可以利用各种通信结构和基础设施来实施通信网络。

作为示例,设备130、170经由通信协议或多个协议通过访问通信网络160与彼此并且与其他组件进行通信。协议可以是限定通信网络160的节点如何与其他节点交互的一组规则。进一步,网络节点之间的通信可以通过交换离散的数据分组或发送消息来实施。分组可以包括与协议相关联的头信息(例如,关于要联系的网络节点的位置的信息)以及有效载荷信息。

在本文中所描述的引擎、模块和部件可以被分布在一个或多个设备之间。引擎142、144、130包括用于执行本文中提供的功能的硬件和/或硬件和编程的组合。此外,模块可以包括由如本文提供的硬件执行的编程功能和/或编程功能的组合。在讨论引擎和模块时,应注意,属于引擎的功能也可以属于对应的模块,反之亦然。此外,属于特定模块和/或引擎的功能也可以使用另一模块和/或引擎来实施。模块和引擎的示例包括运行时代理引擎144和规则引擎130。

适用于检索和执行指令的处理器(诸如中央处理单元(cpu)或微处理器)和/或电子电路可以被配置为执行本文中所描述的任意引擎和/或模块的功能。在某些情况下,指令和/或其他信息(诸如规则)可以被包含在存储器中。在一些示例中,输入/输出接口可以由设备附加地提供。例如,可以利用诸如键盘、传感器、触摸界面、鼠标、麦克风等的输入设备来从设备周围的环境接收输入。此外,可以利用诸如显示器的输出设备来向用户展示信息。输出设备的示例包括扬声器、显示设备、放大器等。此外,在某些实施例中,可以利用一些组件来实施本文中所描述的其他组件的功能。诸如通信设备(如网络通信设备)或无线设备的输入/输出设备也可以被视为能够使用输入/输出接口的设备。

引擎/模块中的每一个可以包括例如包含用于实施本文中所描述的功能的电子电路的硬件设备。附加地或作为替换,每个模块可以被实施为编码在计算设备的机器可读存储介质上并且可由处理器执行的一系列指令。应当注意,在一些实施例中,一些模块被实施为硬件设备,而其他模块被实施为编码在机器可读存储介质上的可执行指令。

图3是根据一个示例的用于确定和/或实施描述应用程序的可准许活动的一组规则的方法的流程图。图4是根据一个示例的能够提供描述应用程序的可准许活动的一组规则的种子信息并且实施该组规则的计算设备的框图。尽管以下参考计算设备400来描述方法300的执行,不过也可以利用用于执行方法300的其他适合的组件(例如,计算系统100)。此外,用于执行方法300的组件可以分散在多个设备之间。方法300可以以存储在机器可读存储介质(诸如存储介质420)上的可执行指令的形式和/或以电子电路的形式来实施。

计算设备400包括例如处理器410和机器可读存储介质420,该机器可读存储介质420包括用于监视应用程序并且使用规则来保护应用程序的指令422、424。计算设备400可以是例如笔记本计算机、台式计算机、工作站、服务器,或能够执行本文中所描述的功能的任何其他计算设备。

处理器410可以是至少一个中央处理单元(cpu)、至少一个基于半导体的微处理器、至少一个图形处理单元(gpu)、适于检索和执行存储在机器可读存储介质420中的指令的其他硬件设备,或其组合。例如,处理器410可以包括芯片上的多个核、包括跨多个芯片的多个核、跨多个设备的多个核(例如,如果计算设备400包括多个节点设备),或其组合。处理器410可以获取、解码和执行指令422、424以实施方法300。作为检索和执行指令的替代方案或除检索和执行指令之外,处理器410可以包括包含用于执行指令422、424的功能的多个电子组件的至少一个集成电路(ic)、其他控制逻辑、其他电子电路,或其组合。

机器可读存储介质420可以是包含或存储可执行指令的任何电子存储设备、磁存储设备、光学存储设备或其他物理存储设备。因此,机器可读存储介质可以是例如随机存取存储器(ram)、电可擦除可编程只读存储器(eeprom)、存储驱动器、紧凑型光盘只读存储器(cd-rom)等。因此,机器可读存储介质可以是非暂时性的。如本文中详细描述的,机器可读存储介质420可以被编码有用于保护web应用程序的一系列可执行指令。进一步,在一些示例中,各种指令422、424可以被存储在不同的介质上。

计算设备400可以执行应用程序指令422,以将web应用程序提供给诸如客户端的其他设备。这些客户端可以使用诸如web浏览器或本地应用程序的软件来访问web应用程序。

在302处,可以执行运行时代理指令424,以监视应用程序的api。运行时代理指令424可以被执行以实施运行时代理。使用信息可以被收集。例如,当使用特定的api处理查询时,api的标识符和查询可以被包括在使用信息中。在另一示例中,被监视的api包括要呈现给浏览器的数据,并且这可以被包括在使用信息中。监视这些类型的api可以被用来防范跨站点脚本(xss)。xss是一种类型的漏洞,其中攻击者将客户端脚本注入到由其他用户查看的网页中。监视所呈现的内容可以是用于防止xss的方法。

在304处,可以执行运行时代理指令424,以将一时间段内的使用信息提供给规则引擎。在一个示例中,规则引擎被实施在诸如计算设备600的计算设备上。该提供可以发生多次。例如,缓冲器可以被填充第一组使用信息并被发送。然后第二组使用信息可以被提供等。

如本文中所述,规则引擎可以根据所提供的信息生成规则。规则引擎可以将规则发送到运行时代理。在306处,运行时代理可以接收该组规则。如上所述,规则可以描述允许继续的可准许活动。规则至少部分地基于使用信息。

运行时代理可以继续监视应用程序的操作。进一步,当api被调用时,可以针对规则检查使用。因此,运行时代理可以确定被监视的api中的一个已经被调用(308)。

在310处,运行时代理可以基于该组规则来确定与api相关联的活动是否是可准许的。如上所述,在一个示例中,可以基于应用程序的正常活动来确定活动是否是异常(例如,通过检查规则或正则表达式)。可以被监视和检查的活动示例包括对至少一个数据库的查询、对数据库的读取、对数据库的写入、呈现给浏览器等。

图5是根据一个示例的用于生成描述应用程序的可准许活动的规则的方法的流程图。图6是根据一个示例的能够基于来自监视应用程序的代理的种子信息来生成描述应用程序的可准许活动的一组规则的计算设备的框图。尽管以下参考计算设备600来描述方法500的执行,不过也可以利用用于执行方法500的其他适合的组件(例如,计算系统100、规则引擎130等)。另外,用于执行方法500的组件可以分散在多个设备之间。方法500可以以存储在机器可读存储介质(诸如存储介质620)上的可执行指令的形式和/或以电子电路的形式来实施。

计算设备600包括例如处理器610和机器可读存储介质620,该机器可读存储介质620包括用于生成保护应用程序的规则的指令622、624。计算设备600可以是例如笔记本计算机、台式计算机、工作站、服务器或能够执行本文所描述的功能的任何其他计算设备。

处理器610可以是至少一个中央处理单元(cpu)、至少一个基于半导体的微处理器、至少一个图形处理单元(gpu)、适用于检索和执行存储在机器可读存储介质620中的指令的其他硬件设备,或其组合。例如,处理器610可以包括一芯片上的多个核、包括跨多个芯片的多个核、包括跨多个设备的多个核(例如,如果计算设备600包括多个节点设备),或其组合。处理器610可以获取、解码和执行指令622、624以实施方法500。作为检索和执行指令的替代方案或除检索和执行指令之外,处理器610可以包括包含用于执行指令622、624的功能的多个电子组件的至少一个集成电路(ic)、其他控制逻辑,其他电子电路,或其组合。

机器可读存储介质620可以是包含或存储可执行指令的任何电子存储设备、磁存储设备、光学存储设备或其他物理存储设备。因此,机器可读存储介质可以是例如随机存取存储器(ram)、电可擦除可编程只读存储器(eeprom)、存储驱动器、紧凑型光盘只读存储器(cd-rom)等。因此,机器可读存储介质可以是非暂时性的。如本文详细描述的,机器可读存储介质620可以被编码有用于执行安全测试的一系列可执行指令。

在502处,计算设备600可以接收使用信息。使用信息可以包括来自一个或多个服务器的应用程序的被监视的api的api数据。如上所述,api数据可以包括关于对数据库的查询、访问等的信息。

在504处,可以将使用信息划分为簇。如上所述,划分可以通过由处理器执行的机器学习算法。划分方法的示例包括k均值聚类。如上所述,可以基于聚类生成规则。进一步,如上所述,聚类可以基于来自api/查询的特定特征,例如查询的长度、查询中的字符的类型或api使用中使用的参数、与api的使用相关联的时间信息、语法的复杂度等。

在506处,使用簇的密度估计来生成规则。在一些示例中,规则可以是正则表达式的形式。因此,一组规则可以包括正则表达式。这些规则可以被返回给监视和保护一个或多个服务器上的应用程序实例的运行时代理(508)。

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