CN112883379B - 基于IAST的Node.js数据流跟踪方法及系统 - Google Patents

基于IAST的Node.js数据流跟踪方法及系统 Download PDF

Info

Publication number
CN112883379B
CN112883379B CN202110045803.9A CN202110045803A CN112883379B CN 112883379 B CN112883379 B CN 112883379B CN 202110045803 A CN202110045803 A CN 202110045803A CN 112883379 B CN112883379 B CN 112883379B
Authority
CN
China
Prior art keywords
stage
stack
node
iast
type
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.)
Active
Application number
CN202110045803.9A
Other languages
English (en)
Other versions
CN112883379A (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.)
Seczone Technology Co Ltd
Original Assignee
Seczone Technology Co Ltd
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 Seczone Technology Co Ltd filed Critical Seczone Technology Co Ltd
Priority to CN202110045803.9A priority Critical patent/CN112883379B/zh
Publication of CN112883379A publication Critical patent/CN112883379A/zh
Application granted granted Critical
Publication of CN112883379B publication Critical patent/CN112883379B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开一种基于IAST的Node.js数据流跟踪方法,包括:(1)在输入阶段,获取http请求参数,将参数的类型转换成引用类型,添加自定义stack属性,并将stack初始化为空数组;(2)在传播阶段,判断参数的类型是否为引用类型且具有自定义stack属性,若是,则在空数组追加当前传播阶段的堆栈信息,若否,则舍弃当前传播阶段的堆栈信息;(3)在安全编码阶段,将参数由引用类型转换成基本类型;(4)在输出阶段,判断参数是否为引用类型且具有自定义stack属性,若是,判定被测应用程序为存在威胁,并取出所有数组中的堆栈信息。本发明实现了在IAST过程中对Node.js数据流的跟踪。另,本发明还公开一种基于IAST的Node.js数据流跟踪系统、装置及计算机可读存储介质。

Description

基于IAST的Node.js数据流跟踪方法及系统
技术领域
本发明涉及软件安全测试技术领域,尤其涉及一种基于IAST的Node.js数据流跟踪方法、系统、装置及计算机可读存储介质。
背景技术
随着网络技术的发展,web应用的接口数量越来越多。Node是一个基于ChromeJavaScript运行时建立的平台,用以实现响应速度快、易于扩展的网络应用的搭建。Node使用事件驱动,非阻塞I/O模型,由于其适用于高并发、I/O接口密集的场景,成为了Web前端开发必不可少的基础设施。
为保证应用程序的正常运行,在上线前需要对其进行测试以避免带来安全威胁。IAST(Interactive Application Security Testing,交互式应用程序安全测试)融合了SAST和DAST技术的优点,无需源码,支持对字节码的检测,在安全测试领域得到了广泛的应用。但目前,暂时没有一种方法来实现IAST中对于Node.js数据流的跟踪。
发明内容
本发明的目的在于提供一种基于IAST的Node.js数据流跟踪方法及系统,以实现在IAST过程中对Node.js数据流的跟踪。
为实现上述目的,本发明提供了一种基于IAST的Node.js数据流跟踪方法,Node.js数据在IAST中依次经历输入阶段、传播阶段、安全编码阶段及输出阶段。所述Node.js数据流跟踪方法包括以下步骤:
(1)在输入阶段,获取http请求参数,将所述参数的类型转换成引用类型,添加自定义stack属性,并将stack初始化为空数组;
(2)在传播阶段,判断所述参数的类型是否为引用类型且具有自定义stack属性,若是,则在所述空数组追加当前传播阶段的堆栈信息,若否,则舍弃当前传播阶段的堆栈信息;
(3)在安全编码阶段,将所述参数由引用类型转换成基本类型;
(4)在输出阶段,判断所述参数是否为引用类型且具有自定义stack属性,若是,判定被测应用程序为存在威胁,并取出所有数组中的堆栈信息。
具体地,步骤(4)中,判断所述参数是否为引用类型且具有自定义stack属性时,若判断结果为否,则判定被测应用程序为不存在威胁,不执行任何操作。
为实现上述目的,本发明还提供了一种基于IAST的Node.js数据流跟踪系统。Node.js数据在IAST中依次经历输入阶段、传播阶段、安全编码阶段及输出阶段。所述Node.js数据流跟踪系统包括第一处理模块、第二处理模块、第三处理模块以及第四处理模块。其中,所述第一处理模块用于在输入阶段获取http请求参数,并将所述参数的类型转换成引用类型,以及添加自定义stack属性,并将stack初始化为空数组。所述第二处理模块用于在传播阶段判断所述参数的类型是否为引用类型且具有自定义stack属性,若是,则在所述空数组追加当前传播阶段的堆栈信息,若否,则舍弃当前传播阶段的堆栈信息。所述第三处理模块用于在安全编码阶段将所述参数由引用类型转换成基本类型。所述第四处理模块用于在输出阶段判断所述参数是否为引用类型且具有自定义stack属性,若是,判定被测应用程序为存在威胁,并取出所有数组中的堆栈信息。
具体地,所述第四处理模块判断所述参数是否为引用类型且具有自定义stack属性时,若判断结果为否,则判定被测应用程序为不存在威胁,不执行任何操作。
为实现上述目的,本发明还提供了一种基于IAST的Node.js数据流跟踪装置,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时,执行如上所述的基于IAST的Node.js数据流跟踪方法。
为实现上述目的,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序可被处理器执行以完成如上所述的基于IAST的Node.js数据流跟踪方法。
与现有技术相比,本发明是通过在输入阶段将http请求参数的类型转换成引用类型,然后添加自定义stack属性并将stack初始化为空数组,再在传播阶段判断参数类型为引用类型且具有自定义stack属性的情况下将当前传播阶段的堆栈信息添加至数组中,最后在输出阶段取出存在威胁的应用程序所对应的所有数组中的堆栈信息。本发明实现了在IAST过程中对Node.js数据流的跟踪,进而可以获得被测应用程序的安全性。
附图说明
图1为本发明基于IAST的Node.js数据流跟踪方法一实施例的流程图。
图2为本发明实施例基于IAST的Node.js数据流跟踪系统的组成框图。
图3为本发明基于IAST的Node.js数据流跟踪装置一实施例的结构框图。
具体实施方式
为了详细说明本发明的技术内容、构造特征,以下结合具体实施方式并配合附图作进一步说明。
本发明一实施例提供了一种基于IAST的Node.js数据流跟踪方法。在通过IAST测试平台(Interactive Application Security Testing,交互式应用程序安全测试)对应用程序进行安全测试的过程中,Node.js数据(即http请求)依次经历输入阶段、传播阶段、安全编码阶段及输出阶段。在输入阶段,通过调用一些函数从http请求中获取用户的输入;在传播阶段,若Node.js数据中存在有污点数据,该污点数据经过一些函数后,又会形成了新的污点数据;在安全编码阶段,通过调用编解码函数实现对Node.js数据的编解码操作;在输出阶段,通过调用一些函数输出Node.js数据,例如将Node.js数据输出到数据库或者页面。通过在前述各个阶段获取Node.js数据并对Node.js数据进行跟踪和处理,从而判断被测应用程序的安全性。如图1所示,本实施例的Node.js数据流跟踪方法包括以下步骤:
(1)在输入阶段,获取http请求参数,并将参数的类型转换成引用类型(具体如何实现参数类型的转换为现有技术);然后添加自定义stack属性,并将stack(栈)初始化为空数组(空栈)。对于Node,http请求包括有get请求、post请求等,http请求参数基本都是字符串形式的基本类型,由于基本类型无法添加自定义属性,通过先将基本类型转换成引用类型,然后进行自定义stack属性的添加。
(2)在传播阶段,判断参数的类型是否为引用类型且具有自定义stack属性,若是,则在空数组追加当前传播阶段的堆栈信息,以此实现经输入阶段处理(即将参数的类型转换成引用类型,添加自定义stack属性)后的参数(Node.js数据)的跟踪;若否,则舍弃当前传播阶段的堆栈信息,即是,舍弃没有经输入阶段处理过的Node.js数据,以确保Node.js数据的连续性。
(3)在安全编码阶段,将参数由引用类型转换成基本类型;此时,终止了堆栈信息的添加,结束了传播流程。
(4)在输出阶段,判断参数是否为引用类型且具有自定义stack属性,若是,则说明传播流程没有正常结束,判定被测应用程序为存在威胁,并取出所有数组中的堆栈信息,以此形成整个Node.js数据流,以便于后续对存在威胁的应用程序对应的堆栈信息进行分析,从而获取潜在的问题以及存在威胁的原因等。
其中,在执行上述步骤(1)-(4)之前,需要预先在被测试的应用程序所在服务器上安装代理程序,该代理程序用于与运行应用程序的虚拟机(如JVM)沟通,当应用程序启动后,通过代理程序和字节码插桩工具在应用程序的输入阶段、传播阶段、安全编码阶段及输出阶段中的关键函数内插入监测代码,然后通过监测代码获取到前述各个阶段的http请求参数。至于各个阶段中如何插入监测代码等来实现参数的获取为现有技术,在此不再赘述。
在该实施例中,步骤(4)中,在判断参数是否为引用类型且具有自定义stack属性时,若判断结果为否,则判定被测应用程序为不存在威胁;即,该应用程序为安全的,此时,无需取出所有数组中的堆栈信息进行分析,即是,不再执行任何操作。
为了实现上述Node.js数据流跟踪方法,本发明一实施例提供了一种基于IAST的Node.js数据流跟踪系统100。在通过IAST测试平台(Interactive Application SecurityTesting,交互式应用程序安全测试)对应用程序进行安全测试的过程中,Node.js数据(即http请求)依次经历输入阶段、传播阶段、安全编码阶段及输出阶段。如图2所示,该Node.js数据流跟踪系统100包括第一处理模块10、第二处理模块20、第三处理模块30以及第四处理模块40。
其中,第一处理模块10用于在输入阶段获取http请求参数,其在获取到http请求参数后,将前述参数的类型转换成引用类型,然后添加自定义stack属性,并将stack(栈)初始化为空数组(空栈)。对于Node,http请求包括有get请求、post请求等,http请求参数基本都是字符串形式的基本类型,由于基本类型无法添加自定义属性,通过先将基本类型转换成引用类型,然后进行自定义stack属性的添加。
第二处理模块20用于在传播阶段判断参数的类型是否为引用类型且具有自定义stack属性,若前述参数的类型为引用类型且具有自定义stack属性,则在空数组追加当前传播阶段的堆栈信息,以此实现经第一处理模块10(即将参数的类型转换成引用类型,添加自定义stack属性)后的参数(Node.js数据)的跟踪;否则,舍弃当前传播阶段的堆栈信息,即是,舍弃没有经第一处理模块10处理过的Node.js数据,以确保Node.js数据的连续性。
第三处理模块30用于在安全编码阶段将参数由引用类型转换成基本类型;此时,终止了堆栈信息的添加,结束了传播流程。
第四处理模块40用于在输出阶段判断参数是否为引用类型且具有自定义stack属性,若前述参数为引用类型且具有自定义stack属性,则说明传播流程没有正常结束,判定被测应用程序为存在威胁,并取出所有数组中的堆栈信息,以此形成整个Node.js数据流,以便于后续对存在威胁的应用程序对应的堆栈信息进行分析,从而获取潜在的问题以及存在威胁的原因等。
附带一提的是,该Node.js数据流跟踪系统300还应包括有代理模块(图未示)和插桩模块(图未示),代理模块用于预先在被测试的应用程序所在服务器上安装代理程序,该代理程序用于与运行应用程序的虚拟机(如JVM)沟通。插桩模块用于在应用程序启动后通过代理程序和字节码插桩工具在应用程序的输入阶段、传播阶段、安全编码阶段及输出阶段中的关键函数内插入监测代码,然后通过监测代码获取到前述各个阶段的http请求参数。至于代理模块、插桩模块如何配合以及在各个阶段中插入监测代码等来实现参数的获取为现有技术,在此不再赘述。
在该实施例中,第四处理模块40判断参数是否为引用类型且具有自定义stack属性时,若判断结果为否,则判定被测应用程序为不存在威胁;即,该应用程序为安全的,此时,无需取出所有数组中的堆栈信息进行分析,即是,不再执行任何操作。
请参阅图3,本发明还公开一种基于IAST的Node.js数据流跟踪装置200其包括处理器210、存储器220以及存储在存储器220中且被配置为由处理器210执行的计算机程序230,处理器210执行计算机程序230时,执行上述的基于IAST的Node.js数据流跟踪方法。
与现有技术相比,本发明是通过在输入阶段将http请求参数的类型转换成引用类型,然后添加自定义stack属性并将stack初始化为空数组,再在传播阶段判断参数类型为引用类型且具有自定义stack属性的情况下将当前传播阶段的堆栈信息添加至数组中,最后在输出阶段取出存在威胁的应用程序所对应的所有数组中的堆栈信息。本发明实现了在IAST过程中对Node.js数据流的跟踪,进而可以获得被测应用程序的安全性。
以上结合最佳实施例对本发明进行了描述,但本发明并不局限于以上揭示的实施例,而应当涵盖各种根据本发明的本质进行的修改、等效组合。

Claims (6)

1.一种基于IAST的Node.js数据流跟踪方法,Node.js数据在IAST中依次经历输入阶段、传播阶段、安全编码阶段及输出阶段,其特征在于,所述Node.js数据流跟踪方法包括以下步骤:
(1)在输入阶段,获取http请求参数,将所述参数的类型转换成引用类型,添加自定义stack属性,并将stack初始化为空数组;
(2)在传播阶段,判断所述参数的类型是否为引用类型且具有自定义stack属性,若是,则在所述空数组追加当前传播阶段的堆栈信息,若否,则舍弃当前传播阶段的堆栈信息;
(3)在安全编码阶段,将所述参数由引用类型转换成基本类型;
(4)在输出阶段,判断所述参数是否为引用类型且具有自定义stack属性,若是,判定被测应用程序为存在威胁,并取出所有数组中的堆栈信息。
2.如权利要求1所述的基于IAST的Node.js数据流跟踪方法,其特征在于,步骤(4)中,判断所述参数是否为引用类型且具有自定义stack属性时,若判断结果为否,则判定被测应用程序为不存在威胁,不执行任何操作。
3.一种基于IAST的Node.js数据流跟踪系统,Node.js数据在IAST中依次经历输入阶段、传播阶段、安全编码阶段及输出阶段,其特征在于,所述Node.js数据流跟踪系统包括:
第一处理模块,用于在输入阶段获取http请求参数,并将所述参数的类型转换成引用类型,以及添加自定义stack属性,并将stack初始化为空数组;
第二处理模块,用于在传播阶段判断所述参数的类型是否为引用类型且具有自定义stack属性,若是,则在所述空数组追加当前传播阶段的堆栈信息,若否,则舍弃当前传播阶段的堆栈信息;
第三处理模块,用于在安全编码阶段将所述参数由引用类型转换成基本类型;以及
第四处理模块,用于在输出阶段判断所述参数是否为引用类型且具有自定义stack属性,若是,判定被测应用程序为存在威胁,并取出所有数组中的堆栈信息。
4.如权利要求3所述的基于IAST的Node.js数据流跟踪系统,其特征在于,所述第四处理模块判断所述参数是否为引用类型且具有自定义stack属性时,若判断结果为否,则判定被测应用程序为不存在威胁,不执行任何操作。
5.一种基于IAST的Node.js数据流跟踪装置,其特征在于,包括:
处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时,执行如权利要求1至2任一项所述的基于IAST的Node.js数据流跟踪方法。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序可被处理器执行以完成如权利要求1至2任一项所述的基于IAST的Node.js数据流跟踪方法。
CN202110045803.9A 2021-01-13 2021-01-13 基于IAST的Node.js数据流跟踪方法及系统 Active CN112883379B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110045803.9A CN112883379B (zh) 2021-01-13 2021-01-13 基于IAST的Node.js数据流跟踪方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110045803.9A CN112883379B (zh) 2021-01-13 2021-01-13 基于IAST的Node.js数据流跟踪方法及系统

Publications (2)

Publication Number Publication Date
CN112883379A CN112883379A (zh) 2021-06-01
CN112883379B true CN112883379B (zh) 2023-04-25

Family

ID=76045849

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110045803.9A Active CN112883379B (zh) 2021-01-13 2021-01-13 基于IAST的Node.js数据流跟踪方法及系统

Country Status (1)

Country Link
CN (1) CN112883379B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2013204554A1 (en) * 2008-04-24 2013-05-09 Cameron Stewart Moore System and method for tracking usage
CN110688659A (zh) * 2019-09-10 2020-01-14 深圳开源互联网安全技术有限公司 基于iast测试工具动态检测水平越权的方法及系统
CN111046396A (zh) * 2020-03-13 2020-04-21 深圳开源互联网安全技术有限公司 web应用测试数据流跟踪方法及系统
CN111277643A (zh) * 2020-01-18 2020-06-12 深圳市麦谷科技有限公司 一种http链路跟踪记录方法及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11003566B2 (en) * 2018-12-31 2021-05-11 Paypal, Inc. Tracking data flow through data services using a processing request identifier in callstack data

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2013204554A1 (en) * 2008-04-24 2013-05-09 Cameron Stewart Moore System and method for tracking usage
CN110688659A (zh) * 2019-09-10 2020-01-14 深圳开源互联网安全技术有限公司 基于iast测试工具动态检测水平越权的方法及系统
CN111277643A (zh) * 2020-01-18 2020-06-12 深圳市麦谷科技有限公司 一种http链路跟踪记录方法及系统
CN111046396A (zh) * 2020-03-13 2020-04-21 深圳开源互联网安全技术有限公司 web应用测试数据流跟踪方法及系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
熊菊霞¨等.高维数据流异常节点动态跟踪仿真研究.《计算机仿真》.2020,第37卷(第10期),第445-449页. *
马天力等.基于数据流聚类的多目标跟踪算法.《西北工业大学学报》.2015,第33卷(第3期),第506-511页. *

Also Published As

Publication number Publication date
CN112883379A (zh) 2021-06-01

Similar Documents

Publication Publication Date Title
CN111046396B (zh) web应用测试数据流跟踪方法及系统
CN111813701B (zh) 基于http的接口测试方法、装置、计算机设备及存储介质
CN110941534A (zh) 检测web应用第三方代码调用的方法及系统
CN111124937B (zh) 基于插桩函数辅助提高生成测试用例效率的方法及系统
CN114416481A (zh) 日志分析方法、装置、设备及存储介质
CN112883379B (zh) 基于IAST的Node.js数据流跟踪方法及系统
CN116361793A (zh) 代码检测方法、装置、电子设备及存储介质
CN113656044B (zh) 安卓安装包压缩方法、装置、计算机设备及存储介质
CN112230895B (zh) 一种el表达式解析方法、装置、设备及存储介质
CN115328753A (zh) 一种故障预测方法及装置、电子设备、存储介质
CN114676436A (zh) 一种基于结构化变异的安卓应用多媒体解析库漏洞挖掘系统及方法
CN112181816A (zh) 一种基于场景的接口测试方法、装置、计算机设备及介质
CN112748930A (zh) 编译检测方法、装置、设备及存储介质
CN111444671A (zh) pdf文件在线预览方法、装置、计算机设备和存储介质
CN111309575A (zh) 启动和停止测试工具的方法、装置、服务器及存储介质
CN111931184B (zh) 反序列化漏洞检测方法及装置
CN117614681B (zh) 智能合约的重入漏洞检测方法、系统、设备和存储介质
CN116910756B (zh) 一种恶意pe文件的检测方法
CN116305131B (zh) 脚本静态去混淆方法及系统
CN117130917B (zh) 一种容器化Java应用的灰盒测试方法、装置及系统
CN111078538B (zh) 基于jmh的规则自动化测试的方法
CN110012023B (zh) 一种投毒式的防爬方法、系统、终端及介质
CN117827680A (zh) 一种接口测试的方法、装置及服务器
CN117112341A (zh) 一种基于asm字节码插桩的非入侵准实时监控方法及系统
CN117909177A (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
GR01 Patent grant
GR01 Patent grant