CN107808097A - JavaScript 路径枚举 - Google Patents
JavaScript 路径枚举 Download PDFInfo
- Publication number
- CN107808097A CN107808097A CN201710705774.8A CN201710705774A CN107808097A CN 107808097 A CN107808097 A CN 107808097A CN 201710705774 A CN201710705774 A CN 201710705774A CN 107808097 A CN107808097 A CN 107808097A
- Authority
- CN
- China
- Prior art keywords
- branch
- processor
- path
- individual path
- browser
- 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.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/3668—Testing of software
- G06F11/3672—Test management
- G06F11/3676—Test management for coverage analysis
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/3604—Analysis of software for verifying properties of programs
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/3668—Testing of software
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Health & Medical Sciences (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种JavaScript路径枚举。在根据本公开的一个示例中,一种方法可以包括:接收与包括多个可执行JavaScript代码的HTML页面结构对应的代码;以及枚举JavaScript代码中的分支路径。该方法可以包括确定分支路径的在执行JavaScript代码的浏览器的正常操作期间不会执行的分支。该方法还可以包括生成用于分支的人工条件并且使用人工条件执行分支。
Description
背景技术
可以测试web页/应用程序以确保可开发的漏洞的来源。这些漏洞的一个来源可以是可执行的JavaScript代码。因为这些应用程序通常是大型的、复杂的并与web服务相互关联,所以可以执行JavaScript分析以暴露可攻击的入口点。
附图说明
以下详细描述参考附图,其中:
图1是用于JavaScript路径枚举的示例环境的框图;
图2是用于JavaScript路径枚举的示例方法的流程图;
图3是用于文档对象模型调整和枚举的另一示例方法的流程图;
图4是用于JavaScript路径枚举的示例方法的流程图;
图5是用于JavaScript路径枚举的示例系统的框图。
具体实施方式
在正常操作期间,浏览器中的web页可以执行JavaScript代码并对定时器事件、实时用户事件(诸如按键和鼠标点击)等做出反应。所得到的调用链和代码流可以构成一组允许的或计划的执行。作为示例,针对在JavaScript代码中的“if-else”分支路径,代码可以遵循由当前程序状态所指示的路径。它可以运行“if”或“else”,但不是两者均运行。
该正常代码流是正确的程序操作,但是可以不包括来自恶意施动者(actor)的可能攻击点。然而,正确的浏览器执行可以不是对于这些施动者的约束。恶意施动者可以分析源代码并进行关于代码如何与web服务器交互的推论以确定JavaScript代码的非计划(unintended)执行。示例是上述的相同的“if-else”。浏览器的计划(intended)执行可以指示在某个情境中采取“if”路径。该计划路径可以称作“正常”路径。然而,两种代码路径可以包含对服务器的AJAX网络调用并且该AJAX调用可以是将被利用的入口点。熟练的攻击者可以修改一组攻击以通过遵循非计划路径来尝试并制作如果代码替代“if”路径而进入“else”路径将发生的网络请求。该非计划路径可以称作“黑暗路径”。
在此所述的JavaScript路径枚举技术可有助于自动地探索在正常浏览器操作期间不会发生但是如果执行黑暗路径则可以由入侵者用作攻击点的这些黑暗路径。用于JavaScript路径枚举的示例方法可以包括接收与包括多个可执行JavaScript代码的HTML页面结构对应的代码以及枚举JavaScript代码中的分支路径。该方法可以包括确定在浏览器执行JavaScript代码的正常操作期间将不会执行的分支路径的分支。该方法还可以包括生成用于分支的人工条件以及使用人工条件执行分支。
图1是JavaScript路径枚举可以是有用的示例环境100的框图。环境100可以包括具有文档对象模型104、执行引擎106以及浏览器108的堆栈102。文档对象模型(DOM)104是超文本标示语言(HTML)页面结构的内部表示,即,它是反映web页的树型结构。初始页面可以来自web服务器并可以渲染至浏览器中作为HTML以及可以在HTML页面加载之后执行的其他代码(诸如JavaScript(JS)代码)。一旦渲染,则可以与页面交互(例如通过点击、按键、和定时器事件等)以引起页面改变。这些交互可以引起将DOM 104改变为添加至DOM、从DOM删除、DOM改变等的形式。这些对DOM的改变可以称作“DOM突变”。
执行引擎106可以执行来自HTML页面结构的代码。例如,执行引擎106可以是执行JavaScript代码的JavaScript引擎。浏览器108可以用于解释HTML页面结构以及由DOM 104表示的可执行代码。在一些方面中,浏览器108可以是模拟人类操作者并且还内部追踪DOM状态变化的“无头(headless)”浏览器。无头浏览器可以使用异步的JavaScript和XML协议(AJAX)对服务器进行调用。无头浏览器可以模拟传统的浏览器如何动作但是可以不渲染图形用户界面(GUI)。通过不渲染GUI,环境100可以提高安全扫描/分析的速度。浏览器108还可以访问由传统浏览器所禁止和/或隐藏的某些值和动作。
环境100还可以包括可以通过通信链路(例如总线)彼此耦接的处理器110和存储器112。处理器110可以包括中央处理单元(CPU)或另一合适的硬件处理器。在一些示例中,存储器112存储由处理器110所执行的机器可读指令。存储器112可以包括易失性和/或非易失性存储器的任意合适的组合,诸如随机存取存储器(RAM)、只读存储器(ROM)、闪存和/或其他合适存储器的任意合适组合。存储器112还可以包括当断电时可以保留内容的随机存取非易失性存储器。
存储器112可以存储将要由处理器110执行的指令,包括用于实现代码接收器114、分支枚举器116、分支确定器118、值生成器120、分支执行器122和/或其他部件的指令。进一步,在图1和在此所述的其他附图中,可以使用与所描绘的不同数量的部件或实体。
处理器110可以执行代码接收器114的指令以接收与HTML页面结构对应的代码。还可以对应于HTML页面结构而接收和/或创建初始文档对象模型(DOM)。处理器110可以执行分支枚举器116的指令以枚举包括在HTML页面结构中的可执行JavaScript代码的多个分支路径。针对多个分支路径中的每个分支路径,处理器110可以执行分支确定器118的指令以确定分支路径中的任何任意分支是否不计划在运行条件期间执行。多个分支路径可以包括计划在执行JavaScript代码的浏览器的运行时间条件期间将要执行的“正常”路径。多个分支路径还可以包括在执行JavaScript代码的运行时间条件期间不计划将要执行的“黑暗”路径。
在一些方面中,黑暗路径可以包括将在正确浏览器执行期间防止分支执行的值。例如,JavaScript代码可以包括具有假值的硬编码(hard-coded)变量以及基于该值分支至“else”的“if/else”语句。因此,“else”路径是正常路径并且“if”路径是黑暗路径。在正确浏览器执行期间,JavaScript代码都可以采取该正常路径而不论用户输入或其他运行时间条件如何。然而,恶意施动者可以使用黑暗路径作为攻击点。黑暗路径可以包含对DOM具有运行时间效果的代码。潜在地,这些代码路径也可以对服务器发出AJAX调用。分支确定器可以在使用人工条件执行分支期间确定期间JavaScript代码与web服务器交互并/或进行AJAX调用的断点。
检查“if”和“else”路径两者而不考虑运行时间条件允许分析这些黑暗路径和由此产生的DOM突变、网络调用、动态JS改变等。此外,检查可能路径中的每个可以允许不明显的正常路径的识别和执行,因为例如,用户可以访问的一些输入是未知的。在以上示例中,分支确定器118可以确定第一分支对应于HTML页面结构中的硬编码值(在该情况下上面提到的“假”值)并且确定第一分支具有除硬编码值之外的值。在一些方面中,分支确定器118可以确定第一分支路径具有两个可能的分支并确定两个可能分支的第一可能分支不计划在运行时间条件期间执行。分支确定器118可以识别第一可能分支作为黑暗路径。
换言之,代码接收器114可以接收具有多个分支路径的JavaScript代码。分支枚举器116可以枚举JavaScript代码中的多个分支路径中的每个分支。分支确定器118可以针对每个分支确定在执行JavaScript代码的浏览器的正常操作期间分支路径是否将会执行。分支确定器118可以将分支路径的在正常操作期间会执行的每个分支标记为正常路径,并且将分支路径的在正常操作期间不会执行的每个分支标记为黑暗路径。
处理器110可以执行值生成器120的指令以针对不计划在运行时间条件期间执行的每个分支生成用于分支的非计划值。在以上示例中,由值生成器120生成的非计划值可以是引起if/else语句基于值分支至“if”的“真”值。处理器110可以执行分支执行器122的指令以使用非计划值执行在运行时间条件期间不计划执行的第一分支。分支执行器122还可以使用计划值执行在运行时间条件期间计划执行的分支。
分支执行器122可以使用表示实际客户端源代码的实际JavaScript代码,但是使用人工运行时间条件来执行正常和/或黑暗路径两者。以该方式,可以记录并分析对DOM、AJAX调用和后续JS突变的调整。在JavaScript中,代码可以自己改变并由此导致更多正确路径和更多黑暗路径。
分支执行器122可以使用浏览器108执行分支。浏览器108可以是模拟浏览器的功能但是并未生成图形用户界面的无头浏览器。浏览器108还可以包括多个操作模式,每个操作模式与不同浏览器环境的模拟对应。分支执行器122可以在多个操作模式下使用非计划值执行分支。可以使用非计划值基于分支的执行而调整DOM。以下参照图3和方法300进一步详细讨论DOM的调整。
图2是用于JavaScript路径枚举的示例方法200的流程图。方法200可以在以下描述为由例如图1的环境100的环境或例如以下所述的图5的系统500的系统运行或执行。也可以使用其他合适的系统和/或计算装置。方法200可以以存储在系统的至少一个机器可读存储介质上并由系统的至少一个处理器执行的可执行指令的形式而实现。处理器可以包括中心处理器单元(CPU)或另一合适的硬件处理器。机器可读存储介质可以是非暂时性的。方法200可以以电子电路(例如硬件)的形式而实现。方法200的至少一个框可以基本上同时执行或者以与图2中所示不同的顺序执行。方法200可以包括比图2中所示更多或更少的框。在某些时候,方法200的一些框可以是正在进行的并/或可以重复。
方法200可以开始于框202并且继续至框204,其中方法可以包括接收与包括多个可执行JavaScript代码的HTML页面结构对应的代码。在框206处,方法可以包括枚举JavaScript代码中的分支路径。在框208处,方法可以包括确定分支路径的在执行JavaScript代码的浏览器的正常操作期间不会执行的分支。
在一些方面中,确定分支路径的在正常操作期间不会执行的分支可以包括:识别与HTML页面结构中的硬编码值对应的分支路径以及确定分支路径的在执行JavaScript的浏览器的正常操作期间不会执行的分支对应于除硬编码值之外的值。
在一些方面中,确定分支路径的在正常操作期间不会执行的分支可以包括:确定分支路径具有两个可能的分支;确定可能分支的在执行JavaScript代码的浏览器的正常操作期间不会执行的第一分支;以及将第一分支标识为黑暗路径。
在框210处,方法可以包括生成用于分支的人工条件,并且在框212处,方法可以包括使用人工条件执行分支。执行可以由枚举浏览器的功能而未生成图形用户界面的无头浏览器来执行。浏览器可以具有多个操作模式,每个操作模式与不同浏览器环境的模拟对应。分支可以在多个操作模式下执行。方法200可以最终继续至框214,在此方法200可以结束。
图3是用于DOM追踪和调整的示例方法300的流程图。方法300可以如下描述为由例如图1的示例环境100的环境或例如以下所述的图5的系统500的系统运行或执行。也可以使用其他合适的系统和/或计算装置。方法300可以以存储在系统的至少一个机器可读存储介质上并由系统的至少一个处理器执行的可执行指令的形式而实现。处理器可以包括中央处理单元(CPU)或另一合适的硬件处理器。机器可读存储介质可以是非暂时性的。方法300可以以电子电路(例如硬件)的形式而实现。方法300的至少一个框可以基本上同时地执行或者以与图3中所示不同的顺序执行。方法300可以包括比图3中所示更多或更少的框。在某些时候,方法300的一些框可以是正在进行的并/或可以重复。
方法300可以开始于框302并继续至304,其中方法300可以包括接收与html页面结构以及多个可执行JavaScript代码对应的初始DOM。HTML页面结构以及多个可执行JavaScript代码可以与以上参照方法200和图2在框302中讨论的HTML页面结构和多个可执行JavaScript代码相关或者相同。
在框306处,方法可以包括基于用于分支的人工条件调整初始DOM(诸如图2中的方法200的框210中的人工条件)。在框308处,方法可以包括通过记录对DOM做出的调整来追踪对初始DOM的状态改变。追踪状态改变可以包括基于使用人工条件执行分支而追踪对初始DOM的调整。在框310处,方法可以包括恢复初始DOM。通过恢复初始DOM,可以随后基于不同分支而调整DOM。以该方式,方法300可以模拟可以创建的不同可能分支。恢复初始DOM。在框312处,方法可以包括确定分支路径的在执行JavaScript代码的浏览器的正常操作期间会执行的第二分支。在框314处,方法可以包括基于第二分支调整初始DOM。方法300可以最终继续至框316,在此方法300可以结束。
图4是用于JavaScript路径枚举的示例方法400的流程图。方法400可以如下描述为由例如图1的示例环境100的环境或例如以下所述图5的系统500的系统运行或执行。也可以使用其他合适的系统和/或计算装置。方法400可以以存储在系统的至少一个机器可读存储介质上并由系统的至少一个处理器执行的可执行指令的形式而实现。处理器可以包括中央处理单元(CPU)或另一合适的硬件处理器。机器可读存储介质可以是非暂时性的。方法400可以以电子电路(例如硬件)的形式而实现。方法400的至少一个框可以基本上同时地执行或以不同于图4所示的顺序执行。方法400可以包括比如图4中所示更多或更少的框。在某些时候,方法400的一些框可以是正在进行的并/或可以重复。
方法400可以开始于框402并继续至框404,其中方法400可以包括确定在JavaScript代码中的多个分支路径。在框406处,方法可以包括枚举JavaScript代码中的多个分支路径的每个分支。在框408处,方法可以包括针对每个分支确定在执行JavaScript代码的浏览器的正常操作期间分支路径是否会执行。如果确定在浏览器的正常操作期间会执行分支(框408的“是”分支),则在框410处方法可以包括将分支路径的在正常操作期间会执行的每个分支标记为正常路径。如果确定了在浏览器的正常操作期间不会执行分支(框408的“否”分支),则在框412处方法可以包括将分支路径的在正常操作期间不执行的每个分支标记为黑暗路径。方法400可以最终继续至框414,在此方法400可以结束。
通过以该方式经历每个分支路径并识别正常和黑暗路径,方法400可以确定在浏览器的正常操作期间将不采取的路径,如上所述,并且还可以确定未知的正常路径。例如,可以存在计划出现、但是由于所需的输入而很少发生的路径。由于每个可能的输入和路径可以不是已知的,因此枚举多个分支中的每个分支可以允许JavaScript代码中的每个分支路径的识别和执行。
图5是用于JavaScript路径枚举的示例方法500的框图。系统500可以例如类似于图1的环境100。在图5中所示的示例中,系统500包括处理器502和机器可读存储介质504。尽管以下描述涉及单个处理器和单个机器可读存储介质,但该描述也可以适用于具有多个处理器和多个机器可读存储介质的系统。在这些示例中,指令可以分布(例如存储)在多个机器可读存储介质上并且指令可以分布在多个处理器(例如由多个处理器执行)上。
处理器502可以是至少一个中央处理单元(CPU)、微处理器和/或适用于检索并执行存储在机器可读存储介质504中的指令的其他硬件装置。在图5中所示的示例中,处理器502可以获取、解码、并执行指令506、508、510、512和514以执行JavaScript枚举。处理器502可以包括至少一个电子电路,该至少一个电子电路包括用于执行在机器可读存储介质504中的指令中的至少一个的功能的多个电子部件。关于在此所述和所示的可执行指令表示(例如框),应该理解的是,包括在一个框内的可执行指令和/或电子电路的一部分或全部可以被包括在图中所示的不同框中或未示出的不同框中。
机器可读存储介质504可以是存储可执行指令的任何电子、磁性、光学或其他物理存储装置。因此,机器可读存储介质504可以例如是随机存取存储器(RAM)、电可擦除可编程只读存储器(EEPROM)、存储驱动器、光盘等。机器可读存储介质504可以布置在系统500内,如图5中所示。在该情形中,可执行指令可以“安装”在系统500上。机器可读存储介质504可以是例如允许系统500从便携式/外部/远程存储介质下载指令的便携式、外部或远程存储介质。在该情形中,可执行指令可以是“安装包”的一部分。如在此所述,机器可读存储介质504可以采用用于情境感知数据备份的可执行指令进行编码。机器可读存储介质可以是非暂时性的。
参照图5,当被处理器(例如502)执行时,页面请求指令506可以使得系统500请求包括可执行JavaScript代码的HTML页面结构。当被处理器(例如502)执行时,DOM创建指令508可以使得系统500创建具有可执行JavaScript代码的执行的多个分支路径的文档对象模型(DOM)。当被处理器(例如502)执行时,路径确定指令510可以使得系统500确定属于多个分支路径的、具有在正确浏览器执行期间会防止分支路径的至少一个分支执行的值的分支路径。当被处理器(例如,502)执行时,值替换指令512可以使得系统500采用第二值替换该值。
在一些方面中,确定具有在正确浏览器执行期间会防止分支路径的至少一个分支执行的值的分支路径可以包括:识别与HTML页面结构中的硬编码值对应的分支路径的分支;以及确定在执行JavaScript的浏览器的正常操作期间不会执行的分支路径的分支对应于除硬编码值之外的值。
在一些方面中,确定具有在正确浏览器执行期间会防止分支路径的至少一个分支执行的值的分支路径可以包括:确定分支路径具有两个可能的分支;确定可能分支的第一分支将在执行JavaScript代码的正常操作期间不执行;识别与第一分支对应的值并将第一分支标识为黑暗路径。
当被处理器(例如,502)执行时,分支执行指令514可以使得系统500使用第二值执行分支。执行可以由模拟浏览器的功能而不生成图形用户界面的无头浏览器执行。浏览器可以是多个操作模式,每个操作模式与不同浏览器环境的模拟对应。可以基于第二值而调整DOM。
前述公开描述了用于JavaScript路径枚举的多个示例。所公开的示例可以包括用于JavaScript路径枚举的系统、装置、计算机可读存储介质以及方法。为了解释的目的,参照图1至图5中所示的部件描述某些示例。然而,所示部件的功能可以重叠,并且可以存在于更少或更多数量的元件和部件中。进一步,所示元件的功能的全部或一部分可以共存或分布在若干个地理上分散的位置之中。进一步,所公开的示例可以在各种环境中实现并且不限于所示示例。
进一步,结合图1至图5所述的操作顺序是示例并且并非意在限定。在不脱离所公开示例的范围的情况下,可以使用或者可以改变额外的或更少的操作或操作的组合。进一步,与所公开示例一致的实施方式无需以任何特定顺序执行操作的序列。因此,本公开仅阐述了实施方式的可能示例,并且可以对所述示例做出许多变形和修改。
Claims (20)
1.一种方法,包括:
由处理器接收与包括多个可执行JavaScript代码的HTML页面结构对应的代码;
由所述处理器枚举所述JavaScript代码中的分支路径;
由所述处理器确定所述分支路径的在执行所述JavaScript代码的浏览器的正常操作期间不会执行的分支;
由所述处理器生成用于所述分支的人工条件;以及
由所述处理器使用所述人工条件执行所述分支。
2.根据权利要求1所述的方法,包括:
由所述处理器识别所述分支路径的与所述HTML页面结构中的硬编码值对应的第一分支;以及
由所述处理器确定所述分支路径的在执行JavaScript的浏览器的正常操作期间不会执行的所述分支与除所述硬编码值之外的值对应。
3.根据权利要求1所述的方法,包括:
由所述处理器接收与所述HTML页面结构以及所述多个可执行JavaScript代码对应的初始文档对象模型(DOM);以及
由所述处理器基于用于所述分支的所述人工条件而调整所述初始DOM。
4.根据权利要求3所述的方法,包括:
由所述处理器通过记录对所述DOM做出的调整而追踪对所述初始DOM的状态改变,所述调整包括基于使用所述人工条件执行所述分支而对所述初始DOM的调整。
5.根据权利要求3所述的方法,包括:
由所述处理器恢复所述初始DOM;
由所述处理器确定所述分支路径的在执行所述JavaScript代码的浏览器的正常操作期间会执行的第二分支;以及
由所述处理器基于所述第二分支而调整所述初始DOM。
6.根据权利要求1所述的方法,其中,所述执行由模拟浏览器的功能而不生成图形用户界面的无头浏览器执行。
7.根据权利要求6所述的方法,包括:
由所述处理器在多个操作模式下使用所述人工条件执行所述分支,每个操作模式与不同浏览器环境的所述模拟对应。
8.根据权利要求1所述的方法,包括:
由所述处理器确定所述JavaScript代码中的多个分支路径;
由所述处理器枚举所述JavaScript代码中的所述多个分支路径的每个分支;
由所述处理器针对每个分支确定在执行所述JavaScript代码的浏览器的正常操作期间是否会执行所述分支路径;
由所述处理器将所述分支路径的在正常操作期间会执行的所述分支路径的每个分支标记为正常路径;以及
由所述处理器将所述分支路径的在正常操作期间不会执行的每个分支标记为黑暗路径。
9.根据权利要求1所述的方法,包括:
由所述处理器在使用所述人工条件执行所述分支期间确定期间所述JavaScript代码与web服务器交互的断点。
10.根据权利要求1所述的方法,包括:
由所述处理器确定所述分支路径具有两个可能的分支;
由所述处理器确定所述可能的分支的在执行所述JavaScript代码的浏览器的正常操作期间不会执行的第一分支;以及
由所述处理器将所述第一分支标识为黑暗路径。
11.一种系统,包括:
代码接收器,用于接收与HTML页面结构对应的代码;
分支枚举器,用于枚举包括在所述HTML页面结构中的可执行JavaScript代码的多个分支路径;
分支确定器,用于针对所述多个分支路径中的每个分支路径确定在运行时间条件期间是否不计划执行所述分支路径的任意分支;
值生成器,用于针对在运行时间条件期间不计划执行的每个分支生成用于所述分支的非计划值;以及
分支执行器,用于使用所述非计划值执行在运行时间条件期间不计划执行的第一分支。
12.根据权利要求11所述的系统,包括:
所述分支确定器,用于:
确定所述第一分支与所述HTML页面结构中的硬编码值对应;以及
确定所述第一分支具有除所述硬编码值之外的值。
13.根据权利要求11所述的系统,包括:
所述分支确定器用于确定所述JavaScript代码与web服务器交互的断点。
14.根据权利要求11所述的系统,包括:
所述分支确定器,用于
确定所述第一分支路径具有两个可能的分支;
确定所述两个可能的分支的在运行时间条件期间不计划执行的第一可能分支;以及
将所述第一可能分支标识为黑暗路径。
15.根据权利要求11所述的系统,其中,所述分支执行器使用模拟浏览器的功能而不生成图形用户界面的无头浏览器而执行所述执行。
16.一种用指令编码的非暂时性机器可读存储介质,所述指令由系统的处理器可执行以使得所述系统:
请求包括可执行JavaScript代码的HTML页面结构;
创建具有所述可执行JavaScript代码的执行的多个分支路径的文档对象模型(DOM);
确定属于所述多个分支路径的具有在正确浏览器执行期间会防止所述分支路径的路径执行的值的分支路径;
用第二值替换所述值;以及
使用所述第二值执行所述分支。
17.根据权利要求16所述的非暂时性机器可读存储介质,其中,所述指令由所述系统的所述处理器可执行以进一步使得所述系统:
确定所述JavaScript代码中的所述多个分支路径;
枚举所述JavaScript代码中的所述多个分支路径的每个分支;
针对每个分支,确定在所述JavaScript代码的正确浏览器执行期间所述分支路径是否会执行;
将所述分支路径的在所述JavaScript代码的正确浏览器执行期间会执行的每个分支标记为正常路径;以及
将所述分支路径的在所述JavaScript代码的正确浏览器执行期间不会执行的每个分支标记为黑暗路径。
18.根据权利要求16所述的非暂时性机器可读存储介质,其中,所述指令由所述系统的所述处理器可执行以进一步使得所述系统:
基于所述第二价值而调整所述DOM。
19.根据权利要求18所述的非暂时性机器可读存储介质,其中,所述指令由所述系统的所述处理器可执行以进一步使得所述系统:
通过记录对所述DOM做出的调整而追踪对所述DOM的状态改变,所述调整包括基于使用所述第二值执行所述分支而对所述DOM的调整。
20.根据权利要求18所述的非暂时性机器可读存储介质,其中,所述指令由所述系统的所述处理器可执行以进一步使得所述系统:
恢复所述DOM;
确定在正确浏览器执行期间会使得所述分支执行的第二值;以及
基于所述第二值而调整所述DOM。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201662385540P | 2016-09-09 | 2016-09-09 | |
| US62/385,540 | 2016-09-09 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN107808097A true CN107808097A (zh) | 2018-03-16 |
Family
ID=59887016
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201710705774.8A Withdrawn CN107808097A (zh) | 2016-09-09 | 2017-08-17 | JavaScript 路径枚举 |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US10394698B2 (zh) |
| EP (1) | EP3293662A1 (zh) |
| CN (1) | CN107808097A (zh) |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11281560B2 (en) | 2019-03-19 | 2022-03-22 | Microsoft Technology Licensing, Llc | Input/output data transformations when emulating non-traced code with a recorded execution of traced code |
| US11782816B2 (en) | 2019-03-19 | 2023-10-10 | Jens C. Jenkins | Input/output location transformations when emulating non-traced code with a recorded execution of traced code |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN101286132A (zh) * | 2008-06-02 | 2008-10-15 | 北京邮电大学 | 一种基于软件缺陷模式的测试方法及系统 |
| CN104503901A (zh) * | 2014-12-04 | 2015-04-08 | 中国人民解放军总参谋部第五十四研究所 | 一种基于静态路径分析的导向符号执行方法 |
| CN104572476A (zh) * | 2015-01-30 | 2015-04-29 | 南京邮电大学 | 一种基于程序切片的软件安全测试方法 |
| CN104750608A (zh) * | 2015-03-25 | 2015-07-01 | 南京大学 | 一种程序中基于动态符号执行的自动错误定位方法 |
| WO2016060110A1 (ja) * | 2014-10-14 | 2016-04-21 | 日本電信電話株式会社 | 解析装置、解析方法、および、解析プログラム |
Family Cites Families (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8868533B2 (en) * | 2006-06-30 | 2014-10-21 | International Business Machines Corporation | Method and apparatus for intelligent capture of document object model events |
| US20090089759A1 (en) | 2007-10-02 | 2009-04-02 | Fujitsu Limited | System and Method for Providing Symbolic Execution Engine for Validating Web Applications |
| US8621495B2 (en) * | 2008-01-18 | 2013-12-31 | Microsoft Corporation | Methods and apparatus for securing frames from other frames |
| CN102511037A (zh) | 2010-08-10 | 2012-06-20 | 国际商业机器公司 | 用于自动测试web应用的方法和系统 |
| US8949992B2 (en) | 2011-05-31 | 2015-02-03 | International Business Machines Corporation | Detecting persistent vulnerabilities in web applications |
| US9135147B2 (en) | 2012-04-26 | 2015-09-15 | International Business Machines Corporation | Automated testing of applications with scripting code |
| US9208235B1 (en) | 2013-03-11 | 2015-12-08 | Symantec Corporation | Systems and methods for profiling web applications |
| US9363284B2 (en) | 2013-12-11 | 2016-06-07 | International Business Machines Corporation | Testing web applications for security vulnerabilities with metarequests |
| US9098636B2 (en) | 2013-12-18 | 2015-08-04 | Software Ag | White-box testing systems and/or methods in web applications |
| US9507761B2 (en) | 2013-12-26 | 2016-11-29 | International Business Machines Corporation | Comparing webpage elements having asynchronous functionality |
-
2017
- 2017-08-17 CN CN201710705774.8A patent/CN107808097A/zh not_active Withdrawn
- 2017-08-25 US US15/686,388 patent/US10394698B2/en active Active
- 2017-09-06 EP EP17189702.8A patent/EP3293662A1/en not_active Withdrawn
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN101286132A (zh) * | 2008-06-02 | 2008-10-15 | 北京邮电大学 | 一种基于软件缺陷模式的测试方法及系统 |
| WO2016060110A1 (ja) * | 2014-10-14 | 2016-04-21 | 日本電信電話株式会社 | 解析装置、解析方法、および、解析プログラム |
| CN104503901A (zh) * | 2014-12-04 | 2015-04-08 | 中国人民解放军总参谋部第五十四研究所 | 一种基于静态路径分析的导向符号执行方法 |
| CN104572476A (zh) * | 2015-01-30 | 2015-04-29 | 南京邮电大学 | 一种基于程序切片的软件安全测试方法 |
| CN104750608A (zh) * | 2015-03-25 | 2015-07-01 | 南京大学 | 一种程序中基于动态符号执行的自动错误定位方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| EP3293662A1 (en) | 2018-03-14 |
| US10394698B2 (en) | 2019-08-27 |
| US20180074943A1 (en) | 2018-03-15 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US12530205B2 (en) | Systems and methods for implementing deterministic finite automata (DFAS) via a blockchain | |
| Gupta et al. | PHP-sensor: a prototype method to discover workflow violation and XSS vulnerabilities in PHP web applications | |
| EP4328739B1 (en) | Control flow in blockchain scripts | |
| US8819637B2 (en) | Fixing security vulnerability in a source code | |
| KR20120039616A (ko) | 테스트 데이터의 생성 | |
| CN107784229A (zh) | Javascript 安全测试 | |
| CN111522746A (zh) | 数据处理的方法、装置、设备及计算机可读存储介质 | |
| CN109344661A (zh) | 一种基于机器学习的微代理的网页防篡改方法 | |
| CN111240772B (zh) | 一种基于区块链的数据处理方法、装置及存储介质 | |
| CN113366474B (zh) | 用于通过将计算机程序的控制流表示为数据来混淆计算机程序的系统、方法和存储介质 | |
| JP2025528290A (ja) | 包括的コンポーネント解析および可視化 | |
| CN107808097A (zh) | JavaScript 路径枚举 | |
| CN117574320A (zh) | 数据处理方法、装置、计算机可读介质及电子设备 | |
| CN114944942B (zh) | 一种基于有效埋点的数据上报方法、装置、计算机设备及介质 | |
| Sun et al. | A transformation‐based approach to testing concurrent programs using UML activity diagrams | |
| CN114450687A (zh) | 用于实现对计算结果的验证的方法、计算机程序和系统 | |
| CN117113348A (zh) | 威胁检测代码的生成和使用方法、装置、设备和介质 | |
| Haq et al. | Design pattern for secure object oriented information systems development | |
| Singh et al. | Demand based test case generation for object oriented system | |
| CN116661739A (zh) | 一种业务规则的处理方法、装置、设备及存储介质 | |
| CN120508317B (zh) | 指令执行方法、装置、电子设备和存储介质 | |
| Lefticaru et al. | X-Machine based testing for cloud services | |
| US12393401B2 (en) | Systems and methods for improving efficiency and control compliance across software development life cycles using domain-specific controls | |
| CN119226024B (zh) | 应用程序故障定位方法、装置、电子设备及存储介质 | |
| CN116743499B (zh) | 一种针对智能合约攻击的模仿交易生成方法 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PB01 | Publication | ||
| PB01 | Publication | ||
| SE01 | Entry into force of request for substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| CB02 | Change of applicant information | ||
| CB02 | Change of applicant information |
Address after: Utah, USA Applicant after: Weifosi Co., Ltd Address before: California, USA Applicant before: Antiy Software Co.,Ltd. |
|
| WW01 | Invention patent application withdrawn after publication | ||
| WW01 | Invention patent application withdrawn after publication |
Application publication date: 20180316 |