CN104956372A - 使用运行时和静态代码分析来确定动态安全扫描的覆盖率 - Google Patents

使用运行时和静态代码分析来确定动态安全扫描的覆盖率 Download PDF

Info

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
Application number
CN201380071978.0A
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.)
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of CN104956372A publication Critical patent/CN104956372A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/564Static detection by virus signature recognition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1433Vulnerability analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing 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/2101Auditing as a secondary aspect
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1416Event detection, e.g. attack signature detection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/168Implementing 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应用程序的所述源代码的不可达部分,且其中当确定所述组合覆盖率时,所述不可达部分被忽略。
CN201380071978.0A 2013-02-28 2013-02-28 使用运行时和静态代码分析来确定动态安全扫描的覆盖率 Pending CN104956372A (zh)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110888811A (zh) * 2019-11-21 2020-03-17 望海康信(北京)科技股份公司 代码覆盖率信息处理方法、装置、电子设备及介质

Families Citing this family (13)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (12)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Title
姚伟平 等: ""二进制代码覆盖率评估系统的设计与实现"", 《计算机工程与设计》 *
张若愚: ""静态程序分析辅助的动态漏洞挖掘"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
徐晓峰 等: ""一种块覆盖软件测试自动化工具的设计与实现"", 《智能系统学报》 *
时志伟 等: ""基于信息流分析的源代码漏洞挖掘技术研究"", 《信息网络安全》 *
赵晓东: ""基于虚拟化的恶意软件分析工具的研究与实现"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (2)

* Cited by examiner, † Cited by third party
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