CN112199274A - 基于V8引擎的JavaScript动态污点跟踪方法及电子装置 - Google Patents

基于V8引擎的JavaScript动态污点跟踪方法及电子装置 Download PDF

Info

Publication number
CN112199274A
CN112199274A CN202010987219.0A CN202010987219A CN112199274A CN 112199274 A CN112199274 A CN 112199274A CN 202010987219 A CN202010987219 A CN 202010987219A CN 112199274 A CN112199274 A CN 112199274A
Authority
CN
China
Prior art keywords
stain
javascript
taint
node
transmitted
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.)
Granted
Application number
CN202010987219.0A
Other languages
English (en)
Other versions
CN112199274B (zh
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.)
Peking University
Original Assignee
Peking University
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 Peking University filed Critical Peking University
Priority to CN202010987219.0A priority Critical patent/CN112199274B/zh
Publication of CN112199274A publication Critical patent/CN112199274A/zh
Application granted granted Critical
Publication of CN112199274B publication Critical patent/CN112199274B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime 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/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明提供一种基于V8引擎的JavaScript动态污点跟踪方法及电子装置,包括:为每一V8的实例构建一JavaScript对象的污点表,并修改V8字节码的生成逻辑,对JavaScript代码抽象语法树中涉及语法、内建函数与属性的特定节点进行插桩;构建一以待传播污点对象与待被传播污点对象为参数的V8运行函数,并依据待传播污点对象,从污点表中获取待传播污点;执行JavaScript脚本,以待传播污点的对象为污点源,进行污点传播操作;当包含污点的变量运行至设定的污点漏时,则根据当前JavaScript程序的参数生成一日志,直到JavaScript脚本执行完毕。本发明可进行对象级动态污点跟踪,追踪污点传播过程,可使分析人员自定义污点源和污点漏,提供方便的JavaScript接口与日志系统,具有很高的效率与准确率。

Description

基于V8引擎的JavaScript动态污点跟踪方法及电子装置
技术领域
本发明属于计算机应用技术领域,尤其涉及一种基于V8引擎的JavaScript动态污点跟踪方法及电子装置。
背景技术
V8引擎是目前最主流的浏览器Chrome使用的JavaScript引擎。该引擎首先将JavaScript代码编译为字节码,然后进一步将部分字节码优化为native的ASM代码。
动态污点跟踪是程序分析的常用技术,其常被用于对运行时程序的状态进行捕获。随着互联网的不断发展,浏览器的功能越来越强大。随着JavaScript和HTML技术的进步,使得浏览器前端的JavaScript脚本功能愈发复杂,而对其漏洞与恶意行为的检测的需求正逐步增加。由于JavaScript是一个弱类型的语言,功能十分灵活,故对其动态分析的难度较大。
现有的污点跟踪技术主要分为静态污点跟踪与动态污点跟踪两种。对于JavaScript这种弱类型的语言,静态污点跟踪很难准确捕获到其运行时的数据流,使得分析的准确率较低。现有的动态污点跟踪方法主要基于JavaScript程序改写。这种方法在运行时将带来极大的开销。
发明内容
本发明的目的在于提出一种基于V8引擎的JavaScript动态污点跟踪方法及电子装置,通过对V8字节码插桩,在JavaScript动态运行时记录对象所携带的污点信息,实现了动态的污点跟踪,提供详细的日志信息。
本发明的技术方案如下:
一种基于V8引擎的JavaScript动态污点跟踪方法,其步骤包括:
1)为每一V8的实例构建一JavaScript对象的污点表,并修改V8字节码的生成逻辑,对JavaScript代码抽象语法树中涉及语法、内建函数与属性的特定节点进行插桩;
2)构建一以待传播污点对象与待被传播污点对象为参数的V8运行函数,并依据待传播污点对象,从污点表中获取待传播污点;
3)执行JavaScript脚本,以待传播污点的对象为污点源,进行污点传播操作;
4)当包含污点的变量运行至设定的污点漏时,则根据当前JavaScript程序的参数生成一日志,直到JavaScript脚本执行完毕。
进一步地,污点表包括对象污点表、污点名表和污点漏表。
进一步地,特定节点包括PropertyLoad节点、NamedSuperPropertyLoad节点、Call节点、CallNew节点、Void节点、TypeOf节点、Not节点、UnaryOperation节点、ArithmeticExpression节点、NaryArithmeticExpression节点和KeyedSuperPropertyLoad节点。
进一步地,所述污点的格式包括字符串。
进一步地,通过以下策略进行污点传播:
1)在JavaScript语法中进行污点传播操作时,将污点从等式右值传播至左值;
2)在JavaScript内建函数与属性中的污点传播操作时,将函数参数中的污点传播至返回值中。
进一步地,JavaScript语法中进行污点传播操作包括对象赋值、变量字面量或运算操作。
进一步地,污点漏包括dom函数或属性。
进一步地,所述当前JavaScript程序的参数包括调用栈、变量值和污点触发位置。
进一步地,通过logstash,将所述日志发送至一数据分析系统中;所述数据分析系统包括elasticsearch或mongodb。
一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述所述的方法。
一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机以执行上述所述的方法。与现有技术相比,本发明的积极效果如下:
1)本发明可以对JavaScript进行对象级动态污点跟踪,让程序分析人员自定义污点源和污点漏;
2)本发明可以追踪JavaScript对象的所有污点传播过程,可为分析人员提供方便的JavaScript接口与日志系统;
3)本发明相比于其它JavaScript污点跟踪方法,具有很高的效率与准确率,适用于JavaScript运行时的程序分析。
附图说明
图1本发明的整体流程图。
图2影子服务数据结构示例图。
图3字节码插桩的流程图。
图4框架设置污点的示例图。
图5脚本运行流程图。
具体实施方式
下面结合实施例和附图进一步阐述本发明所述的技术方案。
本发明的动态污点跟踪,其使用以下技术方案:
1)为每个V8的实例建立一个影子服务。该服务组织一个JavaScript对象的污点表。在JavaScript代码动态运行时,该服务用于记录每个JavaScript对象所携带的污点。
2)实现新的RuntimeFunction(运行函数),为JavaScript代码层面实现定义污点Source(污点源)和Sink(污点漏)的接口。该接口在分析人员进行程序分析时指定所关注的敏感数据以及其流向。
3)修改V8的字节码生成系统,对由JavaScript代码编译出的字节码进行插桩。在此过程中,污点传播的步骤主要包括两类:
3.1)JavaScript语法中的污点传播操作。这一类操作包括对象赋值、变量字面量、运算操作等操作。为实现这些操作的污点传播,为这些操作生成的字节码进行插桩,将污点从等式右值传播至左值中,在这些运算完毕之后实现在影子服务中的污点传播。
3.2)JavaScript内建函数与属性中的污点传播。JavaScript中存在一些特殊的函数与属性,如Object.toString()、Array.length等。这些函数内部由C++实现,所以只使用步骤3.1中的污点传播方式无法在这种情况下对污点进行传播。为此,在JavaScript进行函数时,会对调用的函数进行判断,如果这个函数是一个内建函数的话,就对其进行插桩,将函数参数中的污点传播至返回值中。
4)实现日志系统。在JavaScript程序运行时,如果包含污点的变量运行至Sink中,如函数调用或者赋值,则将当前JavaScript程序的调用栈,变量值与触发位置格式化生成日志,以供后续分析。
进一步,步骤1中,污点可以是任意字符串。为减少运行时的内存开销,影子服务会将对象的污点进行编码,映射到一个整数中。由于通常不会关心过多的污点,故可设定污点不超过64个。此时JavaScript对象污点表中的每一个表项便可编码为一个64位的长整数,每一位代表该对象是否携带某个污点。这样的优化可以大大提高系统的运行效率。如果需要更多的污点,那么只需将64位长整数替换为一个足够大的bitset即可。
进一步,步骤2中,该框架支持使用者通过JavaScript接口为变量添加或者消除污点。同时,为增加分析的便利性,该框架支持以任意dom函数或属性为污点漏。只需要在函数调用或者赋值时检查相关函数或者目的对象是否为设置的污点漏即可。
进一步,步骤3中,污点传播的过程被包装为一个V8运行时函数,即RuntimeFunction。这个函数以待传播污点的对象和待被传播污点的对象为参数。该函数从影子服务的污点表中查询出待传播污点对象的所有污点,并将在待被传播污点的对象的表项中更新污点。这种污点传播基于64为长整数或者bitset的或操作,运行效率很高。
进一步,步骤3.1中,修改V8字节码生成的逻辑。V8会在编译JavaScript的时候会遍历JavaScript代码的抽象语法树(AST)。在抽象语法树中找到特定的AST节点,在访问到这些AST节点的时候进行插桩。其中,AST节点见表1。
PropertyLoad NamedSuperPropertyLoad
Call CallNew
Void TypeOf
Not UnaryOperation
ArithmeticExpression NaryArithmeticExpression
KeyedSuperPropertyLoad
表1
进一步,步骤3.2中,由于V8实例在bootstrap阶段会进行内建函数的初始化,影子服务利用这一特点,在V8初始化的时候会记录下所有内建函数的地址。V8字节码生成器访问到Call节点的时候,会判断调用的函数是否是内建函数。如果是内建函数,则对将参数的污点传播至返回值。如果不是内建函数,则不要进行额外的污点传播操作。
进一步,步骤4中,本框架的日志包含了精确到代码行的程序调用栈信息。该信息可以通过V8相关api获取。此外,日志可以通过logstash直接发送至elasticsearch或者mongodb等数据分析系统中进行后续的数据分析。
图1所示为污点跟踪框架的工作流程。首先,分析人员需要指定脚本中所需要关注的污点源(Source)和污点漏(Sink)。分析人员可通过框架提供的JavaScriptAPI方便地进行设置。接下来,框架在编译JavaScript脚本时会对污点传播的关键步骤进行插桩,以实现动态的污点跟踪。程序在运行的过程中,污点会从污点源开始传播。如果污点传播至污点漏,即关注的敏感函数或者变量,则对程序当前的运行状态进行记录并生成日志,以供后续分析。
图2所示为影子服务数据结构示例图,影子服务主要维护三个表,包括图2中左边的对象污点表,中间的污点名表和右边的污点漏表。
对象污点表的数据结构是一个字典。字典的键是JavaScript中的对象对应C++实现的内存地址,字典的值是该对象当前所携带的污点,以长整数或者bitset表示。图下方的代码简单展示了污点表计算的过程。第一行代码中变量c应当包含变量a与变量b的污点。当程序运行完此语句的时候,变量c的污点应异或变量a与变量b的污点。第二行,变量d应该包含变量c的污点,故程序执行完此语句时,变量d的污点应异或变量c的污点。
污点名表所支持的污点类型为字符串类型,方便程序分析人员应用。故影子服务还需要维护一张污点名表,将字符串名称的污点映射到比特位上,供对象污点表使用。
污点漏表用于记录程序分析人员设置的其关心的DOM函数或者属性。当程序运行至这些函数或者对这些属性赋值时,会触发污点检查。如果包含污点的话则产生日志。
图3所示为字节码插桩流程。V8在编译JavaScript代码时首先会将其解析为抽象语法树(AST)。接下来V8会遍历AST进行字节码生成。本框架在遍历抽象语法树时会对所经过的AST节点进行判断,判断其是否是需要进行污点传播的节点。如果此节点是需要进行污点传播的节点,则在此进行插桩。插桩的代码收集语句右值对象的地址与左值对象的地址,并在依此更新污点表。同时,本框架在遍历时还需要判断在此节点是否为污点漏,即变量赋值或者函数调用语句。如果是的话还需要进行插桩,当包含污点的对象传递至此时记录日志。
图4所示为框架设置污点源、污点漏的示例代码。框架提供JavaScript层API来完成这些工作。
左上显示了如何为变量设置污点及清除污点。第一行代码为变量a设置了名为“test-taint”的污点。当程序运行至此时,框架会首先在图2所示的污点名表中查找“test-taint”这个污点名所对应的比特位。如果当前污点表中不存在这个污点名,则为其新增一个表项。同时,框架还会获取对象a在内存中的地址,并根据此地址与刚刚得到的比特位信息更新图2所示的对象污点表。第二行代码清楚了对象a的污点,此时只需要在对象污点表中将对象a的污点全部置0即可。
左下显示了如何设置DOM相关函数为敏感函数。为使用此功能,程序分析人员需查阅其关心的DOM函数的完整名称,包括对象名与函数名。在此例中,将XMLHttpRequest的open函数设置为污点漏。将对象名与函数名用冒号连接传递至TAINT.setSink函数,框架会在图2所示的污点漏表中进行记录。在程序运行至XMLHttpRequest的open函数时,框架会检查其参数有没有包含污点的对象。如果有的话,则产生日志。同时分析者也可以通过TAINT.unsetSink函数取消某些函数或者对象的关注。
右边的代码显示了如何使手工编写的函数成为污点漏。在代码中,若设置foo函数为污点漏,此时只需在foo函数执行所有语句之前添加TAINT.sink语句。该函数的参数是检查的变量。程序运行至此语句使,框架会检查TAINT.sink的所有参数是否包含污点。如果包含的话,则产生日志。
图5所示为JavaScript脚本在本框架中运行的流程。脚本会依照代码逻辑运行。如果当前语句是污点传播相关的语句,则进行污点传播,在影子服务中更新污点表。如果当前语句是污点漏,则检查传递至此的对象是否包含污点,如果包含污点的话,则产生日志进行并进行记录。如果当前语句不是上述两类语句时,则不进行操作。
通过在主流网站上实验表明,本发明测得的overhead大概有13%左右,其远远优于现有技术。
尽管为说明目的公开了本发明的具体实施例和附图,其目的在于帮助理解本发明的内容并据以实施,但是本领域的技术人员可以理解:在不脱离本发明及所附的权利要求的精神和范围内,各种替换、变化和修改都是可能的。本发明不应局限于本说明书最佳实施例和附图所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。

Claims (10)

1.一种基于V8引擎的JavaScript动态污点跟踪方法,其步骤包括:
1)为每一V8的实例构建一JavaScript对象的污点表,并修改V8字节码的生成逻辑,对JavaScript代码抽象语法树中涉及语法、内建函数与属性的特定节点进行插桩;
2)构建一以待传播污点对象与待被传播污点对象为参数的V8运行函数,并依据待传播污点对象,从污点表中获取待传播污点;
3)执行JavaScript脚本,以待传播污点的对象为污点源,进行污点传播操作;
4)当包含污点的变量运行至设定的污点漏时,则根据当前JavaScript程序的参数生成一日志,直到JavaScript脚本执行完毕。
2.如权利要求1所述的方法,其特征在于,污点表包括对象污点表、污点名表和污点漏表。
3.如权利要求1所述的方法,其特征在于,特定节点包括PropertyLoad节点、NamedSuperPropertyLoad节点、Call节点、CallNew节点、Void节点、TypeOf节点、Not节点、UnaryOperation节点、ArithmeticExpression节点、NaryArithmeticExpression节点和KeyedSuperPropertyLoad节点。
4.如权利要求1所述的方法,其特征在于,所述污点的格式包括字符串。
5.如权利要求1所述的方法,其特征在于,通过以下策略进行污点传播:
1)在JavaScript语法中进行污点传播操作时,将污点从等式右值传播至左值;
2)在JavaScript内建函数与属性中的污点传播操作时,将函数参数中的污点传播至返回值中。
6.如权利要求5所述的方法,其特征在于,JavaScript语法中进行污点传播操作包括对象赋值、变量字面量或运算操作。
7.如权利要求1所述的方法,其特征在于,污点漏包括dom函数或属性;所述当前JavaScript程序的参数包括调用栈、变量值和污点触发位置。
8.如权利要求1所述的方法,其特征在于,通过logstash,将所述日志发送至一数据分析系统中;所述数据分析系统包括elasticsearch或mongodb。
9.一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行权利要求1-8中任一所述方法。
10.一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行如权利要求1-8中任一所述方法。
CN202010987219.0A 2020-09-18 2020-09-18 基于V8引擎的JavaScript动态污点跟踪方法及电子装置 Active CN112199274B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010987219.0A CN112199274B (zh) 2020-09-18 2020-09-18 基于V8引擎的JavaScript动态污点跟踪方法及电子装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010987219.0A CN112199274B (zh) 2020-09-18 2020-09-18 基于V8引擎的JavaScript动态污点跟踪方法及电子装置

Publications (2)

Publication Number Publication Date
CN112199274A true CN112199274A (zh) 2021-01-08
CN112199274B CN112199274B (zh) 2022-05-03

Family

ID=74015495

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010987219.0A Active CN112199274B (zh) 2020-09-18 2020-09-18 基于V8引擎的JavaScript动态污点跟踪方法及电子装置

Country Status (1)

Country Link
CN (1) CN112199274B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112926058A (zh) * 2021-03-25 2021-06-08 支付宝(杭州)信息技术有限公司 代码处理方法、污点分析方法和装置
CN113378517A (zh) * 2021-06-17 2021-09-10 中国工商银行股份有限公司 数据字典生成方法、装置、电子设备和存储介质
CN113609481A (zh) * 2021-06-02 2021-11-05 西安四叶草信息技术有限公司 基于字节码的php污点分析方法及装置
CN114625660A (zh) * 2022-03-22 2022-06-14 阿里巴巴(中国)有限公司 调试方法及装置
CN116451228A (zh) * 2023-04-23 2023-07-18 北京安普诺信息技术有限公司 动态污点追踪方法、装置及相关在线污点传播分析系统
CN116467712A (zh) * 2023-04-23 2023-07-21 北京安普诺信息技术有限公司 动态污点追踪方法、装置及相关污点传播分析系统

Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140237603A1 (en) * 2013-02-20 2014-08-21 International Business Machines Corporation Rule matching in the presence of languages with no types or as an adjunct to current analyses for security vulnerability analysis
US20140283041A1 (en) * 2013-03-14 2014-09-18 Huawei Technologies Co.,Ltd. Malicious code detection technologies
CN104766012A (zh) * 2015-04-09 2015-07-08 广东电网有限责任公司信息中心 基于动态污点追踪的数据安全动态检测方法及系统
CN104765687A (zh) * 2015-04-10 2015-07-08 江西师范大学 基于对象跟踪和污点分析的j2ee程序漏洞检测方法
CN106022132A (zh) * 2016-05-30 2016-10-12 南京邮电大学 一种基于动态内容分析的网页木马实时检测方法
CN106055980A (zh) * 2016-05-30 2016-10-26 南京邮电大学 一种基于规则的JavaScript安全性检测方法
US20160364316A1 (en) * 2015-04-02 2016-12-15 International Business Machines Corporation Dynamic tracing framework for debugging in virtualized environments
US9558355B2 (en) * 2012-08-29 2017-01-31 Hewlett Packard Enterprise Development Lp Security scan based on dynamic taint
US20170161498A1 (en) * 2015-12-08 2017-06-08 enSilo Ltd. Systems and methods for detection of malicious code in runtime generated code
CN107623738A (zh) * 2017-09-28 2018-01-23 中南大学 一种面向安卓应用的WebView桥接口污点映射及分析方法
US20180330102A1 (en) * 2017-05-10 2018-11-15 Checkmarx Ltd. Using the Same Query Language for Static and Dynamic Application Security Testing Tools
CN109190372A (zh) * 2018-07-09 2019-01-11 四川大学 一种基于字节码的JavaScript恶意代码检测模型
CN109669876A (zh) * 2018-12-30 2019-04-23 艾普阳科技(深圳)有限公司 一种javascript代码的调试控制方法及系统
US10540258B2 (en) * 2017-07-17 2020-01-21 Sap Se Providing additional stack trace information for time-based sampling in asynchronous execution environments
CN110716910A (zh) * 2019-10-14 2020-01-21 中国建设银行股份有限公司 一种日志管理方法、装置、设备和存储介质
CN111240991A (zh) * 2020-01-20 2020-06-05 重庆富民银行股份有限公司 一种抗隐式污点传播的动态污点检测方法及系统

Patent Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9558355B2 (en) * 2012-08-29 2017-01-31 Hewlett Packard Enterprise Development Lp Security scan based on dynamic taint
US20140237603A1 (en) * 2013-02-20 2014-08-21 International Business Machines Corporation Rule matching in the presence of languages with no types or as an adjunct to current analyses for security vulnerability analysis
US20140283041A1 (en) * 2013-03-14 2014-09-18 Huawei Technologies Co.,Ltd. Malicious code detection technologies
US20160364316A1 (en) * 2015-04-02 2016-12-15 International Business Machines Corporation Dynamic tracing framework for debugging in virtualized environments
CN104766012A (zh) * 2015-04-09 2015-07-08 广东电网有限责任公司信息中心 基于动态污点追踪的数据安全动态检测方法及系统
CN104765687A (zh) * 2015-04-10 2015-07-08 江西师范大学 基于对象跟踪和污点分析的j2ee程序漏洞检测方法
US20170161498A1 (en) * 2015-12-08 2017-06-08 enSilo Ltd. Systems and methods for detection of malicious code in runtime generated code
CN106022132A (zh) * 2016-05-30 2016-10-12 南京邮电大学 一种基于动态内容分析的网页木马实时检测方法
CN106055980A (zh) * 2016-05-30 2016-10-26 南京邮电大学 一种基于规则的JavaScript安全性检测方法
US20180330102A1 (en) * 2017-05-10 2018-11-15 Checkmarx Ltd. Using the Same Query Language for Static and Dynamic Application Security Testing Tools
US10540258B2 (en) * 2017-07-17 2020-01-21 Sap Se Providing additional stack trace information for time-based sampling in asynchronous execution environments
CN107623738A (zh) * 2017-09-28 2018-01-23 中南大学 一种面向安卓应用的WebView桥接口污点映射及分析方法
CN109190372A (zh) * 2018-07-09 2019-01-11 四川大学 一种基于字节码的JavaScript恶意代码检测模型
CN109669876A (zh) * 2018-12-30 2019-04-23 艾普阳科技(深圳)有限公司 一种javascript代码的调试控制方法及系统
CN110716910A (zh) * 2019-10-14 2020-01-21 中国建设银行股份有限公司 一种日志管理方法、装置、设备和存储介质
CN111240991A (zh) * 2020-01-20 2020-06-05 重庆富民银行股份有限公司 一种抗隐式污点传播的动态污点检测方法及系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
梁彬: "JavaScript优化编译执行模式下的动态污点分析技术", 《清华大学学报 (自然科学版)》 *
梁彬等: "JavaScript优化编译执行模式下的动态污点分析技术", 《清华大学学报(自然科学版)》 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112926058A (zh) * 2021-03-25 2021-06-08 支付宝(杭州)信息技术有限公司 代码处理方法、污点分析方法和装置
CN113609481A (zh) * 2021-06-02 2021-11-05 西安四叶草信息技术有限公司 基于字节码的php污点分析方法及装置
CN113609481B (zh) * 2021-06-02 2024-01-30 西安四叶草信息技术有限公司 基于字节码的php污点分析方法及装置
CN113378517A (zh) * 2021-06-17 2021-09-10 中国工商银行股份有限公司 数据字典生成方法、装置、电子设备和存储介质
CN114625660A (zh) * 2022-03-22 2022-06-14 阿里巴巴(中国)有限公司 调试方法及装置
CN116451228A (zh) * 2023-04-23 2023-07-18 北京安普诺信息技术有限公司 动态污点追踪方法、装置及相关在线污点传播分析系统
CN116467712A (zh) * 2023-04-23 2023-07-21 北京安普诺信息技术有限公司 动态污点追踪方法、装置及相关污点传播分析系统
CN116451228B (zh) * 2023-04-23 2023-10-17 北京安普诺信息技术有限公司 动态污点追踪方法、装置及相关在线污点传播分析系统
CN116467712B (zh) * 2023-04-23 2023-12-01 北京安普诺信息技术有限公司 动态污点追踪方法、装置及相关污点传播分析系统

Also Published As

Publication number Publication date
CN112199274B (zh) 2022-05-03

Similar Documents

Publication Publication Date Title
CN112199274B (zh) 基于V8引擎的JavaScript动态污点跟踪方法及电子装置
Richards et al. An analysis of the dynamic behavior of JavaScript programs
Groß Fuzzil: Coverage guided fuzzing for javascript engines
ElWazeer et al. Scalable variable and data type detection in a binary rewriter
Hackett et al. Fast and precise hybrid type inference for JavaScript
CA2637798C (en) Computer process resource modelling method and apparatus
Molnar et al. Dynamic Test Generation to Find Integer Bugs in x86 Binary Linux Programs.
Martin et al. Finding application errors and security flaws using PQL: a program query language
EP3005121B1 (en) Debugging native code by transitioning from execution in native mode to execution in interpreted mode
US20080178149A1 (en) Inferencing types of variables in a dynamically typed language
US9164742B2 (en) Method and a system for searching for parts of a computer program which affects a given symbol
US10809985B2 (en) Instrumenting program code
CN110245467B (zh) 基于Dex2C与LLVM的Android应用程序保护方法
US10853041B2 (en) Extensible instrumentation
CN111736846B (zh) 一种面向动态分析的源代码插桩改进方法
Wei et al. State-sensitive points-to analysis for the dynamic behavior of JavaScript objects
Jensen et al. MemInsight: platform-independent memory debugging for JavaScript
Xu et al. Scalable runtime bloat detection using abstract dynamic slicing
CN112860265A (zh) 一种源代码数据库操作异常检测方法及装置
US10642714B2 (en) Mapping dynamic analysis data to source code
CN102722438B (zh) 一种内核调试的方法和设备
Schoofs et al. Ampyfier: Test amplification in python
Schilling et al. Vandalir: Vulnerability analyses based on datalog and llvm-ir
Cai et al. Calling-to-reference context translation via constraint-guided CFL-reachability
Stulova et al. Practical run-time checking via unobtrusive property caching

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
GR01 Patent grant
GR01 Patent grant