CN113934507A - 基于污点标志跟踪检测jQuery库隐私泄露的方法和装置 - Google Patents
基于污点标志跟踪检测jQuery库隐私泄露的方法和装置 Download PDFInfo
- Publication number
- CN113934507A CN113934507A CN202010673976.0A CN202010673976A CN113934507A CN 113934507 A CN113934507 A CN 113934507A CN 202010673976 A CN202010673976 A CN 202010673976A CN 113934507 A CN113934507 A CN 113934507A
- Authority
- CN
- China
- Prior art keywords
- taint
- data
- function
- propagation
- mark
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45529—Embedded in an application, e.g. JavaScript in a Web browser
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
-
- 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/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/436—Semantic checking
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Medical Informatics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Storage Device Security (AREA)
Abstract
本发明涉及一种基于污点标志跟踪检测jQuery库隐私泄露的方法。该方法包括:获取jQuery库文件并对该jQuery库文件的源代码进行解析以生成抽象语法树;通过对敏感数据标记污点标志来定义污点数据对象;根据预定义的污点标志传播规则,对所述抽象语法树中包含数据传递的函数进行语义和控制流的改写,并在数据传递过程中针对各个函数相关联地保持敏感数据和污点标志,进而对污点标志在数据传递过程中的传播进行跟踪;以及基于改写后的抽象语法树,监测调用jQuery库中的函数发送敏感数据的发送行为。
Description
技术领域
本发明涉及网络与信息安全技术领域,特别涉及jQuery库的安全性。
背景技术
随着Web技术的快速发展,部署在网站应用的功能正越来越多的通过JavaScript代码在客户端实现。软件开发人员在应用程序开发过程中对第三方JavaScript库的使用非常广泛。然而,由于JavaScript语言本身所具有的动态复杂性和其在语言水平缺乏隔离和保护机制,网页和第三方代码并存于一个共享的环境,使得它们之间的相互作用经常导致安全问题。虽然大多数浏览器都为JavaScript应用程序提供了相应的安全方案,如采用同源策略预防和使用沙盒隔离安全性未知的代码等,但是这些安全机制只是一种相对简单的保护方案。针对安全机制的研究,目前的工作主要集中在对原生JavaScript的安全检测,而很少关注JavaScript库代码带来的安全问题。
jQuery库作为一种优秀的JavaScript库被广泛使用,但jQuery库的使用在给开发带来便利的同时,同样也引入隐私泄露的问题。由于jQuery库中的函数对数据流的传输过程未做检测,因此攻击者可以利用该安全问题窃取用户的隐私数据。
发明内容
针对jQuery库隐私泄露问题的检测,目前尚未提出有效的解决方案。现有的基于组件关联的应用隐私泄露问题检测方法,只关注检测利用组件间通信机制对用户敏感数据窃取的行为,却无法针对jQuery库中的隐私数据泄露进行检测。因此,针对该问题,期望提出一种针对jQuery库隐私泄露的检测方法。
本发明的目的在于提供一种基于污点标志跟踪检测jQuery库隐私泄露的方法。
在下文中给出了关于本发明的简要概述,以便提供关于本发明的一些方面的基本理解。但是,应当理解,这个概述并不是关于本发明的穷举性概述。它并不是意图用来确定本发明的关键性部分或重要部分,也不是意图用来限定本发明的范围。其目的仅仅是以简化的形式给出关于本发明的某些概念,以此作为稍后给出的更详细描述的前序。
本发明的一个方面涉及一种基于污点标志跟踪检测jQuery库隐私泄露的方法,包括:获取jQuery库文件并对该jQuery库文件的源代码进行解析以生成抽象语法树;通过对敏感数据标记污点标志来定义污点数据对象;根据预定义的污点标志传播规则,对所述抽象语法树中包含数据传递的函数进行语义和控制流的改写,并在数据传递过程中针对各个函数相关联地保持敏感数据和污点标志,进而对污点标志在数据传递过程中的传播进行跟踪;以及基于改写后的抽象语法树,监测调用jQuery库中的函数发送敏感数据的发送行为。
本发明的一个方面涉及一种基于污点标志跟踪检测jQuery库隐私泄露的装置,包括:存储器;以及处理器,所述处理器耦合到所述存储器,并且被配置为执行上述基于污点标志跟踪检测jQuery库隐私泄露的方法。
本发明的一个方面涉及一种其上存储有可执行指令的计算机可读存储介质,当所述可执行指令由计算机执行时,使所述计算机执行上述基于污点标志跟踪检测jQuery库隐私泄露的方法。
根据本发明的实施例的基于污点标志跟踪检测jQuery库隐私泄露的方法实现了对调用jQuery库函数发送隐私数据的行为的全面监测,从而能够提前发现潜在隐私数据泄露行为,保证了网站用户隐私数据安全。此外,本发明可独立于JavaScript引擎,因此可以适用于多种浏览器,具有准确率高、适用性好的特点。
通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其他特征及其优点将会变得更为清楚。
附图说明
构成说明书的一部分的附图描述了本发明的示例性实施例,并且连同说明书一起用于解释本发明的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本发明,其中:
图1是示出根据本发明的示例性实施例的基于污点标志跟踪检测jQuery库隐私泄露的方法的流程图;以及
图2是示出根据本发明的示例性实施例的基于污点标志跟踪检测jQuery库隐私泄露的装置的示意图。
具体实施方式
在下文中,将参照附图详细地描述本发明内容的优选示例性实施例。注意,在本说明书和附图中,有时在不同的附图之间共同使用同一附图标记来表示相同部分或具有相同功能的部分,因而省略其重复说明。在本说明书中,使用相似的标号和字母表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
为了便于理解,在附图等中所示的各结构的位置、尺寸及范围等有时不表示实际的位置、尺寸及范围等。因此,所公开的发明并不限于附图等所公开的位置、尺寸及范围等。
下面将参照附图来详细描述本发明的示例性实施例。应注意到:除非另外具体说明,否则在这些示例性实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。也就是说,本文中的通信设备和通信方法是以示例性的方式示出,来说明本发明中的结构和方法的示例性实施例。然而,本领域技术人员将会理解,它们仅仅说明可以用来实施的本发明的示例性方式,而不是穷尽的方式。此外,附图不必按比例绘制,一些特征可能被放大以示出具体组件的细节。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。
在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其他示例可以具有不同的值。
图1是示出根据本发明的示例性实施例的基于污点标志跟踪检测jQuery库隐私泄露的方法的流程图。
为了能够有效地监测jQuery库中的隐私泄露行为,根据本发明的示例性实施例的基于污点标志跟踪检测jQuery库隐私泄露的方法100被构造为包括敏感数据标记、污点标志传播和污点标志检测三部分,具体而言,包括步骤S102-S108。接下来,将结合图1对敏感数据标记、污点标志传播和污点标志检测各部分进行详细说明。
1.敏感数据标记
在步骤S102处,获取jQuery库文件并对该jQuery库文件的源代码进行解析以生成抽象语法树。
抽象语法树(Abstract Syntax Tree,AST)或简称语法树(Syntax tree),是源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。之所以说语法是“抽象”的,是因为这里的语法并不会表示出真实语法中出现的每个细节。比如,嵌套括号被隐含在树的结构中,并没有以节点的形式呈现;而类似于if-condition-then这样的条件跳转语句,可以使用带有两个分支的节点来表示。
例如,通过后续遍历的顺序对待改写的jQuery库文件进行解析来生成抽象语法树。
在步骤S104处,通过对敏感数据标记污点标志来定义污点数据对象。
如果一个数据源携带的信息可以被攻击者滥用发起攻击或了解用户的信息,则该数据就被认为是隐私敏感的,即为敏感数据。根据本公开的实施例,敏感数据可以包括Cookie、域名、修改时间、URL与页面位置相关的信息等。通过使敏感数据本身携带污点标志来定义污点数据对象。例如,表1示出了通常的敏感数据示例。
表1敏感数据示例
对象 | 属性值 |
Document | Cookie,domain,forms,lastModified,links,referrer,URL |
Form | Action,src |
Form input | Checked,defaultValue,name,value,selectedIndex |
History | Current,next,previous,toString |
Select option | defaultSelected,selected,text,value |
Location | Host,hostname,href,pathname,port,protocol,hash |
Window | defaultStatus,status |
Iframe,Image | src |
污点标志是用于标记一种数据类型是否是会导致用户隐私泄露的敏感数据的标志位。
例如,在jQuery库文件中加入敏感数据标记模块,以对敏感数据进行标记。在应用程序开始时定义一个特殊的数据类型作为污点数据对象,在该污点数据对象中添加一个字段域作为标志位来标记该数据是否为敏感数据。通过字段域中的标志位可以判断该数据是否为敏感数据,也就是说,可以通过一个数据携带的污点标志来判断其是否为敏感数据。
此外,在对某一数据进行敏感数据标记时,是以定义的数据结构代替了其原来的数据结构。因此,当某个数据通过敏感数据标记成为污点数据对象时,其自身的数据结构将被改变。由于不同的数据类型对应不同的数据操作方法,因此也需要对该数据原先的操作进行的改动,否则原应用程序会出错。
鉴于此,需要在污点数据对象中同时存储敏感数据的真实值和污点标志位,其中Org属性的值是真实值,Tainted属性是布尔型的标志位,其示例代码如下:
function tainted_object(org,tainted){
this.Org=org;//真实值
this.Tainted=tainted;//标识位
}
由于污点数据对象中同时存储敏感数据的真实值和污点标志,因此允许敏感数据本身可以携带污点标志,从而有助于实现后续对敏感数据泄露行为的检测。同时,由于污点数据对象中存储敏感数据的真实值,因此其本身所涉及的运算和控制能够顺利进行,而不受污点标志的影响。
2.污点标志传播
在步骤S106处,根据预定义的污点标志传播规则,对所述抽象语法树中包含数据传递的函数进行语义和控制流的改写,并在数据传递过程中针对各个函数相关联地保持敏感数据和污点标志,从而对污点标志在数据传递过程中的传播进行跟踪。
在完成敏感数据标记后,需要跟踪污点标志的传播,即跟踪应用程序中哪些数据会受到污点标志的影响。随着敏感数据在应用程序中从一个实体流向另一个实体的过程中,污点标志沿同样的方向和目的流动。在对敏感数据进行污点标志跟踪中,跟踪的起始点是敏感数据,即初始的污点数据对象。跟踪敏感数据在应用程序中的流动情况,进而分析在敏感数据的流动过程中受到污点标志影响的数据。根据本发明的实施例的方法通过对敏感数据在应用程序中的流动过程进行监测来获得jQuery库文件中受影响的逻辑结构,从而实现对源代码的不依赖性。
此外,在污点标志跟踪中,要求污点数据对象一方面要执行敏感数据原来的操作,另一方面要根据定义的污点标志传播规则进行污点标志传播。因此,在改写jQuery库时除了要实现污点标志的自我跟踪功能,还要保证应用程序原功能不受影响。
鉴于此,根据本发明的实施例的方法进行代码改写的基本思想是对各种类型的数据操作进行函数封装,在函数内部同时实现如下两种功能:数据所属的原操作和污点标志的传播。也就是说,分别对污点数据对象的Org和Tainted字段进行计算,然后再根据相应的情况返回结果。例如,在封装函数内部进行原操作和污点标志传播,再根据相应的情况返回结果,从而实现污点标志传播和累积,并保证原操作的完整性。
以二元运算表达式“a+b”的改写为例,用binary()函数替换原来的二元运算表达式。binary()函数为二元运算表达式的封装函数,在binary()函数的实现中,首先取出两个操作数的污点标志进行或运算,这意味着两个操作数中只要有一个操作数是污点数据对象,则计算结果也是污点数据对象。在处理完污点标志之后,binary()函数取出两个操作数的真实值来进行原运算,最后将两次计算得到的结果赋给新建的污点数据对象,并返回该对象。
封装函数示例代码如下所示:
为了更为清晰地呈现数据传递过程中的污点标志操作,且便于理解根据本发明的实施例的抽象语法树的改写,在根据本发明的实施例的方法中,将预定义的污点标志传播规则分为显式传播规则和隐式传播规则两种类型。
显式传播规则被定义为数据依赖的信息流传播。赋值运算、算术逻辑运算和函数调用中的参数传递采取显式传播规则。例如,赋值运算符左边变量所对应的存储空间中的数据是否应该是敏感数据,取决于运算符右边的数据的污点标志属性。算术逻辑的运算结果是否应该被打上污点标志,取决于参与运算的操作数的污点标志属性。在函数调用语句中,函数参数由实参传给形参,不管是引用传递还是值传递,都看作是赋值操作。
进一步而言,显式传播规则是通过赋值、算术(+,-,*,/等)和逻辑运算等方式进行传播。对于赋值运算,它的作用就是把运算符右边对象的数据从其存储空间里读取出来,然后存储到运算符左边对象的存储空间中,赋值运算符左边对象存储空间中的数据是否为是污点数据对象则完全取决于赋值运算符右边的数据的污点标志属性。
本方法采用的显示污点标志传播规则如表2所示。
表2显式传播规则
隐式传播规则被定义为控制依赖的信息流传播。控制循环语句的污点标志传播采用隐式传播规则。进一步而言,隐式传播规则主要通过控制流(分支,循环等)和函数调用等实现。对于控制结构和循环结构来说,控制循环中的语句块除了根据显式传播规则进行污点标志传播以外,还要考虑控制依赖关系。若某一语句块处于污点标志作用域中时,则意味着该语句块中的语句得以执行取决于某个污点标志判断条件,也意味着在某些情况下,该语句块是不可能执行的。依赖于判断条件的语句块,其是否应该处于污点标志作用域中,取决于判断条件的污点标志属性。若判断条件的取值与敏感数据有关,则依赖于判断条件的语句块是处于污点标志作用域中的,同时在污点标志作用域中,所有对地址空间里的数据的写操作都要受到影响,即被打上污点标志。污点标志传播规则同样适用于处于污点标志作用域中的函数,即处于污点标志作用域中的函数,其所对应的语句块同样处于污点标志作用域中。本方法采用的隐式传播规则如表3所示。
表3隐式传播规则
针对jQuery库而言,通过人工分析代码库中的函数可以发现污点源主要来源于用户的输入点,即不应该信任用户的任何输入。如果不对用户输入内容进行验证处理就可能导致危险。
例如,在jQuery库中的jQuery库.html()函数中,可以通过修改DOM的函数造成隐私泄露。其原理是设置所有p元素的内容,同时输入到html()函数的字符串作为污点源进入到代码中。通过html()向DOM中插入img标签后,由于src不存在,从而调用onerror事件函数向攻击者发送用户的cookie隐私数据。示例代码如下所示:
此外,除了直接操作DOM的函数可能造成隐私数据泄露外,还存在可以通过发起HTTP请求传输隐私数据在jQuery库底层AJAX造成隐私数据泄露的函数,诸如jQuery库.ajax()类函数。通常,由$.get()、$.post()等来实现数据的传输,$.ajax()返回其创建的XMLHttpRequest对象,在传输数据的过程中可能会造成隐私数据的传播,从而形成危险点。通过$.ajax()保存数据,URL被修改为攻击者的服务器地址。当调用这个ajax()函数时,会向攻击者发出一个POST请求,同时在data中传输了用户的cookie,因此,在此处ajax()函数成为一个危险点。
在jQuery库中,get()和post()函数都是通过远程HTTP请求载入信息。在请求网页,传送2个参数,其中包括了用户的隐私数据cookie,并将运行后的返回值通过一个弹框显示给用户。post()函数和get()函数过程一样,只是请求的方式不同。示例代码如下所示:
通过对jQuery库中的函数进行人工分析统计,总结了可能存在隐私泄露问题的函数点,如表4所示。
表4 jQuery库中存在隐私泄露问题的函数
根据本发明的实施例的抽象树语法树改写过程在定义语义重写函数的同时添加一个新的语义操作,控制流重写函数,即在调用循环控制函数之前添加一个标志操作,实现污点标志跟踪,从而确保信息的完整性的同时保持原始操作语义。
以表达式e1 op e2为例,除了一般的二进制操作,它还需要进行敏感数据标记操作,即污点标志累积,其结果是一个e1和e2的污点标志组合。也就是说,污点标志累积操作将与应用程序中每个操作一起执行,如读、写、函数调用以及算术等。污点标志累积操作包括污点标志注入、传播和检查。污点标志注入和检查是随着读和写操作被执行,污点标志传播随着算术运算和逻辑运算被执行。通过对语法结构进行遍历和属性类型匹配,对抽象语法树进行重新构造,将函数中的赋值表达式和回调函数进行重新改写。接着,对var类型变量声明语句进行改写,将声明改变成赋值类型,重新构造句式形式,然后判断代码中a=b.replace("1","2");的格式,在调用字符串的var a=b.replace()函数前进行改写。不同句式类型的语义重写定义如表5所示。
表5不同句式类型的语义重写
在本发明的实施例中,控制流的重写函数包括转换分支的语法,循环和应用程序。这些功能在流之前和之后插入一对函数传送指令,如一对函数scripteenter(ID,URL)和scriptexit(ID)插在一个脚本的开始和结束;functionenter(ID功能)和functionexit(ID)插入功能的开始和结束;controlEnter(ID)和controlexit(ID)插在一个分支的开始和结束。参数id是控制流的位置,这个数字分配开始为1且逐渐增加,配对函数的id有相同的值。这些功能给我们的系统提供了很大的灵活性,例如,备份和恢复状态信息,统计的脚本加载时间和执行时间,监测特定功能的执行,并过滤危险的网址脚本。本发明使用它备份和恢复全局污点标志来实现间接和隐式流的控制。
对于控制循环语句,其判断条件表达式的返回值只能是布尔类型。然而,在增加实现污点标志跟踪的功能后,判断条件表达式的值却可能不是布尔值。因此,在对代码进行改写的过程中,需要处理循环语句的判断条件的类型,使得返回值是布尔类型。getVal_taint_area()函数是判断表达式的封装函数,temp_taint_area为全局变量,用于标识污点标志作用域。例如,控制循环语句的封装函数示例代码如下所示:
以上便是对jQuery库中可能存在隐私泄露问题的函数改写的具体说明。但要注意的是,上述可能存在隐私泄露问题的函数仅是示例性说明,并不构成对本发明的限制。也就是说,只要敏感数据在数据传递中所影响的函数,均应被视为可能存在隐私泄露问题的函数。
此外,可以将基于上述函数改写和污点标志跟踪方法改写后的抽象语法树生成jQuery库代码,并添加为污点标志跟踪模块。
3.污点标志检测
在步骤S108处,基于改写后的抽象语法树,监测调用jQuery库函数发送敏感数据的发送行为。
如上所述,污点数据对象是由数据位置确定的,其由对象的名称和属性组成,被用来识别和检测敏感数据。例如,元组('document”,'cookie')是一个数据的位置,表示document对象的属性。对象是在堆中分配,并且可以被认为是匿名的,由引用它们的堆位置所代表。因为一个引用是从名称到对象的绑定,对象可能是别名的,当两个引用指向同一对象时,会出现别名情况,敏感数据别名的存在对于检测造成了显著的挑战和困难。例如,对于C1=document.cookie;d=document;C2=d.cookie,D是对象document的别名,所以他们有不同的数据位置,因此在读取对象d的属性“cookie”时会造成机密性检查的逃脱。当写入别名对象的属性时,也有类似的情况。
鉴于此,在本发明的实施例中,可以通过上述函数改写方式,增加基于污点标志跟踪的污点数据对象检测功能。
具体而言,在简单初始化时为每个对象添加一个别名字段区域来识别对象的名字。考虑上面所述的元组作为示例,开始时,document对象没有别名字段;在赋值语句d=document后,document对象将以一个原本的document值来初始化别名域。因为对象别名初始化只执行一次,我们可以指定document对象给任何变量,将代表相同的数据位置。通过对抽象语法树进行解析、分析、匹配和改写,从而实现污点标志检测功能,即敏感数据检测功能。例如,JSONArray before_call_jQuery库_html()函数是应用程序中对jQuery库中调用$.html()函数的匹配和改写,通过改写抽象语法来实现污点标志检测模块,若检测$.html()中敏感数据流向不可信的第三方,即中止传播并向用户发出警报,示例代码如下所示:
public static JSONArray before_call_jQuery库_html(JSONObject object,JSONArray args,String realfun)//改写jQuery库代码中html函数的抽象语法树,增加污点标志检测模块
简而言之,根据本发明实施例的基于污点标志跟踪检测jQuery库隐私泄露的方法根据如上所述函数改写规则对抽象语法树进行解析、分析、匹配和改写,进而对根据人工分析获得的jQuery库中存在隐私泄露问题的函数(诸如DOM操作函数和网络连接函数)进行改写,从而实现污点标志检测功能。
例如,通过在jQuery库中进行网络连接的函数位置处对污点数据对象的污点标志进行判断,来判定是否存在调用jQuery库中的函数将敏感数据发送到不信任的第三方的行为。
一方面,如果发现存在调用jQuery库中的函数将敏感数据发送到不信任的第三方的发送行为,则终止该发送行为并向用户发出警报。
另一方面,如果发现发送行为未调用jQuery库中的函数将敏感数据发送到不信任的第三方,则正常进行该发送行为。
此外,该污点标志检测功能可以被生成jQuery库代码,从而添加为污点标志检测模块。
图2是示出根据本发明的示例性实施例的基于污点标志跟踪检测jQuery库隐私泄露的装置的示意图。
此外,根据本发明的实施例的基于污点标志跟踪检测jQuery库隐私泄露的装置200可以包括处理器201、存储器202、显示器203、通信单元204、外部接口(I/F)205以及总线206。
处理器201可以为例如中央处理单元(CPU)或数字信号处理器(DSP),并且控制装置200的功能。
存储器202包括随机存取存储器(RAM)和只读存储器(ROM),并且存储数据和由处理器201执行的应用程序。存储器202用作处理器201的工作区域。当执行诸如应用的应用程序时,执行所需的各种数据被加载到存储器202中。
此外,代替ROM或除了ROM之外,还可以设置HDD(硬盘驱动器)、闪存或诸如固态存储器的另一非易失性存储器。然后,在这些存储设备中,可以存储上述各种数据或应用程序。
显示器203是使用液晶、电致发光(EL)等的显示设备。显示器203用于显示经处理器201处理的数据以及从存储器202加载的数据等。
通信单元204用于将根据本发明的实施例的装置连接到各移动站。例如,作为通信单元204,设置诸如WIFI的无线LAN模块或诸如蓝牙(注册商标)的短距离无线模块。
外部接口(I/F)205是用于基于诸如USB和HDMI(注册商标)(高清晰度多媒体接口)的标准来连接到外部装置的接口。此外,可以配置用于连接到诸如存储棒的各种存储卡的接口。
总线206将处理器201、存储器202、显示器203、通信单元204和外部接口(I/F)205彼此连接。总线206可以包括各自具有不同速度的两个或更多个总线(诸如高速总线和低速总线)。
由具有上述硬件配置的根据本发明的实施例的装置执行的信息处理通过存储在ROM等中的软件和装置的硬件资源的协作来实现。例如,通过处理器(CPU)将存储在ROM等中的根据本技术的应用程序(应用)加载到RAM中以执行它,实现了根据本技术的排水口流量检测方法。为了实现这些块,可以适当地使用专用硬件。
诸如应用的应用程序从例如全球网络安装在根据本发明的实施例的装置中。或者,应用程序可以经由记录介质安装在根据本发明的实施例的装置中。
注意,图2所示的装置200适用于执行上述参考图1所述的方法。但为了避免对本发明的不必要的模糊,在此省略对其的详细描述。
基于如上参考图1和图2所述的根据本发明的示例性实施例的基于污点标志跟踪检测jQuery库隐私泄露的方法和装置,实现了对调用jQuery库函数发送隐私数据的行为的全面监测,从而能够提前发现潜在隐私数据泄露行为,保证网站用户隐私数据安全。此外,本发明可独立于JavaScript引擎,可以适用于多种浏览器,因此具有准确率高、适用性好的特点。
本领域技术人员应当知道,本公开被实施为一方法、系统、装置或作为计算机应用程序产品的计算机可读媒体(例如非瞬态存储介质)。因此,本公开可以实施为各种形式,例如完全的硬件实施例、完全的软件实施例(包括固件、常驻软件、微应用程序代码等),或者也可实施为软件与硬件的实施形式,在以下会被称为“电路”、“模块”或“系统”。此外,本公开也可以任何有形的媒体形式实施为计算机应用程序产品,其具有计算机可使用应用程序代码存储于其上。
本公开的相关叙述参照根据本公开具体实施例的方法、系统、装置及计算机应用程序产品的流程图和/或框图来进行说明。可以理解每一个流程图和/或框图中的每一个块,以及流程图和/或框图中的块的任何组合,可以使用计算机应用程序指令来实施。这些计算机应用程序指令可供通用型计算机或特殊计算机的处理器或其他可编程数据处理装置所组成的机器来执行,而指令经由计算机或其他可编程数据处理装置处理以便实施流程图和/或框图中所说明的功能或操作。
在附图中显示根据本公开各种实施例的方法、系统、装置及计算机应用程序产品可实施的架构、功能及操作的流程图及框图。因此,流程图或框图中的每个块可表示一模块、区段、或部分的应用程序代码,其包括一个或多个可执行指令,以实施指定的逻辑功能。另外应当注意,在某些其他的实施例中,块所述的功能可以不按图中所示的顺序进行。举例来说,两个图示相连接的块事实上也可以同时执行,或根据所涉及的功能在某些情况下也可以按图标相反的顺序执行。此外还需注意,每个框图和/或流程图的块,以及框图和/或流程图中块的组合,可藉由基于专用硬件的系统来实施,或者藉由专用硬件与计算机指令的组合,来执行特定的功能或操作。
如在此所使用的,词语“示例性的”意指“用作示例、实例或说明”,而不是作为将被精确复制的“模型”。在此示例性描述的任意实现方式并不一定要被解释为比其他实现方式优选的或有利的。而且,本发明不受在上述技术领域、背景技术、发明内容或具体实施方式中所给出的任何所表述的或所暗示的理论所限定。
如在此所使用的,词语“基本”意指包含由设计或制造的缺陷、器件或元件的容差、环境影响和/或其他因素所致的任意微小的变化。词语“基本”还允许由寄生效应、噪音以及可能存在于实际的实现方式中的其他实际考虑因素所致的与完美的或理想的情形之间的差异。
另外,仅仅为了参考的目的,还可以在本文中使用“第一”、“第二”等类似术语,并且因而并非意图限定。例如,除非上下文明确指出,否则涉及结构或元件的词语“第一”、“第二”和其他此类数字词语并没有暗示顺序或次序。
还应理解,“包括/包含”一词在本文中使用时,说明存在所指出的特征、整体、步骤、操作、单元和/或组件,但是并不排除存在或增加一个或多个其他特征、整体、步骤、操作、单元和/或组件以及/或者它们的组合。
在本发明中,术语“提供”从广义上用于涵盖获得对象的所有方式,因此“提供某对象”包括但不限于“购买”、“制备/制造”、“布置/设置”、“安装/装配”、和/或“订购”对象等。
本领域技术人员应当意识到,在上述操作之间的边界仅仅是说明性的。多个操作可以结合成单个操作,单个操作可以分布于附加的操作中,并且操作可以在时间上至少部分重叠地执行。而且,另选的示例性实施例可以包括特定操作的多个实例,并且在其他各种示例性实施例中可以改变操作顺序。但是,其他的修改、变化和替换同样是可能的。因此,本说明书和附图应当被看作是说明性的,而非限制性的。
另外,本发明的实施方式还可以包括以下示例:
(1)一种基于污点标志跟踪检测jQuery库隐私泄露的方法,其特征在于,包括:
获取jQuery库文件并对该jQuery库文件的源代码进行解析以生成抽象语法树;
通过对敏感数据标记污点标志来定义污点数据对象;
根据预定义的污点标志传播规则,对所述抽象语法树中包含数据传递的函数进行语义和控制流的改写,并在数据传递过程中针对各个函数相关联地保持敏感数据和污点标志,进而对污点标志在数据传递过程中的传播进行跟踪;以及
基于改写后的抽象语法树,监测调用jQuery库中的函数发送敏感数据的发送行为。
(2)根据(1)所述的方法,其特征在于,
基于所述污点标志在数据传递过程中的传播形成污点标志累积,并且存在污点标志累积的参数或函数被定义为污点数据对象。
(3)根据(1)所述的方法,其特征在于,
采用后序遍历的顺序对所述jQuery库文件的源代码进行解析来生成所述抽象语法树。
(4)根据(1)所述的方法,其特征在于,
所述敏感数据包括以下至少一项:Cookie、域名、修改时间、URL与页面位置相关的信息;以及
所定义的污点数据对象存储敏感数据的真实值和污点标志。
(5)根据(1)所述的方法,其特征在于,
所述预定义的污点标志传播规则包括显式传播规则和隐式传播规则,其中
显式传播规则为数据依赖的信息流传播;以及
隐式传播规则为控制依赖的信息流传播。
(6)根据(1)所述的方法,其特征在于,
赋值运算、算术逻辑运算和函数调用中的污点标志传播采取显式传播规则;以及
控制循环语句中的污点标志传播采用隐式传播规则。
(7)根据(1)所述的方法,其特征在于,
所述包含数据传递的函数包括以下至少一项:DOM操作函数和网络连接函数。
(8)根据(1)所述的方法,其特征在于,
通过在jQuery库中进行网络连接的函数位置处对污点数据对象的污点标志进行判断,来判定是否存在调用jQuery库中的函数将敏感数据发送到不信任的第三方的行为。
(9)根据(1)所述的方法,其特征在于,
如果发现存在调用jQuery库中的函数将敏感数据发送到不信任的第三方的发送行为,则终止该发送行为并向用户发出警报。
(10)根据(1)所述的方法,其特征在于,
如果发现发送行为未调用jQuery库中的函数将敏感数据发送到不信任的第三方,则正常进行该发送行为。
(11)根据(1)所述的方法,其特征在于,还包括
将改写后的抽象语法树生成改写的jQuery库代码。
(12)一种基于污点标志跟踪检测jQuery库隐私泄露的装置,包括:
存储器;以及
处理器,所述处理器耦合到所述存储器,并且被配置为执行根据(1)至(11)中的任一项所述的方法。
(13)一种其上存储有可执行指令的计算机可读存储介质,当所述可执行指令由计算机执行时,使所述计算机执行根据(1)至(11)中的任一项所述的方法。
虽然已经通过示例对本发明的一些特定示例性实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本发明的范围。在此公开的各示例性实施例可以任意组合,而不脱离本发明的精神和范围。本领域的技术人员还应理解,可以对示例性实施例进行多种修改而不脱离本发明的范围和精神。本发明的范围由所附权利要求来限定。
Claims (13)
1.一种基于污点标志跟踪检测jQuery库隐私泄露的方法,其特征在于,包括:
获取jQuery库文件并对该jQuery库文件的源代码进行解析以生成抽象语法树;
通过对敏感数据标记污点标志来定义污点数据对象;
根据预定义的污点标志传播规则,对所述抽象语法树中包含数据传递的函数进行语义和控制流的改写,并在数据传递过程中针对各个函数相关联地保持敏感数据和污点标志,进而对污点标志在数据传递过程中的传播进行跟踪;以及
基于改写后的抽象语法树,监测调用jQuery库中的函数发送敏感数据的发送行为。
2.根据权利要求1所述的方法,其特征在于,
基于所述污点标志在数据传递过程中的传播形成污点标志累积,并且存在污点标志累积的参数或函数被定义为污点数据对象。
3.根据权利要求1所述的方法,其特征在于,
采用后序遍历的顺序对所述jQuery库文件的源代码进行解析来生成所述抽象语法树。
4.根据权利要求1所述的方法,其特征在于,
所述敏感数据包括以下至少一项:Cookie、域名、修改时间、URL与页面位置相关的信息;以及
所定义的污点数据对象存储敏感数据的真实值和污点标志。
5.根据权利要求1所述的方法,其特征在于,
所述预定义的污点标志传播规则包括显式传播规则和隐式传播规则,其中
显式传播规则为数据依赖的信息流传播;以及
隐式传播规则为控制依赖的信息流传播。
6.根据权利要求5所述的方法,其特征在于,
赋值运算、算术逻辑运算和函数调用中的污点标志传播采取显式传播规则;以及
控制循环语句中的污点标志传播采用隐式传播规则。
7.根据权利要求1所述的方法,其特征在于,
所述包含数据传递的函数包括以下至少一项:DOM操作函数和网络连接函数。
8.根据权利要求1所述的方法,其特征在于,
通过在jQuery库中进行网络连接的函数位置处对污点数据对象的污点标志进行判断,来判定是否存在调用jQuery库中的函数将敏感数据发送到不信任的第三方的行为。
9.根据权利要求1所述的方法,其特征在于,
如果发现存在调用jQuery库中的函数将敏感数据发送到不信任的第三方的发送行为,则终止该发送行为并向用户发出警报。
10.根据权利要求1所述的方法,其特征在于,
如果发现发送行为未调用jQuery库中的函数将敏感数据发送到不信任的第三方,则正常进行该发送行为。
11.根据权利要求1所述的方法,其特征在于,还包括
将改写后的抽象语法树生成改写的jQuery库代码。
12.一种基于污点标志跟踪检测jQuery库隐私泄露的装置,包括:
存储器;以及
处理器,所述处理器耦合到所述存储器,并且被配置为执行根据权利要求1-11中的任一项所述的方法。
13.一种其上存储有可执行指令的计算机可读存储介质,当所述可执行指令由计算机执行时,使所述计算机执行根据权利要求1-11中的任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010673976.0A CN113934507A (zh) | 2020-07-14 | 2020-07-14 | 基于污点标志跟踪检测jQuery库隐私泄露的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010673976.0A CN113934507A (zh) | 2020-07-14 | 2020-07-14 | 基于污点标志跟踪检测jQuery库隐私泄露的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113934507A true CN113934507A (zh) | 2022-01-14 |
Family
ID=79274005
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010673976.0A Pending CN113934507A (zh) | 2020-07-14 | 2020-07-14 | 基于污点标志跟踪检测jQuery库隐私泄露的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113934507A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114077737A (zh) * | 2022-01-19 | 2022-02-22 | 南京明博互联网安全创新研究院有限公司 | 基于污点分析的Android组件间通信数据流检测方法 |
CN115277062A (zh) * | 2022-06-13 | 2022-11-01 | 深圳开源互联网安全技术有限公司 | 一种恶意攻击拦截方法、装置、设备及可读存储介质 |
-
2020
- 2020-07-14 CN CN202010673976.0A patent/CN113934507A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114077737A (zh) * | 2022-01-19 | 2022-02-22 | 南京明博互联网安全创新研究院有限公司 | 基于污点分析的Android组件间通信数据流检测方法 |
CN115277062A (zh) * | 2022-06-13 | 2022-11-01 | 深圳开源互联网安全技术有限公司 | 一种恶意攻击拦截方法、装置、设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10567529B2 (en) | Unified tracking data management | |
US8528095B2 (en) | Injection context based static analysis of computer software applications | |
US10333972B2 (en) | Method and apparatus for detecting hidden content of web page | |
US20130111594A1 (en) | Detection of dom-based cross-site scripting vulnerabilities | |
US9443077B1 (en) | Flagging binaries that drop malicious browser extensions and web applications | |
CN104834588B (zh) | 检测常驻式跨站脚本漏洞的方法和装置 | |
US9026612B2 (en) | Generating a custom parameter rule based on a comparison of a run-time value to a request URL | |
CN113934507A (zh) | 基于污点标志跟踪检测jQuery库隐私泄露的方法和装置 | |
CN106250761B (zh) | 一种识别web自动化工具的设备、装置及方法 | |
CN109325192B (zh) | 一种广告防屏蔽的方法和装置 | |
CN103390129B (zh) | 检测统一资源定位符安全性的方法和装置 | |
CN107332805B (zh) | 检测漏洞的方法、装置和系统 | |
CN105100065A (zh) | 基于云的webshell攻击检测方法、装置及网关 | |
CN104021074A (zh) | PhoneGap框架的应用程序的漏洞检测方法及装置 | |
CN108256338B (zh) | 一种基于扩展API改写的Chrome扩展敏感数据跟踪方法 | |
US20200065341A1 (en) | Delayed encoding of resource identifiers | |
US20140259174A1 (en) | Scalable And Precise String Analysis Using Index-Sensitive Static String Abstractions | |
KR101482508B1 (ko) | 파일 유출을 방지하기 위한 브라우징 방법 및 그 방법이 기록된 기록매체 | |
EP3629159A1 (en) | Risk computation for software extensions | |
CN116049823B (zh) | 一种内存马检测方法、装置、计算机设备及存储介质 | |
CN114640506B (zh) | 一种漏洞检测方法、装置、设备及介质 | |
US20220217037A1 (en) | Detecting relationships between web services in a web-based computing system | |
KR101305755B1 (ko) | 주소에 기반하여 스크립트 실행을 필터링하는 장치 및 방법 | |
US20220256006A1 (en) | Methods for controlling tracking elements of a web page and related electronic devices | |
KR102040080B1 (ko) | 자바스크립트 자기보호 장치 및 그 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220126 Address after: 100007 room 205-32, floor 2, building 2, No. 1 and No. 3, qinglonghutong a, Dongcheng District, Beijing Applicant after: Tianyiyun Technology Co.,Ltd. Address before: No.31, Financial Street, Xicheng District, Beijing, 100033 Applicant before: CHINA TELECOM Corp.,Ltd. |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |