CN104956372A - 使用运行时和静态代码分析来确定动态安全扫描的覆盖率 - Google Patents
使用运行时和静态代码分析来确定动态安全扫描的覆盖率 Download PDFInfo
- Publication number
- CN104956372A CN104956372A CN201380071978.0A CN201380071978A CN104956372A CN 104956372 A CN104956372 A CN 104956372A CN 201380071978 A CN201380071978 A CN 201380071978A CN 104956372 A CN104956372 A CN 104956372A
- Authority
- CN
- China
- Prior art keywords
- code
- weblication
- dynamic security
- source code
- covering rate
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/564—Static detection by virus signature recognition
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1433—Vulnerability analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2101—Auditing as a secondary aspect
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1416—Event detection, e.g. attack signature detection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/16—Implementing security features at a particular protocol layer
- H04L63/168—Implementing security features at a particular protocol layer above the transport layer
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Virology (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Debugging And Monitoring (AREA)
Abstract
示例实施例涉及使用运行时分析和静态代码分析来评估动态安全扫描。在示例实施例中,系统执行web应用程序的静态代码分析以识别可达代码和/或数据输入点,其中数据输入点用于确定web应用程序的攻击表面尺寸。在这个阶段,系统可针对web应用程序的动态安全扫描发起运行时监控,其中运行时监控检测在数据输入点中的一个数据输入点处的语句的调用。调用被记录为包括调用参数和/或响应于调用而被执行的代码单元的调用条目。接着,系统可使用调用条目和攻击表面尺寸和/或使用调用条目和可达代码的可达代码覆盖率来确定动态安全扫描的攻击表面覆盖率。
Description
背景技术
动态安全扫描被执行来识别web应用程序的安全漏洞。例如,动态安全扫描可确定漏洞的类型和数量、漏洞的位置以及繁殖漏洞的步骤。一般,动态安全扫描作为对源代码不具有访问权的黑盒测试被执行。在这种情况下,动态安全扫描通过对web应用程序执行实际攻击来识别安全漏洞。
附图说明
下面的详细描述参考附图,其中:
图1是用于使用运行时和静态代码分析来确定动态安全扫描的覆盖率的示例系统的方框图;
图2是包括用于执行使用运行时和静态代码分析来确定动态安全扫描的覆盖率的方面的模块的示例服务器计算设备的方框图;
图3是由服务器计算设备执行的、使用运行时和静态代码分析来确定动态安全扫描的覆盖率的示例方法的流程图;
图4是由服务器计算设备执行的、使用运行时和静态代码分析来提供动态安全扫描的覆盖率的迭代确定的示例方法的流程图;
图5是由服务器计算设备执行的、使用运行时和静态代码分析针对web应用程序的多个版本确定动态安全扫描的覆盖率的示例方法的流程图;以及
图6A-6D是在使用运行时和静态代码分析来确定动态安全扫描的覆盖率的各种阶段的示例源代码的方框图。
具体实施方式
如上面讨论的,对web应用程序执行动态安全扫描以识别安全漏洞。例如,动态安全扫描可通过对web应用程序执行实际攻击例如缓冲区溢出攻击或结构化查询语言(SQL)注入攻击并记录结果来识别安全漏洞。然而,动态安全扫描是不知道web应用程序的基础源代码的黑盒测试过程。相应地,一般基于扫描的速度和被识别出的漏洞的数量来确定动态安全扫描的有效性。
有效性的一般确定可能不客观地评估动态安全扫描,因为所识别的漏洞的数量可更多地取决于web应用程序的质量而不是扫描的质量。例如,高质量web应用程序可具有在扫描中要识别的几个安全漏洞,这通常会导致动态安全扫描被识别为差质量扫描。类似地,低质量web应用程序可具有在扫描中要识别的过多的安全漏洞,这可允许差质量扫描呈现为高度有效的,即使它只能够识别一小部分漏洞。
本文公开的示例实施例使用运行时分析和静态代码分析来确定动态安全扫描的覆盖率。例如在一些实施例中,系统执行web应用程序的静态代码分析以识别web应用程序的源代码的数据输入点,其中数据输入点用于确定web应用程序的攻击表面尺寸。在这个阶段,系统可针对web应用程序的执行的动态安全扫描发起运行时监控。当在数据输入点中的一个数据输入点处的语句被调用时,运行时监控可检测并记录调用作为包括调用参数和时间戳的调用条目。基于调用条目和攻击表面尺寸,可确定动态安全扫描的攻击表面覆盖率以评估扫描的质量。
以这种方式,本文公开的示例实施例允许动态安全扫描基于扫描覆盖的攻击表面的部分客观地被评估。具体地,通过执行web应用程序的源代码的组合运行时分析和静态代码分析,攻击表面的尺寸可被确定并然后用于确定攻击表面覆盖率。攻击表面覆盖率允许用户确定web应用程序是否实际上没有安全漏洞以及动态安全扫描是否被适当地配置。
现在参考附图,图1是用于使用运行时分析和静态代码分析来确定动态安全扫描的覆盖率的示例系统的方框图。示例系统可被实现为服务器计算设备100,例如机架服务器、笔记本计算机、桌上型计算机、全合一系统、平板计算设备或适合于确定动态安全扫描的覆盖率的任何其它电子设备。在图1的实施例中,服务器计算设备100包括处理器110、接口115和机器可读存储介质120。
处理器110可以是一个或多个中央处理单元(CPU)、微处理器和/或适合于获取和执行存储在机器可读存储介质120上的指令的其它硬件设备。处理器110取出、解码并执行指令122、124、126、128以能够使用运行时分析和静态代码分析来确定动态安全扫描的覆盖率。作为可选方案或除了获取和执行指令以外,处理器110还可包括一个或多个电子电路,该一个或多个电子电路包括用于执行一个或多个指令122、124、126、128的功能的多个电子部件。
接口115可包括用于与客户端设备通信的多个电子部件。例如,接口115可以是以太网接口、通用串行总线(USB)接口、IEEE 1394(火线)接口、外部串行高级技术附件(eSATA)接口或适合于与客户端设备通信的任何其它物理连接接口。可选地,接口115可以是无线接口,例如无线局域网(WLAN)接口或近场通信(NFC)接口。在操作中,如下面详述,接口115可用于向客户端设备的对应接口发送数据以及从客户端设备的对应接口接收数据,所述数据例如web应用程序数据。
机器可读存储介质120可以是存储可执行指令的任何电子、磁性、光学或其它物理存储设备。因此,机器可读存储介质120可以是例如随机存取存储器(RAM)、电可擦除可编程只读存储器(EEPROM)、存储驱动器、光盘等。如下面更详细描述的,可使用用于使用运行时分析和静态代码分析来确定动态安全扫描的覆盖率的可执行指令来对机器可读存储介质120编码。
静态代码分析指令122可对web应用程序的源代码执行静态代码分析。具体地,可对源代码执行静态代码分析以识别web应用程序的数据输入点并将源代码的部分分类为可达的或不可达的。Web应用程序的数据输入点的示例可包括但不限于同一资源定位符(URL)参数、超文本标记语言(HTML)参数、客户端侧脚本参数和web服务器接口。在一些情况下,可基于在源代码中的关键字来识别数据输入点,其中关键字根据源代码的编程语言而改变。在其它情况下,可基于在例如描述预期参数和输出的可扩展标记语言(SML)消息中的元数据来识别数据输入点。可基于web应用程序的数据输入点的总数来确定web应用程序的攻击表面的尺寸。换句话说,web应用程序的攻击表面可由web应用程序的数据输入点形成。
可达代码可包括从客户端侧可达的web应用程序的源代码的部分。客户端侧可以指在与服务器计算设备100交互的客户端设备上执行的任何操作。在这种情况下,如果源代码可响应于起源于客户端设备的客户端侧操作被调用,则web应用程序的源代码是从客户端侧可达的。服务器侧可以指在服务器计算设备100上执行的任何操作。不可达代码可包括从客户端侧完全不可达的源代码的部分。换句话说,不可达代码不会响应于从客户端侧可访问的任何数据输入点而被调用。
Web应用程序可以是由服务器计算设备100通过网络(例如互联网、内联网等)经由接口115提供到客户端设备的应用程序或服务。例如,web应用程序可由在服务器计算设备100上执行的web服务器执行以向客户端设备的web浏览器提供网页。在另一示例中,web应用程序可以是响应于来自客户端设备的请求通过网络提供功能的web服务。
运行时监控指令124可在动态安全扫描期间发起正执行的web应用程序的运行时监控。具体地,运行时监控指令124可配置有用于发起动态安全扫描的监控的操作参数。例如,操作参数可包括运行时监控的时间和持续时间、与动态安全扫描关联的过程、互联网协议(IP)地址(动态安全扫描将起源于该地址)等。在一些情况下,运行时监控可监控由如上面讨论的静态代码分析指令122识别的数据输入点。
语句调用检测指令126可检测并记录从动态安全扫描接收的web应用程序的调用。具体地,语句调用检测指令126可记录由服务器计算设备100响应于起源于动态安全扫描的语句的调用而为web应用程序接收的调用参数和对应的值。例如,当在数据输入点处为web应用程序接收调用参数时,可创建包括调用参数、对应的值和时间戳的调用日志条目。源代码的语句可与编程语言的最小功能元素对应(例如一行源代码)。
攻击表面覆盖率确定指令128可确定完成的动态安全扫描的攻击表面覆盖率。最初,攻击表面覆盖率确定指令128可使用调用日志条目来确定哪些数据输入点在动态安全扫描期间被使用。在这个阶段,攻击表面覆盖率可被确定为在动态安全扫描期间使用的数据输入点的比例。例如,如果使用四分之三的数据输入点,则动态安全扫描将具有75%的攻击表面覆盖率。
图2是包括用于执行使用运行时和静态代码分析来确定动态安全扫描的覆盖率的方面的模块的示例服务器计算设备200的方框图。如同图1的服务器计算设备100,服务器计算设备200可以是适合于评估动态安全扫描的任何电子设备。
Web服务器模块210可以是配置成向客户端设备提供web应用程序的web服务器软件应用程序。Web应用程序可作为网页或网络上的web服务而被提供。Web服务器模块210可基于源代码(例如HTML文件、脚本文件等)或从源代码产生的对象代码(例如所链接的库、共享对象、可执行文件等)来提供web应用程序。例如,web服务器模块210可基于HTML文件来提供网页,HTML文件可包括由web服务器模块210执行来为客户端设备产生动态内容的嵌入式脚本。在另一示例中,web服务器模块210可响应于从客户端设备接收到请求而使接口暴露于触发所链接的库中的函数的执行的web服务。
如在图2中示出和下面更详细地描述的,计算设备200还可包括多个模块220-246。每个模块可包括在机器可读存储介质上编码并由计算设备200的处理器可执行的一系列指令。此外或作为可选方案,每个模块220-246可包括一个或多个硬件设备,一个或多个硬件设备包括用于实现下面描述的功能的电子电路。在一些情况下,模块220-246可被实现为在多个计算设备上的分布式系统。
静态代码分析模块220可对由web服务器模块210提供的web应用程序的源代码执行静态代码分析。虽然下面详细描述了静态代码分析模块220的部件,上面关于图1的静态代码分析指令122提供了关于静态代码分析模块220的示例实现的额外细节。
源代码可以是人可读计算机指令的集合。源代码文件的示例包括但不限于HTML文件、配置文件、动态脚本文件和各种编程语言文件。数据输入识别模块222可分析web应用程序的源代码以识别数据输入点。数据输入点可接着用于确定web应用程序的攻击表面的尺寸。在一些情况下,数据输入点的不同组合可被考虑为在web应用程序的攻击表面中的不同输入。例如,不同的URL参数可组合以产生在攻击表面中的不同输入。
代码可访问性模块224可将源代码的部分分类为从客户端侧可达或不可达。例如,可执行使用由数据输入识别模块222识别的数据输入点的数据流分析,以识别源代码的可达部分。在这个示例中,数据流分析可确定(1)被分配到变量的值起源于哪里;(2)变量的可能值;和/或(3)表达式、变量或参数可流到的位置。未被识别为流到在数据输入点处接收的调用参数或从调用参数流动的代码的部分可被识别为不可达的。在一些情况下,置信值可被分配到被识别为从客户端侧可达的代码的每个部分,其中置信值对应于该部分是实际上可达的可能性。在这种情况下,置信阈值可配置成使得当确定可达代码覆盖率时具有落在阈值之下的置信值的部分被忽略。
动态安全扫描模块230可执行正执行的web应用程序的动态安全扫描。具体地,动态安全扫描模块230可对正执行的web应用程序执行实际攻击以识别安全漏洞。动态安全扫描模块230可配置成基于web应用程序的源代码、由web应用程序的测试者确定的使用情况、和/或web应用程序和/或web服务器模块210的配置来执行攻击的例程。由动态安全扫描识别的安全漏洞的示例包括但不限于SQL注入、缓冲区溢出利用、跨站脚本和服务拒绝。
运行时分析模块240可使用由静态代码分析模块220执行的静态代码分析的结果来执行动态安全扫描的运行时监控。虽然下面详细描述了运行时分析模块240的部件,在上面关于图1的运行时监控指令124、语句调用检测指令126和攻击表面覆盖率确定指令128提供关于运行时分析模块240的示例实现的额外细节。
安全扫描监控模块242可执行动态安全扫描的运行时监控。具体地,安全扫描监控模块242可针对web应用程序的客户端侧调用监控动态安全扫描。响应于检测到调用,安全扫描监控模块242可产生调用日志条目,该调用日志条目包括所访问的数据输入点、针对调用从动态安全扫描传递的任何调用参数和值、以及时间戳。
调用日志处理模块244可处理由安全扫描模块产生的调用日志。例如,调用日志条目可用于确定响应于起源于动态安全扫描的调用而被访问的可达代码的代码单元(例如类、函数、基本块、语句或源代码的路径)。在另一示例中,调用日志条目可用于确定在动态安全扫描期间使用的数据输入点。在一些情况下,安全扫描监控模块242可使用调用日志处理模块244来跟踪当动态安全扫描正被执行时实时地访问的可达代码的代码单元。可选地,在动态安全扫描完成之后,调用日志处理模块244可处理调用日志条目。
覆盖率确定模块246可基于由静态代码分析模块220执行的静态代码分析的结果和由调用日志处理模块244处理的调用日志条目来确定web应用程序的动态安全扫描的覆盖率。由覆盖率确定模块246确定的覆盖率可包括可达代码覆盖率、攻击表面覆盖率和组合覆盖率。可达代码覆盖率可被确定为在动态安全扫描期间响应于客户端侧调用而被访问的可达代码的比例。例如,如果一半可达代码被访问,则动态安全扫描将具有50%的可达代码覆盖率。此外,因为由静态代码分析模块220分类的代码的不可达部分被忽略,可达代码覆盖率更准确地反映动态安全扫描的扩展性。攻击表面覆盖率可被确定为在动态安全扫描期间使用的数据输入点的比例。
组合覆盖率可以是动态安全扫描的可达代码覆盖率和攻击表面覆盖率的组合。例如,组合覆盖率可以是可达代码覆盖率和攻击表面覆盖率的总和。在另一示例中,组合覆盖率可以是可达代码覆盖率和攻击表面覆盖率的加权平均。覆盖率确定模块246可向用户提供覆盖率用于评估动态安全扫描的有效性。例如,如果低组合覆盖率被提供给用户,则用户可重新配置动态安全扫描以增加下一扫描的组合覆盖率。
图3是由服务器计算设备100执行的、使用运行时和静态代码分析来确定动态安全扫描的覆盖率的示例方法300的流程图。虽然下面参考图1的服务器计算设备100描述方法300的执行,可使用用于执行方法300的其它适当的设备,例如图2的服务器计算设备200。可以以存储在机器可读存储介质例如存储介质120上的可执行指令的形式和/或电子电路的形式实现方法300。
方法300可在块305开始并继续到块310,其中服务器计算设备100可执行静态代码分析以识别web应用程序的数据输入点。具体地,可对web应用程序的源代码执行静态代码分析以基于在源代码和/或关联配置文件中的关键字来识别数据输入点。接着,在块315中,针对动态安全扫描发起运行时监控。例如,服务器计算设备100可响应于检测到动态安全扫描的执行而发起运行时监控。在另一示例中,运行时监控可在执行动态安全扫描之前由用户手动地发起。运行时监控通过数据输入点监控针对web应用程序的调用的动态安全扫描。
在块320中,服务器计算设备100可通过动态安全扫描来检测并记录web应用程序的源代码语句的调用。例如,调用可在块310中识别出的数据输入点处被检测并被记录为调用日志条目,该调用日志条目包括数据输入点、任何调用参数及其值、以及时间戳。接着在块325中,可使用调用日志条目来确定动态安全扫描的攻击表面覆盖率。例如,攻击表面覆盖率可被确定为在动态安全扫描期间使用的数据输入点的比例。方法300可随后继续进行到块330,其中方法300可停止。
图4是由服务器计算设备200执行的、使用运行时和静态代码分析来提供动态安全扫描的覆盖率的迭代确定的示例方法400的流程图。虽然下面参考图2的服务器计算设备200描述方法400的执行,可使用用于执行方法400的其它适当的设备,例如图1的服务器计算设备100。可以以存储在机器可读存储介质上的可执行指令的形式和/或电子电路的形式实现方法400。
方法400可在块405开始并继续到块410,其中服务器计算设备200可对web应用程序的源代码执行静态分析以识别数据输入点。然后,在块415中,静态分析可继续将源代码的部分分类为从客户端侧可达或不可达。
在块420中,针对web应用程序的执行发起动态安全扫描。例如,web应用程序可由web服务器提供,且动态安全扫描可由访问web应用程序的客户端设备执行。接着,在块425中,发起动态安全扫描的运行时监控。运行时监控可监控在块410中所识别的数据输入点以在块430中从动态安全扫描检测web应用程序的源代码语句的调用。
如果调用被检测到,则服务器计算设备200在块435中针对调用创建调用日志条目,该调用日志条目包括所使用的数据输入点、任何调用参数及其值、以及时间戳。此外,调用日志条目也可包括响应于调用而被执行的代码单元(例如类、函数、基本块、语句或源代码的路径)。接着,在块440中,做出关于动态安全扫描的执行是否继续的确定。如果动态安全扫描的执行继续,则方法400返回到块430。在块430中,如果未检测到客户端侧调用,则方法400继续进行到块440。
如果动态安全扫描的执行不继续,则方法继续进行到块445,其中使用对应的调用日志条目识别出在每个调用期间被访问的可达源代码的代码单元(例如类、函数、基本块、语句或源代码的路径)。接着,在块450中,使用代码单元来确定动态安全扫描的可达代码覆盖率作为在动态安全扫描期间访问的可达代码的比例。当做出这个确定时,不可达代码被忽略,这允许代码覆盖率的更准确评估。
在块455中,攻击表面覆盖率被确定为在动态安全扫描期间使用的数据输入点的比例。攻击表面覆盖率也可在例如可包括在相同的URL查询串中的URL参数的情况下解释数据输入点的不同组合。方法400可随后继续进行到块460,其中方法400可停止。
图5是由服务器计算设备200执行的、使用运行时和静态代码分析针对web应用程序的多个版本确定动态安全扫描的覆盖率的示例方法500的流程图。虽然下面参考图2的服务器计算设备200描述方法500的执行,可使用用于执行方法500的其它适当的设备,例如图1的服务器计算设备100。可以以存储在机器可读存储介质上的可执行指令的形式和/或电子电路的形式实现方法500。
方法500可在块505中开始并继续进行到块510,其中服务器计算设备200可确定对web应用程序的初始版本执行的动态安全扫描的可达代码覆盖率和攻击表面覆盖率。可如上面关于图4描述的确定覆盖率。接着,在块515中,获得针对web应用程序的更新版本的源代码。web应用程序的更新版本可包括初始版本中不包括的增强和缺陷修复。
在块520中,可针对关于web应用程序的更新版本执行的新动态安全扫描确定可达代码覆盖率和攻击表面覆盖率。可根据在块515中获得的更新的源代码来编译web应用程序的更新版本。接着,在块525中,使用可达代码覆盖率和攻击表面覆盖率来确定新动态安全扫描的组合覆盖率。例如,组合覆盖率可以是可达代码覆盖率和攻击表面覆盖率的简单总和、加权平均等。
在块530中,确定组合覆盖率是否低于预先配置的阈值。例如,预先配置的阈值可由用户基于动态安全扫描的预期质量来配置(即较高的预先配置的阈值对应于较高质量动态安全扫描)。在另一示例中,可基于web应用程序的以前版本的组合覆盖率或动态安全扫描的以前配置来确定预先配置的阈值。在这个示例中,预先配置的阈值可确保动态安全扫描的质量不会随着web应用程序的更新版本或动态安全扫描被创建而降低。如果组合覆盖率低于预先配置的阈值,则在块535中将动态安全扫描落在阈值之下的通知提供给用户。
响应于用户修改动态安全扫描的配置,服务器计算设备200可在块540中确定针对web应用程序的更新版本的修改的动态安全扫描的组合覆盖率。用户可通过修改在扫描期间使用的数据输入点、改变用于通过数据输入点传递的调用参数的值的范围等来修改动态安全扫描。方法500可接着返回到块530,其中确定所修改的动态安全扫描的组合覆盖率是否超过预先配置的阈值。
如果组合覆盖率不低于预先配置的阈值,则在块545中确定是否存在web应用程序的进一步更新的版本。如果存在web应用程序的进一步更新的版本,则方法500返回到块520并如上面描述的继续进行。如果不存在web应用程序的进一步更新的版本,则方法500可继续进行到块550,其中方法500可停止。
图6A-6D是在使用运行时和静态代码分析来确定动态安全扫描的覆盖率的各种阶段的示例源代码的方框图。图6A描绘web应用程序的源代码600,其中源代码600包括服务器侧代码605和客户端侧代码610。服务器侧代码605可包括在提供web应用程序的web服务器上执行的代码。客户端侧代码610可包括由web服务器传输到客户端设备的代码,客户端设备然后执行客户端侧代码。
图6B描绘包括代码模块A 615、代码模块B 620和代码模块C 625的服务器侧代码605。每个代码模块可与函数、脚本、动态网页等对应。在这个示例中,代码模块C625与代码模块B 620交互(例如调用函数、访问参数等)。服务器侧代码605还包括数据输入点630、635、640。数据输入点635、640给客户端设备提供对代码模块C625的访问。数据输入点630提供对在服务器侧代码605中的不同代码模块(未示出)的访问。
图6C描绘与服务器侧代码605交互的静态代码分析模块645。静态代码分析模块645可执行静态代码分析以将每个代码模块(例如代码模块A 615、代码模块B 620和代码模块C 625)分类为从客户端侧可达或不可达。在这个示例中,代码模块A 615被分类为不可达的,并且代码模块B 620和代码模块C 625被分类为可达的。此外,静态代码分析可基于服务器侧代码605来识别数据输入点630、635、640。
图6D描绘与服务器侧代码605交互的运行时分析模块650和动态安全工具655。运行时分析模块650可执行运行时分析以检测在服务器侧代码605中的语句的调用。具体地,运行时分析模块650可监控数据输入点630、635、640以检测起源于动态安全工具655的调用。
动态安全工具655可执行服务器侧代码605的动态安全扫描。在这个示例中,动态安全工具655使用两个数据输入点635和640来调用在服务器侧代码605中的语句。相应地,攻击表面覆盖率可被确定为66%,因为三个数据输入点630、635和640可供使用。此外,如果来自动态安全工具655的调用触发在代码模块C 625中的执行,则可达代码覆盖率可被确定为50%,因为两个模块(代码模块B 620和代码模块C 625)是从客户端侧可达的。
前述公开描述了使用运行时和静态代码分析来确定动态安全扫描的覆盖率的多个示例实施例。以这种方式,在本文公开的实施例能够通过最初执行静态代码分析以确定覆盖率的潜在范围并接着鉴于潜在范围执行运行时分析以评估扫描的覆盖率来执行动态安全扫描的更准确的评估。
Claims (15)
1.一种用于使用运行时分析和静态代码分析来评估动态安全扫描的系统,所述系统包括:
处理器,所述处理器:
执行web应用程序的所述静态代码分析以识别所述web应用程序的多个数据输入点,其中所述多个数据输入点用于确定所述web应用程序的攻击表面尺寸;
针对所述web应用程序的动态安全扫描发起运行时监控;
通过所述运行时监控,检测在所述多个数据输入点中的一个数据输入点处的语句的调用,其中所述调用被记录为包括调用参数和时间戳的调用条目;且
使用所述调用条目和所述攻击表面尺寸来确定所述动态安全扫描的攻击表面覆盖率。
2.如权利要求1所述的系统,其中所述web应用程序的所述静态代码分析还识别所述web应用程序的源代码的可达部分,且其中所述调用条目进一步包括响应于所述语句的所述调用而被访问的所述源代码的所述可达部分的代码单元,且其中所述处理器进一步:
使用所述代码单元和所述源代码的所述可达部分来确定所述动态安全扫描的可达代码覆盖率。
3.如权利要求2所述的系统,其中所述处理器进一步:
使用所述可达代码覆盖率和所述攻击表面覆盖率来确定组合覆盖率;且
响应于确定所述组合覆盖率落在预先配置的阈值之下,产生建议所述动态安全扫描被重新配置以增加所述组合覆盖率的通知。
4.如权利要求2所述的系统,其中所述处理器进一步:
使用所述可达代码覆盖率和所述攻击表面覆盖率来确定第一组合覆盖率;
响应于接收到所述web应用程序的更新的源代码,使用所述更新的源代码来确定第二组合覆盖率;且
响应于确定所述第二组合覆盖率小于所述第一组合覆盖率,产生建议所述动态安全扫描基于所述更新的源代码而被重新配置的通知。
5.如权利要求1所述的系统,其中所述处理器进一步:
跟踪响应于所述语句的所述调用而被访问的所述源代码的所述可达部分的代码单元;且
使用所述代码单元和所述源代码的所述可达部分来确定所述动态安全扫描的可达代码覆盖率。
6.如权利要求2所述的系统,其中所述web应用程序的所述静态代码分析进一步识别所述web应用程序的所述源代码的不可达部分,且其中当确定所述可达代码覆盖率时,所述不可达部分被忽略。
7.一种使用由处理器可执行的指令来编码的非瞬态机器可读存储介质,所述机器可读存储介质包括:
执行web应用程序的静态代码分析以识别所述web应用程序的源代码的可达部分的指令,其中所述源代码的所述可达部分是从客户端侧可访问的;
检测针对所述web应用程序的动态安全扫描的运行时监控的指令;
通过所述运行时监控检测在所述源代码的所述可达部分中的语句的调用的指令,其中所述调用被记录为调用条目,所述调用条目包括时间戳和响应于所述语句的所述调用而被访问的所述源代码的所述可达部分的代码单元;以及
使用所述代码单元和所述源代码的所述可达部分来检测所述动态安全扫描的可达代码覆盖率的指令。
8.如权利要求7所述的机器可读存储介质,其中所述web应用程序的所述静态代码分析还识别所述web应用程序的多个数据输入点,且其中所述调用条目进一步包括调用参数,且其中所述机器可读存储介质进一步包括:
使用所述多个数据输入点来确定所述web应用程序的攻击表面尺寸的指令;以及
使用所述调用条目和所述攻击表面尺寸来确定所述动态安全扫描的攻击表面覆盖率的指令。
9.如权利要求8所述的机器可读存储介质,其中所述机器可读存储介质进一步包括:
使用所述可达代码覆盖率和所述攻击表面覆盖率来确定组合覆盖率的指令;以及
响应于确定所述组合覆盖率落在预先配置的阈值之下而产生建议所述动态安全扫描被重新配置以增加所述组合覆盖率的通知的指令。
10.如权利要求8所述的机器可读存储介质,其中所述机器可读存储介质进一步包括:
使用所述可达代码覆盖率和所述攻击表面覆盖率来确定第一组合覆盖率的指令;
响应于接收到所述web应用程序的更新的源代码而使用所述更新的源代码来确定第二组合覆盖率的指令;以及
响应于确定所述第二组合覆盖率小于所述第一组合覆盖率而产生建议所述动态安全扫描基于所述更新的源代码而被重新配置的通知的指令。
11.如权利要求7所述的机器可读存储介质,其中所述web应用程序的所述静态代码分析进一步识别所述web应用程序的所述源代码的不可达部分,且其中当确定所述可达代码覆盖率时,所述不可达部分被忽略。
12.一种用于使用运行时分析和静态代码分析来评估动态安全扫描的方法,所述方法包括:
由计算设备执行web应用程序的所述静态代码分析以识别所述web应用程序的多个数据输入点和所述web应用程序的源代码的可达部分,其中所述多个数据输入点用于确定所述web应用程序的攻击表面尺寸;
针对所述web应用程序的动态安全扫描发起运行时监控;
通过所述运行时监控,检测在所述多个数据输入点中的一个数据输入点处的语句的调用,其中所述调用被记录为调用条目,所述调用条目包括调用参数、时间戳和响应于所述语句的所述调用而被访问的所述源代码的所述可达部分的代码单元;以及
使用所述调用条目、所述攻击表面尺寸和源代码的所述可达部分来确定所述动态安全扫描的组合覆盖率。
13.如权利要求12所述的方法,进一步包括:
响应于确定所述组合覆盖率落在预先配置的阈值之下,产生建议所述动态安全扫描被重新配置以增加所述组合覆盖率的通知。
14.如权利要求12所述的方法,进一步包括:
响应于接收到所述web应用程序的更新的源代码,使用所述更新的源代码来确定更新的组合覆盖率;以及
响应于确定所述更新的组合覆盖率小于所述组合覆盖率,产生建议所述动态安全扫描基于所述更新的源代码而被重新配置的通知。
15.如权利要求12所述的方法,其中所述web应用程序的所述静态代码分析进一步识别所述web应用程序的所述源代码的不可达部分,且其中当确定所述组合覆盖率时,所述不可达部分被忽略。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2013/028403 WO2014133528A1 (en) | 2013-02-28 | 2013-02-28 | Determining coverage of dynamic security scans using runtime and static code analyses |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104956372A true CN104956372A (zh) | 2015-09-30 |
Family
ID=51428645
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380071978.0A Pending CN104956372A (zh) | 2013-02-28 | 2013-02-28 | 使用运行时和静态代码分析来确定动态安全扫描的覆盖率 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10699017B2 (zh) |
EP (1) | EP2962239A4 (zh) |
CN (1) | CN104956372A (zh) |
WO (1) | WO2014133528A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110888811A (zh) * | 2019-11-21 | 2020-03-17 | 望海康信(北京)科技股份公司 | 代码覆盖率信息处理方法、装置、电子设备及介质 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10380006B2 (en) | 2015-06-05 | 2019-08-13 | International Business Machines Corporation | Application testing for security vulnerabilities |
IN2015CH03057A (zh) | 2015-06-18 | 2015-07-03 | Wipro Ltd | |
EP3107027B1 (en) * | 2015-06-18 | 2019-01-30 | Wipro Limited | Method and device for evaluating security assessment of an application |
WO2017027031A1 (en) * | 2015-08-12 | 2017-02-16 | Hewlett Packard Enterprise Development Lp | Assigning classifiers to classify security scan issues |
US9860273B2 (en) * | 2015-10-09 | 2018-01-02 | T-Mobile Usa, Inc. | Logging encrypted data communications for QOE analysis |
US10387144B2 (en) * | 2015-11-19 | 2019-08-20 | Ca, Inc. | Method and system for determining logging statement code coverage |
US10482261B2 (en) | 2017-04-11 | 2019-11-19 | International Business Machines Corporation | Security scanning of application program interfaces that are affected by changes to source code |
WO2019144039A1 (en) * | 2018-01-18 | 2019-07-25 | Risksense, Inc. | Complex application attack quantification, testing, detection and prevention |
US10846405B1 (en) * | 2018-06-19 | 2020-11-24 | NortonLifeLock Inc. | Systems and methods for detecting and protecting against malicious software |
US11055308B2 (en) * | 2018-08-31 | 2021-07-06 | Open Text Holdings, Inc. | Systems and methods for integrated dynamic runtime ETL tool and scalable analytics server platform |
US10783245B2 (en) * | 2018-11-30 | 2020-09-22 | Oracle International Corporation | Feedback-directed static analysis |
US11544158B1 (en) * | 2020-03-30 | 2023-01-03 | Rapid7, Inc. | Selective change tracking of log statements to manage alerts |
CN113254932B (zh) * | 2021-06-16 | 2024-02-27 | 百度在线网络技术(北京)有限公司 | 应用程序的风险检测方法、装置、电子设备和介质 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070234415A1 (en) * | 2006-04-03 | 2007-10-04 | Thiago Zaninotti | Component-oriented system and method for web application security analysis |
CN101714118A (zh) * | 2009-11-20 | 2010-05-26 | 北京邮电大学 | 一种二进制代码缓冲区溢出漏洞的检测器及其检测方法 |
US20100169974A1 (en) * | 2008-12-31 | 2010-07-01 | International Business Machines Corporation | Measuring Coverage of Application Inputs for Advanced Web Application Security Testing |
US20100251365A1 (en) * | 2009-03-26 | 2010-09-30 | Lyne James I G | Dynamic scanning based on compliance metadata |
CN101894230A (zh) * | 2010-07-14 | 2010-11-24 | 国网电力科学研究院 | 一种基于静态和动态分析技术的主机系统安全评估方法 |
CN102147764A (zh) * | 2010-02-08 | 2011-08-10 | 微软公司 | 测试代码质量评估 |
US20120174228A1 (en) * | 2010-12-29 | 2012-07-05 | Anastasios Giakouminakis | Methods and systems for integrating reconnaissance with security assessments for computing networks |
CN102598017A (zh) * | 2009-11-13 | 2012-07-18 | 埃德图加拿大公司 | 保护Java字节码代码免受恶意运行环境中的静态和动态攻击的系统和方法 |
CN102622558A (zh) * | 2012-03-01 | 2012-08-01 | 北京邮电大学 | 一种二进制程序漏洞的挖掘装置和方法 |
CN102750469A (zh) * | 2012-05-18 | 2012-10-24 | 北京邮电大学 | 一种基于开放平台的安全检测系统及其检测方法 |
CN102810078A (zh) * | 2011-06-02 | 2012-12-05 | 兰州大学 | 一种分析Linux内核动态执行的方法 |
CN102945203A (zh) * | 2012-10-26 | 2013-02-27 | 深圳出入境检验检疫局信息中心 | 一种用于移动互联网应用的代码安全测试方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6959431B1 (en) | 1999-05-13 | 2005-10-25 | Compuware Corporation | System and method to measure and report on effectiveness of software program testing |
US8613080B2 (en) * | 2007-02-16 | 2013-12-17 | Veracode, Inc. | Assessment and analysis of software security flaws in virtual machines |
US8365290B2 (en) | 2009-05-15 | 2013-01-29 | Frederick Young | Web application vulnerability scanner |
WO2011073982A1 (en) | 2009-12-15 | 2011-06-23 | Seeker Security Ltd. | Method and system of runtime analysis |
US8676966B2 (en) * | 2009-12-28 | 2014-03-18 | International Business Machines Corporation | Detecting and monitoring server side states during web application scanning |
JP5425699B2 (ja) | 2010-04-30 | 2014-02-26 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 情報処理装置、テストケース生成方法、プログラムおよび記録媒体 |
US8914879B2 (en) * | 2010-06-11 | 2014-12-16 | Trustwave Holdings, Inc. | System and method for improving coverage for web code |
CA2777434C (en) * | 2012-05-18 | 2019-09-10 | Ibm Canada Limited - Ibm Canada Limitee | Verifying application security vulnerabilities |
US8996921B2 (en) * | 2012-11-08 | 2015-03-31 | International Business Machines Corporation | Indicating coverage of Web application testing |
-
2013
- 2013-02-28 EP EP13876193.7A patent/EP2962239A4/en not_active Withdrawn
- 2013-02-28 US US14/764,280 patent/US10699017B2/en active Active
- 2013-02-28 CN CN201380071978.0A patent/CN104956372A/zh active Pending
- 2013-02-28 WO PCT/US2013/028403 patent/WO2014133528A1/en active Application Filing
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070234415A1 (en) * | 2006-04-03 | 2007-10-04 | Thiago Zaninotti | Component-oriented system and method for web application security analysis |
US20100169974A1 (en) * | 2008-12-31 | 2010-07-01 | International Business Machines Corporation | Measuring Coverage of Application Inputs for Advanced Web Application Security Testing |
US20100251365A1 (en) * | 2009-03-26 | 2010-09-30 | Lyne James I G | Dynamic scanning based on compliance metadata |
CN102598017A (zh) * | 2009-11-13 | 2012-07-18 | 埃德图加拿大公司 | 保护Java字节码代码免受恶意运行环境中的静态和动态攻击的系统和方法 |
CN101714118A (zh) * | 2009-11-20 | 2010-05-26 | 北京邮电大学 | 一种二进制代码缓冲区溢出漏洞的检测器及其检测方法 |
CN102147764A (zh) * | 2010-02-08 | 2011-08-10 | 微软公司 | 测试代码质量评估 |
CN101894230A (zh) * | 2010-07-14 | 2010-11-24 | 国网电力科学研究院 | 一种基于静态和动态分析技术的主机系统安全评估方法 |
US20120174228A1 (en) * | 2010-12-29 | 2012-07-05 | Anastasios Giakouminakis | Methods and systems for integrating reconnaissance with security assessments for computing networks |
CN102810078A (zh) * | 2011-06-02 | 2012-12-05 | 兰州大学 | 一种分析Linux内核动态执行的方法 |
CN102622558A (zh) * | 2012-03-01 | 2012-08-01 | 北京邮电大学 | 一种二进制程序漏洞的挖掘装置和方法 |
CN102750469A (zh) * | 2012-05-18 | 2012-10-24 | 北京邮电大学 | 一种基于开放平台的安全检测系统及其检测方法 |
CN102945203A (zh) * | 2012-10-26 | 2013-02-27 | 深圳出入境检验检疫局信息中心 | 一种用于移动互联网应用的代码安全测试方法 |
Non-Patent Citations (5)
Title |
---|
姚伟平 等: ""二进制代码覆盖率评估系统的设计与实现"", 《计算机工程与设计》 * |
张若愚: ""静态程序分析辅助的动态漏洞挖掘"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
徐晓峰 等: ""一种块覆盖软件测试自动化工具的设计与实现"", 《智能系统学报》 * |
时志伟 等: ""基于信息流分析的源代码漏洞挖掘技术研究"", 《信息网络安全》 * |
赵晓东: ""基于虚拟化的恶意软件分析工具的研究与实现"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110888811A (zh) * | 2019-11-21 | 2020-03-17 | 望海康信(北京)科技股份公司 | 代码覆盖率信息处理方法、装置、电子设备及介质 |
CN110888811B (zh) * | 2019-11-21 | 2023-07-18 | 望海康信(北京)科技股份公司 | 代码覆盖率信息处理方法、装置、电子设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
US20150371047A1 (en) | 2015-12-24 |
EP2962239A4 (en) | 2016-10-19 |
EP2962239A1 (en) | 2016-01-06 |
US10699017B2 (en) | 2020-06-30 |
WO2014133528A1 (en) | 2014-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104956372A (zh) | 使用运行时和静态代码分析来确定动态安全扫描的覆盖率 | |
US11003773B1 (en) | System and method for automatically generating malware detection rule recommendations | |
CA2595758C (en) | System for detecting vulnerabilities in web applications using client-side application interfaces | |
US9614862B2 (en) | System and method for webpage analysis | |
US8943588B1 (en) | Detecting unauthorized websites | |
CN107659570A (zh) | 基于机器学习与动静态分析的Webshell检测方法及系统 | |
CN108664793B (zh) | 一种检测漏洞的方法和装置 | |
CN113489713B (zh) | 网络攻击的检测方法、装置、设备及存储介质 | |
CN105930727A (zh) | 基于Web的爬虫识别算法 | |
CN101964025A (zh) | Xss检测方法和设备 | |
CN104601573A (zh) | 一种Android平台URL访问结果验证方法及装置 | |
CN107332804B (zh) | 网页漏洞的检测方法及装置 | |
CN105376217A (zh) | 一种恶意跳转及恶意嵌套类不良网站的自动判定方法 | |
CN111435393A (zh) | 对象漏洞的检测方法、装置、介质及电子设备 | |
CN113190839A (zh) | 一种基于SQL注入的web攻击防护方法及系统 | |
CN113190838A (zh) | 一种基于表达式的web攻击行为检测方法及系统 | |
CN114528457A (zh) | Web指纹检测方法及相关设备 | |
CN113779571A (zh) | WebShell检测装置、WebShell检测方法及计算机可读存储介质 | |
CN113312633A (zh) | 一种网站漏洞扫描方法、装置、设备及存储介质 | |
CN111125704B (zh) | 一种网页挂马识别方法及系统 | |
CN110457900B (zh) | 一种网站监测方法、装置、设备及可读存储介质 | |
CN111459577A (zh) | 应用安装来源跟踪方法、装置、设备及存储介质 | |
Noskov | Smart City Webgis Applications: Proof of Work Concept For High-Level Quality-Of-Service Assurance | |
Mostafa et al. | Netdroid: Summarizing network behavior of android apps for network code maintenance | |
CN112202763B (zh) | 一种ids策略生成方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20160919 Address after: American Texas Applicant after: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP Address before: American Texas Applicant before: Hewlett-Packard Development Company, Limited Liability Partnership |
|
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150930 |