CN102741837A - 用于信息流降级器的静态检测和分类的系统和方法 - Google Patents

用于信息流降级器的静态检测和分类的系统和方法 Download PDF

Info

Publication number
CN102741837A
CN102741837A CN2010800452780A CN201080045278A CN102741837A CN 102741837 A CN102741837 A CN 102741837A CN 2010800452780 A CN2010800452780 A CN 2010800452780A CN 201080045278 A CN201080045278 A CN 201080045278A CN 102741837 A CN102741837 A CN 102741837A
Authority
CN
China
Prior art keywords
function
demoter
program
string
computer
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
CN2010800452780A
Other languages
English (en)
Other versions
CN102741837B (zh
Inventor
Y·哈维夫
R·海
M·皮斯托亚
G·波德雅尔尼
A·沙拉巴尼
立石孝彰
T·欧麦尔
W·奥马里
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN102741837A publication Critical patent/CN102741837A/zh
Application granted granted Critical
Publication of CN102741837B publication Critical patent/CN102741837B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/49Partial evaluation
    • 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/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Databases & Information Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

一种用于信息流降级器的静态检测和分类的系统和方法包括通过静态分析程序变量来变换(502)存储在存储器设备中的程序,以产生对指令集中的每个变量的单个赋值。将该指令集转换(504)成具有字符串操作的产生规则。根据该产生规则生成(508)上下文无关语法,以标识有限字符串集合。通过将该有限字符串集合相对于一个或多个函数规范进行核对来标识(510)信息流降级器函数。

Description

用于信息流降级器的静态检测和分类的系统和方法
技术领域
本发明涉及静态程序分析,并且更具体而言涉及如下字符串分析,该字符串分析无需执行程序就能推断运行时出现的字符串值,以提供用于信息流降级器的自动检测和分类的函数分析。
背景技术
信息流安全性原理规定在程序中不允许信息的任何“违法流”。如果一个流使得在可信计算中使用不可信信息(完整性侵害)或者如果一个流使得向未授权用户完全地或部分地透露秘密信息(机密性侵害),则该流是违法的。通过简单地声明不应该存在任何从“高”到“低”的信息流,可以将完整性和机密性看作为双重问题,其中“高”意味着完整性中的“不可信”和机密性中的“秘密”,而“低”意味着完整性中的“可信”和机密性中的“公开”。
可以利用信息流标签来标记信息。通常,信息流标签形成部分排序的集合或者甚至点阵(lattice)。如果严格强制信息流安全性并且不允许违法信息流,则大部分程序将无法工作。为了信息流安全性,不得不对程序进行“分割”,使得用特定标签“/”所标记的信息仅可以流向用高于或等于“/”的标签所标记的程序点。具有这些约束条件的程序非常有可能是没有用的。例如从完整性的观点来看,认为Web应用接受来自潜在不可信用户的输入并且在可信计算中使用这些输入。例如,在线银行程序将用户的账号和密码(潜在不可信或畸形的信息)作为输入并且将它们传递到后端数据库系统,其中在该后端数据库系统将它们用在可信设置中。在另一示例中,在线书店将顾客的用户ID和密码以及该顾客想要购买的书的书名(全部潜在不可信或畸形的信息)作为输入,并且使用它们来完成交易等等。
从机密性的观点来看,Web应用通常释放基于秘密信息所计算的数据并且因此也应该被认为是秘密的。例如,银行应用可以向任意出纳员透露任意用户的社会安全号码的后四位数字,在线书店可以向任意商店售货员透露任意顾客的信用卡号码的后四位数字,诸如此类。在所有这些程序展示一种允许“高”信息流向“低”程序点的流的情况下,如果简单地强制信息流安全性,则所有这些程序将被拒绝。为了允许这些程序运行,可以将“高”信息“降级”并且变得足够“低”以便在“低”程序点中使用。
降级将其自身转换成完整性中的“认可(endorsement)”和机密性中的“从机密表删除(declassification)”。例如,一旦程序证实用户向Web应用提供的输入是正确格式化的字符串,该程序便可以认可该输入,该输入现在变得足够可信以在可信计算中使用。类似地,一旦程序证实从秘密中提取的信息不足以透露该秘密自身,该程序便可以从机密表删除所提取的信息,所提取的信息现在变得足够公开以被透露给公开听众。
表格1:信息流安全性
  完整性   机密性
  高   不可信   秘密
  低   可信   公开
  降级   认可   从机密表删除
程序可以实现多个降级器。程序不应当接受给“低”函数的任何“高”输入,除非该“高”输入之前已被降级。此外,降级器仅具体用于“低”函数的集合的子集。例如,接受字符串形式的输入的完整性“低”函数将该字符串连接成结构化查询语言(SQL)查询,并且随后将其提交给数据库。该函数将要求其输入不包含分号和省略号,因为这种字符将被数据库解释为SQL命令。因此,到该“低”函数的任何输入应当经过净化或认可,以确保不存在这种违法字符。
只有可信净化器已证实没有这种违法字符之后,才可以接受在SQL查询中使用该最初不可信的字符串。然而,如果“低”函数不负责执行SQL查询,而是改为负责将其字符串输入值连接成超文本标记语言(HTML)码,则不同的净化是必要的。此时的问题不再是防止SQL注入,而是防止所谓的跨站脚本(XSS)攻击。在这种情况下,净化函数必须核对特定JavaScript(java脚本)标记(如<script>和</script>)的缺失。
降级器通常可以在库中获得并且基于对应的“低”函数的规范来分类。然而,Web应用通常实现它们自己的降级函数。这使得Web应用的安全性静态分析非常复杂。实际上,对于信息流安全性的静态分析应当接收降级函数的签名以及用于将降级函数映射到对应的“低”函数的规则来作为输入。此时,静态分析可以证实到“低”函数的输入是否一直经历正确的降级,直到它的输入被正确地降级为止才有路径通向“低”函数。遗憾的是,当Web应用实现它们自己的降级时,非常难以检测那些降级器并且对它们进行分类的方式使得对于信息流安全性的静态分析可以依次考虑它们。
所述困难可能包括以下困难:1.如果采用手动代码核对,则无法获得全部源代码。某些代码可能是由第三方产生并且购买的。因此,对于信息流降级器的检测和分类的手动代码核对是不可行的。即使可获得全部源代码,在需要核对大量代码的情况下,手动代码核对可能也是不可行的。总而言之,手动代码核对是易出错的、困难的、费时的并且不可靠的。2.可能使用动态分析和测试。然而,动态分析的覆盖范围取决于被使用的测试用例集的完善性。在缺少完善的测试用例集的情况下,动态分析不保证检测到由应用使用的所有可能的降级器,并且降级器的分类将会不完善。
发明内容
一种用于信息流降级器的静态检测和分类的系统和方法包括通过静态分析程序变量来变换存储在存储器设备中的程序,以向指令集中的每个变量产生单个赋值。将该指令集转换成具有字符串操作的产生规则。根据该产生规则生成上下文无关语法,以标识有限字符串集合。通过将该有限字符串集合相对于一个或多个函数规范进行核对来标识信息流降级器函数。
一种用于信息流降级器的静态检测和分类的方法包括通过静态分析程序变量来变换存储在存储器设备中的程序,以产生对指令集中的每个变量的单个赋值。将该指令集转换成具有字符串操作的产生规则。对该具有字符串操作的产生规则执行指针分析,以提高精确度。根据该产生规则生成上下文无关语法,以标识有限字符串集合。将该上下文无关语法与对安全性敏感的函数的规范进行比较,使得如果该语法满足该规范,则认为该输入被正确降级。对字符串进行标记以定位已经修改输入并且使得该输入符合规范的字符串操作函数,以标识信息流降级器函数并对其进行分类。
一种用于信息流降级器的静态检测和分类的系统包括被配置为存储程序的程序存储设备。该程序存储设备被配置为结合处理器来进行工作以执行程序指令,用以检测该程序中的信息流降级器并对其进行分类。静态分析框架被配置为分析应用程序并且对该应用程序执行静态字符串赋值,以变换程序变量来产生针对指令集中的每个变量的单个赋值。该框架被配置为将该指令集转换成具有字符串操作的产生规则,并且根据该产生规则生成上下文无关语法以标识有限字符串集合。比较模块被配置为通过将该有限字符串集合相对于一个或多个函数规范进行比较来标识信息流降级器函数以检测该程序中的信息流降级器并对其进行分类。
这些以及其他特征和优点将从以下的结合附图来阅读的说明性实施方式的详细描述变得更加显而易见。
附图说明
本文的公开将参考附图,在下面的优选实施方式的描述中提供细节,其中:
图1是用于显示根据一个说明性实施方式的字符串分析系统/方法的框图/流程图;
图2是用于说明性变换器substring(_,2)的变换器图;
图3是用于显示根据另一个说明性实施方式的字符串分析系统/方法的框图/流程图;
图4是根据一个说明性实施方式用于调用nappend例程的调用图;
图5是用于显示根据一个说明性实施方式的用于对降级器进行检测和分类的系统/方法的框图/流程图;以及
图6是用于显示根据本原理来对降级器进行检测和分类的框图/流程图。
具体实施方式
根据本原理的实施方式对于信息流降级器的自动检测和分类使用静态字符串分析。静态字符串分析的使用标识了降级器并且基于它们的目的来对它们进行分类。在一个说明性实施方式中,分析过程如下。针对程序中的每个对安全性敏感的函数,我们使用字符串分析来检测对该函数的字符串输入的语法。我们然后将该语法与对安全性敏感的函数的规范进行比较。如果该语法满足该规范,则意味着该输入被正确降级。在该情况中,使用字符串分析的标记特征,能够定位已经修改输入并且使得该输入符合规范的字符串操作函数。那些函数构成该对安全性敏感的函数的降级器。此外,可以使用该对安全性敏感的函数的规范来对新发现的降级器进行分类,这是在对安全性敏感的函数的降级器对于另一对安全性敏感的函数无效的情况下的一个重要的特征。
本领域技术人员将认识到,可以将本发明的多个方面体现为系统、方法或计算机程序产品。因此,本发明的多个方面可以采取全部硬件实施方式、全部软件实施方式(包括固件、驻留软件、微代码等等)或软件和硬件方案的组合实施方式的形式,可以将它们统称为“电路”、“模块”或“系统”。此外,本发明的多个方面可以采取体现在一个或多个计算机可读介质中的计算机程序产品的形式,其中该一个或多个计算机可读介质具有体现在其上的计算机可读程序代码。
可以利用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质例如可以是但不限于电子的、磁的、光的、电磁的、红外的或半导体的系统、装置或设备或者前述的任意合适的组合。计算机可读存储介质的更具体的示例(非详尽的列表)可以包括:具有一个或多个电线的电连接、便携式计算机软盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦写可编程只读存储器(EPROM或闪存)、光纤、便携式压缩盘只读存储器(CD-ROM)、光存储设备、磁存储设备或前述的任意合适的组合。在本文的上下文中,计算机可读存储介质可以是能够包含或存储供指令执行系统、装置或设备使用或与其结合使用的程序的任意有形的介质。
计算机可读信号介质可以包括如下传播数据信号,其中在该传播数据信号中在例如基带中实现计算机可读程序代码或者将计算机可读程序代码实现为载波的一部分。该传播信号可以采取各种各样的形式中的任意形式,包括但不限于电磁、光或它们的任意适当的组合。计算机可读信号介质可以不是计算机可读存储介质而是可以传递、传播或传输程序以供指令执行系统、装置或设备使用或与其结合使用的任意计算机可读介质。
可以使用任意合适的介质来发射计算机可读介质上所实现的程序代码,该任意合适的介质包括但不限于无线、有线、光缆、RF等等或前述各项的任意适当的组合。
可以用一种或多种编程语言的任意组合来编写用于执行本发明的多个方面的操作的计算机程序代码,该一种或多种编程语言包括面向对象的编程语言(如Java、Smalltalk、C++等等)和常规的过程编程语言(如“C”编程语言)或类似的编程语言。可以完全在用户的计算机上、部分在用户的计算机上、作为独立的软件包、部分在用户的计算机上并且部分地在远程计算机上或者完全在远程计算机或服务器上执行该程序代码。在后一种情况中,可以通过包括局域网(LAN)或广域网(WAN)的任意类型的网络或者可以被外部计算机获得的连接(例如,通过使用因特网服务提供商的因特网),将远程计算机连接到该用户的计算机。
以下参考根据本发明的实施方式的方法、装置(系统)和计算机程序产品的流程图说明和/或框图来描述本发明的多个方面。应当理解,可以由计算机程序指令实现这些流程图说明和/或框图中的每个框以及在流程图说明和/或框图中的框的组合。可以将这些计算机程序指令提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得该指令创建用于实现流程图和/或框图的框中规定的功能/动作的装置,其中该指令经由计算机或其他可编程数据处理装置的处理器来运行。
这些计算机程序指令还可以存储在能够指导计算机、其他可编程数据处理装置或其他设备以特定方式运作的计算机可读介质中,以使得存储在该计算机可读介质中的指令产生包括用于实现流程图和/或框图的框中规定的功能/动作的指令的制品。
计算机程序指令还可以加载到计算机、其他可编程数据处理装置或其他设备上,以产生将在该计算机、其他可编程装置或其他设备上执行的一系列操作步骤,以产生计算机实现的过程,使得在该计算机或其他可编程装置上执行的指令提供用于实现流程图和/或框图的框中规定的功能/动作的过程。
附图中的流程图和框图示出了根据本发明的各种实施方式的系统、方法和计算机程序产品的可能实现的架构、功能和操作。因此,流程图或框图中的每个框可以表示代码的模块、段或部分,其中该代码包括用于实现规定的逻辑功能的一个或多个可执行指令。还应该注意到,在某些备选实现中,框中所示的功能可以按照附图中所示的顺序之外的顺序发生。例如,取决于所涉及的功能,实际上可以基本同时执行连续显示的两个框,或者有时候可以按照逆序执行该框。还要注意到,可以由用于执行规定的功能或动作的基于专用硬件的系统或者专用硬件和计算机指令的组合来实现框图和/或流程图说明中的每个框以及框图和/或流程图说明中的框的组合。
现在参考附图,其中在附图中相同的附图标记表示相同的或类似的元素,并且首先参考图1,在图1中说明性地显示了一个框图/流程图,该框图/流程图显示用于执行根据本原理的字符串分析的高级步骤。在框102中,我们首先将程序转换成具有字符串操作的上下文无关语法(CFG)(见例如(Yasuhiko Minamide,″Staticapproximation of dynamically generated web pages″,第14届万维网国际会议学报(WWW′05),2005))。在框104中,我们然后通过对CFG应用函数来从产生规则中去除字符串操作。被称为近似字符串操作的那些函数分别对应于程序中的字符串操作。我们重复该近似字符串操作的应用,直到产生规则中不再有任何字符串操作为止。最后在框106中,我们获得包括不具有字符串操作的产生规则的上下无关语法。
我们考虑以下的Java程序,在用“a”来初始化赋值给变量a的字符串之后,将“a”附加给该字符串三次。
String a=″a″;
for(int i=0;i<3;i++)
a=a+″a″;
String r=a;
通过将每个程序变量v转换成产生规则中的非终结符Sv和=to→,我们获得以下的CFG,其中,我们简单地将通过+进行的字符串连接看作是CFG上的字符串连接。
Sa→a
Sa→Saa
Sr→Sa
例如,具有起始符号Sa的CFG代表赋值给程序变量a的可能的字符串值的集合,其产生字符串集合{″a″,″aa″,″aaa″,″aaaa″,...},并且类似地,Sr代表赋值给程序变量r的可能的字符串值的集合。其包含从未被赋值给变量a和r的字符串,因为我们的字符串分析至今为止完全忽视for语句的条件。
在框104中,当我们具有使用预定义的字符串操作(如以下的程序中所示的String.substring)的程序时,我们对于每个字符串操作使用合理的近似来在CFG之间转换。
String a=″xxa″;
for(int i=0;i<3;i++)a=a+″a″;
String r=a.substring(2);
合理意味着由该字符串分析所计算的结果CFG包含在运行时出现的所有实际字符串。可以如下正式地定义合理:如果
Figure BDA0000151043160000091
其中S’=(s’|s’=f(s),s∈S),则f是字符串操作f的合理近似。用于近似预定义字符串操作的其中一个方法是使用变换器,其中变换器是具有输出的自动机。总所周知,变换器的像也是CFG。其他方法与(∑,+)同态,其中∑是字符的集合并且+表示连接函数,其中该连接函数总是返回同一CFG,该CFG产生由对应的预定义字符串操作所返回的所有可能的字符串,诸如此类。以下具有近似字符串操作substring(_,2)的产生规则是从以上程序所获得的产生规则。
Sa→xxa
Sa→Saa
Srsubstring(Sa,2)
参考图2,其说明性地描述了变换器200。近似字符串操作substring(_,2)由变换器200定义并且是字符串操作_.substring(2)的合理估计。通过对语法应用该变换器200,我们可以获得以下表示集合{”a”,”aa”,”aaa”,”aaaa”,…}的CFG。
S′a→a
S′a→S′aa
Sr→S′a
在图2中,A代表任意字符,而A/ε代表任意一个字符到空的变换,其表示去除该字符。
在框106中,我们在产生规则中不具有字符串操作。因此,包括所产生的产生规则的上下文无关语法是该字符串分析的结果。
参考图3,现在将描述用于实现根据本原理的静态字符串分析(SSA)的优选实施方式。提供的描述处理过程内字符串分析,并且随后解释如何将其扩展到过程间字符串分析。所提供的实现细节假设该字符串分析是在静态分析框架之上实现的。所使用的该静态分析框架可以是任意公知框架并且可以包括例如可作为开放源产品从http://wala.sourceforge.net获得的华生分析库(WALA)。
为了描述过程内字符串分析,我们如下考虑JavaTM中的nappend方法:
Figure BDA0000151043160000101
在框302中,将程序转换成静态单赋值(S SA)形式,在该SSA中对指令使用伪注释。例如,转换如下说明性地所示:
main(String)
2.a=″a″
3.b=″b″
4.r=nappend(a,b,3)
nappend(String)
1.b1=n==0
2.goto 6 if b1
3.v1=x+y
4.r1=nappend(v1,y,n-1)
5.goto 8
6.r2=x
7.goto 8
8.r=phi(r1,r2)
9.return r
在图4中描述了该程序的调用图。用于以上程序中的指令的伪注释包括:v=val表示将值val赋给变量或字段v,v=obj.func(vl,...,vn)表示具有自变量vl,...,vn的方法调用,goto N表示无条件跳到标签N,goto N if v表示以条件v有条件跳到标签N。另外,SSA变换引入新的变量和φ-函数(将其记为phi(v1,v2)),以产生对每个变量只有一个赋值的程序。SSA形式的该特点适用于找出数据依赖性。
在框304中,除了有条件跳转和无条件跳转之外,按照与上述方式相同的方式(图1),将SSA形式的赋值转换成具有字符串操作的产生规则306的集合。具体而言,将v=phi(v1,v2)转换成两个产生规则Sv→Sv1和Sv→Sv2,以使其代表分别被赋值给v1和v2的两个字符串集合的联合。根据该转换,我们可以从该nappend方法的伪SSA形式获得以下产生规则。
Sv1→SxSy
S r 1 &RightArrow; nappend ( S v 1 , S y , n - 1 )
Sr2→Sx
Sr→Sr1
Sr→Sr2
对于过程间字符串分析,我们用由WALA构造的调用图形信息来扩展过程内字符串分析,其中WALA的上下文敏感度可以由已知方法灵活控制。我们用调用图形节点来注释SSA程序中的每个变量。我们在去除从如
Figure BDA0000151043160000112
的方法调用所转换的产生规则之后,组合所有产生规则。我们引入代表被调者方法的参数与返回值与调用者方法的变量之间的依赖性的产生规则。例如,如果我们具有如图4中所示的对上下文不敏感的调用图形400,则引入如下的产生规则,其中每个非终结符的上标表示对应的调用图形节点。该产生规则是:
S x 2 &RightArrow; S a 1 S x 2 &RightArrow; S v 1 2
S y 2 &RightArrow; S b 1 S y 2 &RightArrow; S y 2
S r 1 &RightArrow; S r 2 S r 1 2 &RightArrow; S r 2
从该程序获得的具有字符串操作的产生规则306的完整集合包括:
S a 1 &RightArrow; a S x 2 &RightArrow; S a 1
S b 1 &RightArrow; b S y 2 &RightArrow; S b 1
S v 1 2 &RightArrow; S x 2 S y 2 S r 1 &RightArrow; S r 2
S r 2 2 &RightArrow; S x 2 S x 2 &RightArrow; S v 1 2
S r 2 &RightArrow; S r 1 2 S y 2 &RightArrow; S y 2
S r 2 &RightArrow; S r 2 2 S r 1 2 &RightArrow; S r 2
可以执行可选择的指针分析,该指针分析助于该字符串分析器或解算器308标识在多个方法之间恒定的字符串如何流向多个变量,并且标识在有可能不同的方法中是否将同一对象赋值给不同的变量,即便那些对象是动态创建的。在框310中,我们然后获得以下CFG,该CFG在主方法中预测赋值给变量r的可能的字符串,其中起始字符是
Figure BDA00001510431600001219
S r 1 &RightArrow; a | S r 1 b
参考图5,框图/流程图说明性地描述了用于根据本原理的信息流降级器的静态检测和分类的系统和方法。在框502中,通过静态分析程序变量来变换存储在存储器设备中的程序,以产生给指令集中的每个变量的单个赋值。这包括使用用于程序变量赋值的伪注释来变换该程序。
在框504中,将该指令集转换成具有字符串操作的产生规则。在框506中,可选择地对具有字符串操作的产生规则执行指针分析,以提高精确度。在框508中,根据该产生规则生成上下文无关语法以标识有限字符串集合。可以使用kleene星号操作符来标识该有限字符串集合。
在框510中,通过将该有限字符串集合相对于一个或多个函数规范进行核对来标识信息流降级器函数。一个或多个函数优选地包括该程序中的对安全性敏感的函数。这可以包括检测该降级器函数并且基于该降级器函数的目的来对该降级器函数进行分类。
在框512中,优选地将该上下文无关语法与对安全性敏感的函数的规范进行比较,使得如果该语法满足该规范则认为输入被正确降级。在框514中,对字符串进行标记,以定位已经修改输入并且使得该输入符合规范的字符串操作函数,以标识信息流降级器函数并对其进行分类。使用一个或多个函数规范来分类该降级器函数。该降级器函数可以由Web应用或采用用于处理其网络事务的安全性级别的任何其他实体生成。
参考图6,其说明性地描述了用于信息流降级器的静态检测和分类的系统600。程序存储设备或存储器存储设备602可以包括计算机硬盘驱动器或其他计算机介质并且被配置为存储程序604。程序存储设备602还被配置为结合计算机设备601上的处理器606一起工作,以执行程序指令来检测并且分类程序604中的信息流降级器。可以与服务器、大型机或任意其他计算设备相关联的静态分析框架608被配置为分析应用程序并且对该应用程序执行静态字符串赋值,以变换程序变量以产生针对指令集中的每个变量的单个赋值。框架608被配置为将指令集转换成具有字符串操作的产生规则并且根据该产生规则生成上下文无关语法(CFG),CFG可以使用kleene星号操作符来标识有限字符串集合。比较模块610被配置为通过将该有限字符串集合相对于一个或多个函数规范进行比较以标识信息流降级器函数来检测该有限字符串集合并对其进行分类。
比较模块610将上下文无关语法(CFG)与对安全性敏感的函数的规范612进行比较,使得如果该语法满足该规范则认为输入被正确降级。标记器614被配置为对字符串进行标记以定位已经修改所述输入并且使得该输入符合规范的字符串操作函数。那些函数构成了对安全性敏感的函数的降级器。此外,对安全性敏感的函数的规范可用于对新发现的降级器进行分类,这在对安全性敏感的函数的降级器对于另一对安全性敏感的函数无效的情况下是一个重要的特征。从而对由诸如Web应用、安全网络设备、接入受控设备之类的实体生成的降级器函数进行标识和分类。
所分析的程序可以与系统600共存或者可以远离系统600布置。可以对程序603进行分析以获取通过网络从服务器或Web应用620提供的降级器。服务器或web应用可以位于单个位置处或者可以分布在整个网络622上。
已经描述了用于信息流降级器的静态检测和分类的系统和方法的优选实施方式(它们意图用于说明而非限制),注意,本领域技术人员借鉴上文的教导可以做出各种修改和改变。因此应当理解在如所附权利要求书所述的本发明的范围之内,可以对所公开的具体实施方式做出改变。在利用专利法所要求的具体细节如此描述了本发明的多个方面之后,在所附权利要求书中阐述了要求并且希望被专利法保护的内容。

Claims (24)

1.一种用于信息流降级器的静态检测和分类的方法,包括:
通过静态分析程序变量来变换(502)存储在存储器设备中的程序,以产生对指令集中的每个变量的单个赋值;
将所述指令集转换(504)成具有字符串操作的产生规则,以标识有限字符串集合;
根据所述产生规则生成(508)上下文无关语法;以及
通过将所述有限字符串集合相对于一个或多个函数规范进行核对来标识(510)信息流降级器函数。
2.如权利要求1所述的方法,其中标识(510)包括:检测所述降级器函数并且基于所述降级器函数的目的来对所述降级器函数进行分类。
3.如权利要求1所述的方法,其中所述一个或多个函数包括所述程序中的对安全性敏感的函数。
4.如权利要求1所述的方法,还包括:将所述上下文无关语法与所述对安全性敏感的函数的规范进行比较(512),使得如果所述语法满足所述规范,则认为输入被正确降级。
5.如权利要求4所述的方法,还包括:对字符串进行标记(514),以定位已经修改所述输入并且使得所述输入符合规范的字符串操作函数。
6.如权利要求1所述的方法,其中使用所述一个或多个函数规范来对所述降级器函数进行分类。
7.如权利要求1所述的方法,其中变换(502)所述程序包括:通过使用程序变量赋值的伪注释来变换所述程序。
8.如权利要求1所述的方法,其中由Web应用生成所述降级器函数。
9.一种包括计算机可读程序的计算机可读存储介质,所述计算机可读程序用于信息流降级器的静态检测和分类,其中当在计算机上执行所述计算机可读程序时所述计算机可读程序使得所述计算机执行以下步骤:
通过静态分析程序变量来变换(502)存储在存储器设备中的程序,以产生对指令集中的每个变量的单个赋值;
将所述指令集转换(504)成具有字符串操作的产生规则;
根据所述产生规则生成(508)上下文无关语法,以标识有限字符串集合;以及
通过将所述有限字符串集合相对于一个或多个函数规范进行核对来标识(510)信息流降级器函数。
10.如权利要求9所述的计算机可读存储介质,其中标识(510)包括:检测所述降级器函数并且基于所述降级器函数的目的来对所述降级器函数进行分类。
11.如权利要求9所述的计算机可读存储介质,其中所述一个或多个函数包括所述程序中的对安全性敏感的函数。
12.如权利要求9所述的计算机可读存储介质,还包括:将所述上下文无关语法与所述对安全性敏感的函数的规范进行比较(512),使得如果所述语法满足所述规范则认为输入被正确降级。
13.如权利要求12所述的计算机可读存储介质,还包括:对字符串进行标记(514),以定位已经修改所述输入并且使得所述输入符合规范的字符串操作函数。
14.如权利要求9所述的计算机可读存储介质,其中使用所述一个或多个函数规范来对所述降级器函数进行分类。
15.如权利要求9所述的计算机可读存储介质,其中变换(502)所述程序包括:通过使用程序变量赋值的伪注释来变换所述程序。
16.一种用于信息流降级器的静态检测和分类的方法,包括:
通过静态分析程序变量来变换(502)存储在存储器设备中的程序,以产生对指令集中的每个变量的单个赋值;
将所述指令集转换(504)成具有字符串操作的产生规则;
对所述具有字符串操作的产生规则执行(506)指针分析,以提高精确度;
根据所述产生规则生成(508)上下文无关语法,以标识有限字符串集合;
将所述上下文无关语法与对安全性敏感的函数的规范进行比较(512),使得如果所述语法满足所述规范则认为输入被正确降级;以及
对字符串进行标记(514)以定位已经修改输入并且使得所述输入符合规范的字符串操作函数,以标识信息流降级器函数并对其进行分类。
17.如权利要求16所述的方法,其中变换(502)所述程序包括:通过使用程序变量赋值的伪注释来变换所述程序。
18.如权利要求17所述的方法,其中由Web应用生成所述降级器函数。
19.一种用于信息流降级器的静态检测和分类的系统,包括:
程序存储设备(602),其被配置为存储程序,所述程序存储设备还被配置为结合处理器(606)一起工作来执行程序指令以检测并且对所述程序中的信息流降级器进行分类;
静态分析框架(608),其被配置为分析应用程序并且对所述应用程序执行静态字符串赋值,以变换程序变量以产生对指令集中的每个变量的单个赋值,所述框架被配置为将所述指令集转换成具有字符串操作的产生规则,并且根据所述产生规则生成上下文无关语法以标识有限字符串集合;以及
比较模块(610),其被配置为通过将所述有限字符串集合相对于一个或多个函数规范进行比较来标识信息流降级器函数,以检测所述有限字符串集合并对其进行分类。
20.如权利要求19所述的系统,其中基于所述降级器函数的目的来对所述降级器函数进行分类。
22.如权利要求19所述的系统,其中所述一个或多个函数包括所述程序中的对安全性敏感的函数。
23.如权利要求19所述的系统,其中所述比较模块(610)将所述上下文无关语法与对安全性敏感的函数的规范进行比较(512),使得如果所述语法满足所述规范则认为输入被正确降级。
24.如权利要求23所述的系统,还包括标记器(614),其被配置为对字符串进行标记以定位已经修改所述输入并且使得所述输入符合规范的字符串操作函数。
25.如权利要求19所述的系统,其中由Web应用生成所述降级器函数。
CN201080045278.0A 2009-10-08 2010-07-30 用于信息流降级器的静态检测和分类的系统和方法 Active CN102741837B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/575,647 2009-10-08
US12/575,647 US9275246B2 (en) 2009-10-08 2009-10-08 System and method for static detection and categorization of information-flow downgraders
PCT/US2010/043835 WO2011043856A1 (en) 2009-10-08 2010-07-30 System and method for static detection and categorization of information-flow downgraders

Publications (2)

Publication Number Publication Date
CN102741837A true CN102741837A (zh) 2012-10-17
CN102741837B CN102741837B (zh) 2015-12-02

Family

ID=43855839

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080045278.0A Active CN102741837B (zh) 2009-10-08 2010-07-30 用于信息流降级器的静态检测和分类的系统和方法

Country Status (5)

Country Link
US (2) US9275246B2 (zh)
CN (1) CN102741837B (zh)
DE (1) DE112010003979T5 (zh)
GB (1) GB2486864A (zh)
WO (1) WO2011043856A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108319854A (zh) * 2017-12-29 2018-07-24 上海瑞家信息技术有限公司 一种增量代码静态扫描方法、设备及计算机可读存储介质
CN113377435A (zh) * 2021-06-16 2021-09-10 哈尔滨岛田大鹏工业股份有限公司 一种发那科机器人控制系统的扩展方法

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8635602B2 (en) * 2010-07-26 2014-01-21 International Business Machines Corporation Verification of information-flow downgraders
US20120102474A1 (en) * 2010-10-26 2012-04-26 International Business Machines Corporation Static analysis of client-server applications using framework independent specifications
US8667584B2 (en) * 2010-12-15 2014-03-04 International Business Machines Corporation Formal analysis of the quality and conformance of information flow downgraders
US9158919B2 (en) * 2011-06-13 2015-10-13 Microsoft Technology Licensing, Llc Threat level assessment of applications
US8769696B2 (en) * 2011-09-29 2014-07-01 International Business Machines Corporation Automated detection of flaws and incompatibility problems in information flow downgraders
US8694971B2 (en) * 2011-10-05 2014-04-08 International Business Machines Corporation Scalable property-sensitive points-to analysis for program code
US9460282B2 (en) 2012-09-12 2016-10-04 International Business Machines Corporation Static security analysis using a hybrid representation of string values
US8984495B2 (en) * 2013-01-03 2015-03-17 International Business Machines Corporation Enhanced string analysis that improves accuracy of static analysis
US8990949B2 (en) 2013-02-15 2015-03-24 International Business Machines Corporation Automatic correction of security downgraders
US10546132B2 (en) 2014-09-30 2020-01-28 Micro Focus Llc String property labels for static analysis
US10320633B1 (en) 2014-11-20 2019-06-11 BloomReach Inc. Insights for web service providers
US11663110B2 (en) * 2016-10-31 2023-05-30 International Business Machines Corporation Analysis to check web API code usage and specification
US10678678B1 (en) * 2018-03-12 2020-06-09 Amazon Technologies, Inc. Ordered test execution based on test coverage
CN111045679B (zh) * 2019-01-09 2024-02-23 国家计算机网络与信息安全管理中心 一种sql注入的检测和防御方法、装置及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030051054A1 (en) * 2000-11-13 2003-03-13 Digital Doors, Inc. Data security system and method adjunct to e-mail, browser or telecom program
US20070094646A1 (en) * 2005-10-24 2007-04-26 Analog Devices, Inc. Static single assignment form pattern matcher
US20080306958A1 (en) * 2006-06-01 2008-12-11 Vugranam Chakravarthy Sreedhar System and method for role based analysis and access control
CN101331495A (zh) * 2005-12-15 2008-12-24 国际商业机器公司 用于实行信息流策略的引用监控机系统和方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6064820A (en) * 1998-05-27 2000-05-16 Hewlett-Packard Company Apparatus and method to incrementally update single static assignment (SSA) form
US7140044B2 (en) * 2000-11-13 2006-11-21 Digital Doors, Inc. Data security system and method for separation of user communities
US7103915B2 (en) * 2000-11-13 2006-09-05 Digital Doors, Inc. Data security system and method
US7117488B1 (en) * 2001-10-31 2006-10-03 The Regents Of The University Of California Safe computer code formats and methods for generating safe computer code
US7512071B2 (en) * 2004-06-15 2009-03-31 Sun Microsystems, Inc. Distributed flow enforcement
US7574703B2 (en) * 2004-09-30 2009-08-11 Broadcom Corporation Method and apparatus for reducing instruction dependencies in extended SSA form instructions
US8140664B2 (en) * 2005-05-09 2012-03-20 Trend Micro Incorporated Graphical user interface based sensitive information and internal information vulnerability management system
US8091128B2 (en) * 2006-09-14 2012-01-03 Ntt Docomo, Inc. Information flow enforcement for RISC-style assembly code in the presence of timing-related covert channels and multi-threading
US8266702B2 (en) * 2006-10-31 2012-09-11 Microsoft Corporation Analyzing access control configurations
US20080184208A1 (en) * 2007-01-30 2008-07-31 Sreedhar Vugranam C Method and apparatus for detecting vulnerabilities and bugs in software applications
US7530107B1 (en) * 2007-12-19 2009-05-05 International Business Machines Corporation Systems, methods and computer program products for string analysis with security labels for vulnerability detection
US8695056B2 (en) * 2008-01-26 2014-04-08 International Business Machines Corporation Method for information tracking in multiple interdependent dimensions
US8327339B2 (en) * 2008-06-30 2012-12-04 Oracle America, Inc. Method and system for fast static taint analysis
US8572674B2 (en) * 2008-08-13 2013-10-29 International Business Machines Corporation System, method, and apparatus for modular, string-sensitive, access rights analysis with demand-driven precision
US8955155B1 (en) * 2013-03-12 2015-02-10 Amazon Technologies, Inc. Secure information flow

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030051054A1 (en) * 2000-11-13 2003-03-13 Digital Doors, Inc. Data security system and method adjunct to e-mail, browser or telecom program
US20070094646A1 (en) * 2005-10-24 2007-04-26 Analog Devices, Inc. Static single assignment form pattern matcher
CN101331495A (zh) * 2005-12-15 2008-12-24 国际商业机器公司 用于实行信息流策略的引用监控机系统和方法
US20080306958A1 (en) * 2006-06-01 2008-12-11 Vugranam Chakravarthy Sreedhar System and method for role based analysis and access control

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
DOROTHY E. DENNING,PETER J. DENNING: "《Certification of Programs for Secure Information Flow》", 《COMMUNICATIONS OF THE ACM》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108319854A (zh) * 2017-12-29 2018-07-24 上海瑞家信息技术有限公司 一种增量代码静态扫描方法、设备及计算机可读存储介质
CN113377435A (zh) * 2021-06-16 2021-09-10 哈尔滨岛田大鹏工业股份有限公司 一种发那科机器人控制系统的扩展方法

Also Published As

Publication number Publication date
WO2011043856A1 (en) 2011-04-14
GB2486864A (en) 2012-06-27
DE112010003979T5 (de) 2013-04-25
US20110088023A1 (en) 2011-04-14
GB201207223D0 (en) 2012-06-06
CN102741837B (zh) 2015-12-02
US9275246B2 (en) 2016-03-01
US10742666B2 (en) 2020-08-11
US20160156650A1 (en) 2016-06-02

Similar Documents

Publication Publication Date Title
CN102741837A (zh) 用于信息流降级器的静态检测和分类的系统和方法
EP3136249B1 (en) Log analysis device, attack detection device, attack detection method and program
US11783034B2 (en) Apparatus and method for detecting malicious script
CN103262088B (zh) 评估应用代码中的降级器代码的方法和装置
JP5940160B2 (ja) アプリケーション・コード内のダウングレーダ・コードを評価するための方法、コンピュータ・プログラム製品、および装置(情報フロー・ダウングレーダにおける欠陥および非互換性問題の自動検出)
US20150293755A1 (en) System and automated method for configuring a predictive model and deploying it on a target platform
US20190384911A1 (en) Methods and systems for malware detection and categorization
CN106131071A (zh) 一种Web异常检测方法和装置
CN101751530B (zh) 检测漏洞攻击行为的方法及设备
US8572747B2 (en) Policy-driven detection and verification of methods such as sanitizers and validators
EP4302215A1 (en) Phishing url detection using transformers
Cheong et al. Classifying the contents of cybersecurity risk disclosure through textual analysis and factor analysis
WO2024131496A1 (zh) 一种漏洞数据的分析方法、装置、电子设备及存储介质
Abuhamad et al. Multi-χ: Identifying multiple authors from source code files
CN110502423A (zh) 固件的漏洞识别方法、装置、设备和存储介质
CN115310510A (zh) 基于优化规则决策树的目标安全识别方法、装置及电子设备
Dale et al. Ai-based cyber event osint via twitter data
US10896252B2 (en) Composite challenge task generation and deployment
CN118365446A (zh) 一种基于区块链的信贷业务合规监管方法与系统
WO2022187034A1 (en) Phishing url detection using transformers
Nguyen et al. Multi-granularity detector for vulnerability fixes
CN111291378A (zh) 威胁情报判研方法及装置
Park et al. Identification of performance shaping factors affecting subsequent human actions for dependence assessment in human reliability analysis
Kissner Hacking neural networks: A short introduction
Kommrusch Artificial Intelligence Techniques for Security Vulnerability Prevention

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant