CN104715203B - 信息泄漏漏洞的定量分析的方法和系统 - Google Patents
信息泄漏漏洞的定量分析的方法和系统 Download PDFInfo
- Publication number
- CN104715203B CN104715203B CN201410680148.4A CN201410680148A CN104715203B CN 104715203 B CN104715203 B CN 104715203B CN 201410680148 A CN201410680148 A CN 201410680148A CN 104715203 B CN104715203 B CN 104715203B
- Authority
- CN
- China
- Prior art keywords
- source
- remittance
- sentence
- information
- value
- 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
Links
Classifications
-
- 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/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; CALCULATING OR 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/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/54—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
-
- 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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/74—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/12—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
- H04L67/125—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks involving control of end-device applications over a network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
- G06F3/04815—Interaction with a metaphor-based environment or interaction object displayed as three-dimensional, e.g. changing the user viewpoint with respect to the environment or object
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Stored Programmes (AREA)
- Storage Device Security (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种信息泄漏漏洞的定量分析的方法和系统。一种方法包括在程序的执行期间,计算系统记录在所述程序中的源和汇语句处显示的具体值。所述源语句读取机密信息并且所述汇语句将所述机密信息发布到外部环境。所述方法包括所述计算系统使用至少所记录的具体值和源‑汇对,判定所述程序是否发生满足一个或多个定量准则的信息泄漏。还公开了装置和程序产品。
Description
技术领域
本发明一般地涉及程序代码分析,更具体地说,涉及程序代码的静态和运行时分析。
背景技术
该部分旨在为下面公开的本发明提供背景或上下文。此处的描述可以包括能够寻求的概念,但这些概念不一定是先前构想、实现或描述的概念。因此,除非在此另外明确指示,否则该部分中描述的内容不是在本申请中的描述之前的技术,并且不允许通过包括在该部分中而成为现有技术。
Web和移动应用中的主要安全威胁是机密数据的泄漏。这种泄漏可以包括诸如某人联系人列表之类的私有信息,以及敏感电子邮件内容(尤其在“自带设备”策略下)之类的机密信息。应用还可能泄漏有关其内部实现的细节,例如其后端数据库的类型和版本,攻击者可以使用这些细节制造其它攻击(例如SQL、结构化查询语言、数据库实例的注入攻击)。
处理信息泄漏的一个重要困难来源是确定发布的信息是否真正构成机密。此处是移动电信领域中的一个实例。
国际移动台设备身份(IMEI)通常是唯一号码,其标识3GPP(第三代合作计划)和iDEN(集成数字增强网络)移动电话以及某些卫星电话。IMEI包括16位:类型分配代码(TAC)是前8位。TAC提供设备的型号和产地。接下来的6位是制造商定义的号码,称为SNR(序列号)。最后,最后一位是Luhn检验位,其是基于Luhn算法产生的位并用于验证IMEI。
用于检测信息泄漏问题的标准方法是跟踪是否具有从源语句(读取机密信息)到汇语句(将该信息发布到外部环境)的数据流。例如,参见Tripp等人的“TAJ:EffectiveTaint Analysis of Web Applications(TAJ:Web应用的有效污点分析)”(PLDI’09,2009年6月15-20日,爱尔兰都柏林)。如果具有源到汇敏感信息数据流,则报告泄漏漏洞。
但是,在某些情况下,这种源到汇信息数据流实际上可能不是漏洞。
发明内容
以下概要仅旨在是示例性的。概要并非旨在限制权利要求的范围。
一种方法包括在程序的执行期间,计算系统记录在所述程序中的源和汇语句处显示的具体值。所述源语句读取机密信息并且所述汇语句将所述机密信息发布到外部环境。所述方法包括所述计算系统使用至少所记录的具体值和源-汇对,判定所述程序是否发生满足一个或多个定量准则的信息泄漏。还公开了装置和程序产品。
附图说明
图1A示出程序中的代码段,并且用于示出源到汇可达性准则过度保守;
图1B是示出具有图1A的代码段的调用关系的对象的调用图的一部分;
图1C示出图1A的程序中的代码段的稍微修改的版本,并且用于示出泄漏实例;
图2包括图2A和2B,是用于信息泄漏漏洞的定量分析的逻辑流程图,并且示出根据一个示例性实施例的示例性方法的操作、包含在计算机可读存储器上的计算机程序指令的执行结果,和/或以硬件实现的逻辑执行的功能;以及
图3是适合于执行此处的示例性实施例的系统的一个实例的框图。
具体实施方式
如上所述,在某些情况下,源到汇信息数据流实际上可能不是漏洞。例如,如果仅IMEI的最后一位泄漏,则没有发布机密信息。尽管该实例用于移动IMEI,但可以看到源到汇可达性准则过度保守。图1A中示出一个实例,该图示出程序100中的代码段130,并且用于示出源到汇可达性准则过度保守。
代码段130具有三个语句140-1、140-2和140-3。在该实例中,具有作为源语句140-1的源110,以及作为汇语句140-3的汇120log.write(check)。如上所述,源110读取机密信息,并且汇120将该信息发布到外部环境(即,程序外部)。对象imei 115和check 155是用于传递来自getIMEI方法116的信息的对象。针对代码段130执行的静态分析可以产生代码段130的多个不同模型。一个这种模型在图1B中示出并且是调用图160,该图表示程序100中的方法之间的调用关系。具体地说,每个节点170-1到170-4表示方法(如图1B中指示),并且每个边180-1到180-3指示方法之间具有调用关系。图1B是此类调用图的可视表示,并且调用图的实际实现可能不会产生可视表示(例如,调用图例如可以存储在数据结构中)。
substring()方法从两个指定索引(例如,“start”和“end”)之间的字符串中提取字符,并且返回新的子字符串。“start”是必需的并且指示开始提取的位置。第一个字符在索引0(零)处。“end”是可选的。“end”指示结束提取的位置(直到但不包括)。如果省略“end”,则“substring”方法提取字符串的其余部分。在图1的实例中,“imei.substring(14)”仅提取第十五位,这是Luhn检验位。因此,字符串“check”仅是第十五位。
因此,尽管在此源到汇流175显示敏感数据流175:170-1到170-4,但发布的信息实际上不是机密的。经验表明这种实例在实践中大量出现。原因是许多应用的功能要求基于机密数据计算的值变得可用于外部环境,但这些值通常由于向敏感数据应用某种形式的简化操作而产生。例如,可以发布某人联系人列表中的联系人号码,但不可以发布联系人的身份。
用于处理标准数据流分析的这种局限性的技术要么构建复杂的概率数学模型,要么在位级别跟踪信息流,从而实现信息发布的定量度量。构建复杂模型在Alvim等人的“Probabilistic Information Flow(概率信息流)”(2010第25届IEEE计算机科学逻辑研讨年会,2010年)中描述。在位级别跟踪信息在McCament和Ernst的“QuantitativeInformation Flow as Network Flow Capacity(定量信息流即网络流容量)”(PLDI’08,2008年6月7-13日,美国亚利桑那州图森)中描述。
这些现有方法具有两个基本问题。第一个问题是可实现性。不清楚如何实现这些方法的任何一种以便该方法可以实时工作,从而实施精确的信息泄漏概念,同时具有用户可承受的足够低的开销。第二个问题是准确性。最终,易受攻击的信息发布问题需要直接比较在源处读取的值和在汇处发布的值。跟踪单个位,或者有关在源处读取的值在汇处原样发布的概率的推理都太简单以至于不能处理实际信息发布实例。
与常规技术相比,此处的示例性实施例面向以下问题:在目标程序的动态执行期间,在运行时检测易受攻击的信息泄漏实例。这需要使用有效和准确的运行时跟踪方法。此处的一个示例性建议是记录在源和汇语句处显示的具体值以及线程ID(标识)。注意,可能在不使用线程ID的情况下执行此处的技术。但是,线程ID是有用的试探法,其可以提高精确度。然后,对于对(x,t)和(y,t),其中x和y分别是在源和汇处产生的数据值,并且t是线程ID(因此两个对起因于同一执行线程),将x和y之间的相似性例如计算为diff(x,y)。“diff(x,y)”是标识符,其表示根据某个度量空间(例如,编辑(Levenshtein)距离)的数据值x和y之间的距离。如果结果显示x和y足够相似(例如,相差预定“小距离”,例如全部字符的几个字符或某一百分比不同,例如10%差异),则向用户报告潜在信息泄漏,例如连同多少信息泄漏已经(或将要)泄漏的定量度量。
与污点跟踪相比,本方法的一个示例性优点是不需要插装(instrument)整个程序。相反,仅源和汇语句可能经历插装。与程序中的所有语句相比,这些语句的数量通常可忽略,因此这是重要的开销减少来源。至于准确性,本示例性方法根据以下假设建立:如果某人触发导致读取机密的操作(调用源语句),然后发布“类似”于在源语句处读取的值,则出现漏洞。由于此原因,在一个示例性实施例中,要求存在相同的线程ID。此更通用的语句是响应于触发源调用的操作(即,读取机密数据),发生汇调用(即,实际信息发布)。遵循该原理,是否从源调用导出(直接或间接)在汇处产生的数据实际上并不重要。观察该数据的恶意方有理由相信数据是在源处读取的信息,因为数据沿着涉及源的流产生,并且实际值类似于机密。
在继续描述表示系统的示例性主要组件及其交互流的逻辑流程图之前,检查其中发生泄漏实例的情况很有帮助。图1C示出图1A的程序中的代码段的稍微修改的版本,并且用于示出此类泄漏实例。在此情况下,程序员想要在imei.substring方法的圆括号内放置“14”(如在图1A的语句140-2中),但改为在圆括号内放置数字“1”,如语句140-4所示。这意味着写入到汇120log.write(check)的值将是IMEI每个位,但第一位除外。因此,应该报告泄漏实例,并且对应的定量度量可以指示(16位中的)15位在源值和汇值之间相同。因此,将发布原始汇值的大部分(以位为单位)。
转到图2,该图包括图2A和2B,示出用于信息泄漏漏洞的定量分析的逻辑流程图。此外,图2示出根据一个示例性实施例的示例性方法的操作、包含在计算机可读存储器上的计算机程序指令的执行结果,和/或以硬件实现的逻辑执行的功能。此外,图2中的方框可以被视为表示用于执行其中功能的装置。
图2的流程至少分为静态分析201和动态分析291。静态分析201是在不执行程序100中的代码的情况下执行的程序P 100的分析。相反,构建程序的一个或多个模型(例如调用图160),并且使用这些模型分析程序。同时,通过分析正在执行的程序(在这种情况下,为插装的程序)执行动态分析291。国际商业机器公司的(IBM的)Security Appscan软件程序是提供静态和动态分析的工具的一个实例。具有许多其它现成的工具,它们提供静态分析或动态分析能力的两者之一或全部。此外,静态分析的实例在Tripp等人的“TAJ:EffectiveTaint Analysis of Web Applications(TAJ:Web应用的有效污点分析)”(PLDI’09,2009年6月15-20日,爱尔兰都柏林)中提供,具有动态分析和静态分析的混合分析的实例在Tripp和Weisman的“Hybrid Analysis for JavaScript Security Assessment(用于JavaScript安全评估的混合分析)”(ESEC/FSE'11:ACM软件工程基础会议,2011年)中提供,并且动态分析的实例在Liang等人的“A Dynamic Evaluation of the Precision of Static HeapAbstractions(静态堆抽象精确度的动态评估)”(面向对象编程、系统、语言和应用,2010年)中提供。
因此,暂时转到图3,假设具有执行图2中的方框中的操作的计算系统300,例如至少在安全分析工具340的一部分的控制下。即,安全分析工具340导致计算系统300执行图2中的方框中的操作。安全分析工具340包括静态分析工具350,假设其导致计算系统300执行方框205-210中的操作。安全分析工具340还具有动态分析工具365,假设其导致计算系统300执行方框220-275中的操作。此外,静态分析工具350包括插装工具353,其用于插装源110和汇130,如下所述,并且假设导致计算系统300执行方框215中的操作。下面更详细地描述图3。
转回到图2,关于静态分析201,在方框205,计算系统300执行程序P 100的静态分析以便至少确定源110和汇120。如上所述,源110是语句140-1(“String imei=getIMEI()”),并且汇120是语句140-3(“log.write(check)”)。基于源110和汇120,计算系统300在方框210创建泄漏规范S 211,其至少包括所确定的源110和汇120的指示。在该实例中,假设方框205和210确定程序100中的所有源110和汇120。
在方框215,计算系统300插装(使用泄漏规范S 211)源110和汇120,以便能够确定源的读取值和汇的参数值。插装指监视程序100的特定方面的能力。在这种情况下,动态分析工具365需要确定在源和汇语句140处显示的具体值。这些具体值是源的读取值和汇的参数值。计算系统300可以插装源和汇语句140,方法是将代码添加(方框217)到程序100以便创建插装的程序107,插装的程序107提供这种确定具体值的能力。这种添加的代码可以提供具体值(例如,源的读取值或汇的参数值)的传送。例如,添加的代码可以将具体值写入到动态分析工具365,例如“writeValuetoDynamicAnalysis(imei)”,或者可以将具体值写入到可由动态分析工具365读取的数据结构,例如“writeValuetoDataStructure(check)”,或者通过其它合适的技术执行此操作。
注意,可以添加类似的代码(方框215和217),以便程序107传送源110或汇120处的线程ID。例如,getThreadId()方法可以用于JAVA(程序设计语言和计算平台,最初由SunMicrosystems在1995年发布)以便确定线程ID,并且可以将类似于上面的语句添加到程序100(以便创建插装的程序107)并允许插装的程序107将线程ID传送到动态分析工具365。类似类型的线程标识方法可以用于其它语言中。
注意,静态分析和插装通常使用源代码执行。但是,还可以使用诸如可执行代码之类的其它代码。
在该实例中,在方框215执行的插装不被视为静态分析201的一部分,并且在静态分析201之后执行。但是,针对每个确定的源110或汇120,方框215可以作为静态分析201的一部分执行,例如在方框205。注意,通常使用源-汇对,因为例如可以具有以下信息:这些信息来自未到达汇的源以及未使用来自源的信息的汇。此外,尽管可以在单个汇中终止多个源,但是为了易于跟踪和其它原因,从个体源-汇对的角度查看这些源。
方框220开始动态分析291和插装程序107的执行。即,执行插装的程序107的可执行版本,并且动态分析工具365然后检查可执行版本。在方框225,响应于方法调用的执行,计算系统300查询规范S 211以便检查这是安全源、汇还是其它。“其它”是不涉及源110或汇120的方法调用。注意,动态分析工具365可以通过对应于方法调用(如在当前系统中已知和执行的)的插装,确定何时执行方法调用。在方框230,计算系统300判定这是对源110、汇120还是其它的调用。
如果调用是对方法的调用而不是对源110或汇120的调用(方框230=其它),则流程继续到方框270。在方框270,计算系统300判定执行是否完成。如果执行未完成(方框270=否),则流程返回到方框220,其中继续插装的程序107的执行。如果执行完成(方框270=是),则流程在方框275结束。
如果调用是对源110的调用(方框230=源),则在方框265,计算系统300使用插装的源语句,记录读取值。通常,如上所述,这可以经由添加到程序100(并且在插装的程序107中)的代码来执行,以便将读取值传送到动态分析工具365。还可以在方框265记录线程ID。注意,例如使用添加到程序100的代码,线程ID还经由插装的程序107传送到动态分析工具365。流程然后继续到方框270。
如果调用是对汇120的调用(方框230=汇),则流程继续到方框235。在方框235,计算系统300使用插装的汇语句145,记录参数值。通常,如上所述,这可以经由添加到程序100(并且在插装的程序107中)的代码来执行,以便将参数值传送到动态分析工具365。还可以在方框235记录线程ID。注意,例如使用添加到程序100的代码,线程ID还经由插装的程序107传送到动态分析工具365。此外,可以在方框235记录线程ID。注意,线程ID的检查和记录是可选的。进一步,注意,分析仅查看源和汇的出现。这些源和汇可以来自不同线程,例如,响应于无关事件。在方框240,判定源110和汇120是否具有相同的线程ID。如果否(方框245=否),则流程继续到方框270。
如果是(方框245=是),则流程继续到方框250,其中计算系统300检查在源和汇语句处显示的具体值之间的相似性(例如,根据准则)。编辑距离是一个此类实例。另一个实例是汉明距离(如果字符串具有相同的长度)。具体值是在方框265存储的记录的读取值以及在方框235存储的记录的参数值。例如,在图1A中,记录的读取值将是方法getIMEI()116设置的字符串“imei”115中的IMEI的值。记录的参数值是传递到汇120log.write的字符串“check”的值。
如果源和汇语句的两个具体值不相似(方框255=否),则流程继续到方框270。如果源和汇语句的两个具体值相似(例如,根据准则)(方框255=是),则在方框260,计算系统300报告(例如,输出)泄漏实例,例如连同定量度量一起,以便提供泄漏的重要性度量。这在下面更详细地解释。
注意,图2中的流程仅是示例性的。例如,假设动态分析291包括方框220-275。但是,动态分析291可以仅记录汇和源的具体值。方框235之后的流程然后继续到方框270。一旦程序的执行完成(方框270=是),则可以执行方框240-260。
参考图3,该图提供适合于与此处的示例性实施例一起使用的计算系统300的概述。计算系统300包括一个或多个存储器345、一个或多个处理器310、一个或多个I/O接口320,以及一个或多个有线或无线网络接口330。备选地或者除了一个或多个处理器310之外,计算系统300可以包括电路315。计算系统300耦合到或者包括一个或多个显示器376以及一个或多个外部设备390。在一个实例中,一个或多个存储器345包括插装的程序107、程序100、泄漏规范211、运行时表386、安全分析工具340以及分析结果385。安全分析工具340包括静态分析工具350、插装工具353和动态分析工具365。
在一个示例性实施例中,安全分析工具340是实现的计算机可读程序代码,其可由一个或多个处理器310执行以便导致计算系统300执行在此描述的一个或多个操作。在另一个实例中,这些操作还可以部分或完全由电路315执行,电路315实现用于执行操作的逻辑。电路315可以实现为一个或多个处理器310的一部分,或者可以独立于一个或多个处理器310。处理器310可以是任何处理单元,例如数字信号处理器和/或单核或多核通用处理器。电路315可以是任何电子电路,例如专用集成电路或可编程逻辑。在一个实例中,静态分析工具350导致计算系统300执行图2的静态分析201,插装工具353导致计算系统300执行图2的方框215,并且动态分析工具365导致计算系统300执行图2的动态分析291。
存储器345可以包括非易失性和/或易失性RAM(随机存取存储器)、高速缓冲存储器、基于NAND的闪存、长期存储装置(例如,硬盘驱动器)和/或只读存储器。一个或多个I/O接口320可以包括用户可以用于与计算系统300交互的接口。显示器(多个)376例如可以是触摸屏、平面屏幕、显示器、电视、投影仪。
在一个示例性实施例中,用户通过显示器376上的UI 380与安全分析工具340交互,或者在另一个非限制性实施例中,通过网络接口(多个)330交互。在一个示例性实施例中,外部设备(多个)390使用户能够与计算系统300交互,并且可以包括鼠标、轨迹球、键盘等。网络接口330可以是有线或无线的,并且可以实现多种协议,例如蜂窝或局域网协议。计算系统300中的元件可以通过任何技术互连,这些技术例如包括总线、板上迹线、半导体上的互连等。
示例性泄漏规范211被示为多个(N个)源-汇对311-1到311-N,其中每个源-汇对包括一个源110和一个对应的汇120,以便可能污染的输入流175从源110流向汇120。在图1A和1C中,源110是语句140-1,并且汇120是log.write(check)。注意,可以将其它材料存储在程序100中源和汇所在的位置(例如,行)中。
运行时表386是在动态分析291期间,动态分析工具365可能创建的内容的一个实例。注意,使用“表”是为了简单,并且实际实现可以有所变化。可以在执行方框265时创建和更新运行时表386,在方框265记录源的读取值和线程ID。此外,可以在执行方框235时创建和更新运行时表386,在方框235记录汇的参数值和线程ID。在该实例中,运行时表386包括具有源、源值和线程ID的表项387-1。运行时表386中的“源”将是源-汇对311-1到311-N中的一个源。运行时表386包括具有汇、汇值和线程ID的表项387-2。运行时表386中的“汇”将是源-汇对311-1到311-N中的一个汇。
还示出示例性分析结果385,其在该实例中包含作为汇120的指示的表项388“log.write(check)”,以及作为信息发布量的定量度量的指示的“15/16”。该实例假设图1C的情形,其中字符串“check”包括来自getIMEI方法116的IMEI中的16个字符中的15个。在该实例中,动态分析工具365还在UI 380上输出与分析结果385中的表项388中的汇对应的泄漏实例的指示391。指示391陈述“在汇log.write(check)处具有泄漏实例”。在该实例中,动态分析工具365还在UI 380上输出分析结果385中的表项388中的定量度量的指示392。指示392陈述“16个字符中的15个在源值与汇值之间相同”。
所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是—但不限于—电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。计算机可读存储介质不包括传播波。
计算机可读的信号介质可以包括例如在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括—但不限于—电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括—但不限于—无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明的各个方面的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
上面参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其它设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令提供实现流程图和/或框图中的一个或多个方框中规定的功能/动作的过程。
在此使用的术语只是为了描述特定的实施例并且并非旨在作为本发明的限制。如在此使用的,单数形式“一”、“一个”和“该”旨在同样包括复数形式,除非上下文明确地另有所指。还将理解,当在此说明书中使用时,术语“包括”和/或“包含”指定了声明的特性、整数、步骤、操作、元素和/或组件的存在,但是并不排除一个或多个其它特性、整数、步骤、操作、元素、组件和/或其组合的存在或增加。
下面权利要求中的对应结构、材料、操作以及所有功能性限定的装置或步骤的等同替换,旨在包括任何用于与在权利要求中具体指出的其它元件相组合地执行该功能的结构、材料或操作。出于示例和说明目的给出了对本发明的描述,但所述描述并非旨在是穷举的或是将本发明限于所公开的形式。在不偏离本发明的范围和精神的情况下,对于所属技术领域的普通技术人员来说许多修改和变化都将是显而易见的。实施例的选择和描述是为了最佳地解释本发明的原理和实际应用,并且当适合于所构想的特定使用时,使得所属技术领域的其它普通技术人员能够理解本发明的具有各种修改的各种实施例。
Claims (22)
1.一种用于程序代码分析的方法,包括:
在程序的执行期间,计算系统记录在所述程序中的源和汇语句处显示的具体值,其中源语句读取机密信息,并且汇语句将所述机密信息发布到外部环境;以及
所述计算系统使用至少所记录的具体值和源-汇对,判定所述程序是否发生满足一个或多个定量准则的信息泄漏,
其中判定进一步包括:
通过确定所述源-汇对中的所述汇语句发布的信息量的定量度量,确定所述源-汇对中的所述汇语句的信息泄漏;以及
判定所述定量度量是否满足所述一个或多个定量准则。
2.根据权利要求1的方法,其中信息发布量的所述定量度量是在所述源-汇对的源值与汇值之间相同的位的数量。
3.根据权利要求2的方法,其中所述源值和所述汇值是字符串。
4.根据权利要求2的方法,其中使用比较所述源和汇值的差函数,确定在所述源-汇对的所述源值与所述汇值之间相同的位的数量。
5.根据权利要求4的方法,其中所述差函数包括编辑距离或汉明距离之一。
6.根据权利要求1的方法,其中插装所述源语句和所述汇语句,以允许在所述程序的执行期间在所述源语句和汇语句处显示的所述具体值的所述记录。
7.根据权利要求6的方法,还包括插装所述源语句和所述汇语句,以允许在所述程序的执行期间在所述源语句和汇语句处显示的所述具体值的所述记录。
8.根据权利要求1的方法,其中在所述源语句处显示的具体值是所述源语句读取的值。
9.根据权利要求1的方法,其中在所述汇语句处显示的具体值是所述汇语句使用的参数值。
10.根据权利要求1的方法,其中由针对所述程序执行的静态分析在先前确定所述源-汇对,以便确定在所述源-汇对中的源处开始并且在所述源-汇对中的对应汇处结束的流。
11.根据权利要求1的方法,其中:
记录进一步包括记录与在所述程序中到达的所述源和汇语句对应的线程标识;
判定进一步包括确定仅针对各个所述源-汇对中对于所述源语句和所述汇语句具有相同线程标识的源-汇对发生信息泄漏。
12.一种用于程序代码分析的装置,包括:
一个或多个包括计算机可读代码的存储器;
一个或多个处理器;
其中所述一个或多个处理器被配置为响应于所述计算机可读代码的执行,导致所述装置执行以下操作:
在程序的执行期间,计算系统记录在所述程序中的源和汇语句处显示的具体值,其中源语句读取机密信息,并且汇语句将所述机密信息发布到外部环境;以及
所述计算系统使用至少所记录的具体值和源-汇对,判定所述程序是否发生满足一个或多个定量准则的信息泄漏;
其中判定进一步包括:
通过确定所述源-汇对中的所述汇语句发布的信息量的定量度量,确定所述源-汇对中的所述汇语句的信息泄漏;以及
判定所述定量度量是否满足所述一个或多个定量准则。
13.根据权利要求12的装置,其中信息发布量的所述定量度量是在所述源-汇对的源值与汇值之间相同的位的数量。
14.根据权利要求13的装置,其中所述源值和所述汇值是字符串。
15.根据权利要求13的装置,其中使用比较所述源和汇值的差函数,确定在所述源-汇对的所述源值与所述汇值之间相同的位的数量。
16.根据权利要求15的装置,其中所述差函数包括编辑距离或汉明距离之一。
17.根据权利要求12的装置,其中插装所述源语句和所述汇语句,以允许在所述程序的执行期间在所述源语句和汇语句处显示的所述具体值的所述记录。
18.根据权利要求17的装置,还包括插装所述源语句和所述汇语句,以允许在所述程序的执行期间在所述源语句和汇语句处显示的所述具体值的所述记录。
19.根据权利要求12的装置,其中在所述源语句处显示的具体值是所述源语句读取的值。
20.根据权利要求12的装置,其中在所述汇语句处显示的具体值是所述汇语句使用的参数值。
21.根据权利要求12的装置,其中由针对所述程序执行的静态分析在先前确定所述源-汇对,以便确定在所述源-汇对中的源处开始并且在所述源-汇对中的对应汇处结束的流。
22.根据权利要求12的装置,其中:
记录进一步包括记录与在所述程序中到达的所述源和汇语句对应的线程标识;
判定进一步包括确定仅针对各个所述源-汇对中对于所述源语句和所述汇语句具有相同线程标识的源-汇对发生信息泄漏。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/102613 | 2013-12-11 | ||
US14/102,613 US9081968B2 (en) | 2013-12-11 | 2013-12-11 | Quantitative analysis of information leakage vulnerabilities |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104715203A CN104715203A (zh) | 2015-06-17 |
CN104715203B true CN104715203B (zh) | 2017-11-10 |
Family
ID=53271470
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410680148.4A Active CN104715203B (zh) | 2013-12-11 | 2014-11-24 | 信息泄漏漏洞的定量分析的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (2) | US9081968B2 (zh) |
CN (1) | CN104715203B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9245125B2 (en) * | 2014-02-27 | 2016-01-26 | Nec Laboratories America, Inc. | Duleak: a scalable app engine for high-impact privacy leaks |
US20150271196A1 (en) * | 2014-03-20 | 2015-09-24 | International Business Machines Corporation | Comparing source and sink values in security analysis |
US10296737B2 (en) * | 2015-12-09 | 2019-05-21 | International Business Machines Corporation | Security enforcement in the presence of dynamic code loading |
US10102368B2 (en) * | 2016-01-20 | 2018-10-16 | Qualcomm Incorporated | Information flow tracking using incremental profiling |
US10331909B2 (en) | 2016-01-26 | 2019-06-25 | International Business Machines Corporation | Dynamic data flow analysis for dynamic languages programs |
US10423408B2 (en) * | 2016-06-02 | 2019-09-24 | International Business Machines Corporation | Identifying and isolating library code in software applications |
US10701099B2 (en) * | 2016-09-28 | 2020-06-30 | International Business Machines Corporation | Providing efficient information tracking with dynamically selected precision |
CN109214188B (zh) * | 2017-06-30 | 2022-05-27 | 阿里巴巴集团控股有限公司 | 一种漏洞分析方法和装置及数据处理方法和装置 |
US11138319B2 (en) * | 2017-10-25 | 2021-10-05 | International Business Machines Corporation | Light-weight context tracking and repair for preventing integrity and confidentiality violations |
US10915639B2 (en) * | 2018-04-05 | 2021-02-09 | Oracle International Corporation | Staged dynamic taint flow inference |
US11016874B2 (en) * | 2018-09-19 | 2021-05-25 | International Business Machines Corporation | Updating taint tags based on runtime behavior profiles |
US11729197B2 (en) * | 2019-11-19 | 2023-08-15 | T-Mobile Usa, Inc. | Adaptive vulnerability management based on diverse vulnerability information |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102184360B (zh) * | 2011-05-13 | 2013-06-05 | 华中科技大学 | 一种适用于嵌入式处理器的信息流安全监控方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AT405470B (de) * | 1997-10-10 | 1999-08-25 | Kratochwil Konrad | Verfahren und anordnung zur übertragung von digitalen daten |
US7599491B2 (en) | 1999-01-11 | 2009-10-06 | Certicom Corp. | Method for strengthening the implementation of ECDSA against power analysis |
US20030083831A1 (en) | 2001-11-01 | 2003-05-01 | International Business Machines Corporation | System and method for evaluating electromagnetic emanation vulnerabilities of computing systems |
US7383587B2 (en) * | 2002-11-18 | 2008-06-03 | Arm Limited | Exception handling control in a secure processing system |
US7102641B2 (en) * | 2004-03-29 | 2006-09-05 | International Business Machines Corporation | Method, data processing system, and computer program product for determining inversion edges for a cyclic compound directed graph |
US7437771B2 (en) * | 2004-04-19 | 2008-10-14 | Woodcock Washburn Llp | Rendering protected digital content within a network of computing devices or the like |
US8527975B2 (en) * | 2007-11-02 | 2013-09-03 | Hewlett-Packard Development Company, L.P. | Apparatus and method for analyzing source code using memory operation evaluation and boolean satisfiability |
JP5094487B2 (ja) | 2008-03-17 | 2012-12-12 | 三菱電機株式会社 | 情報漏洩検査装置及びコンピュータプログラム及び情報漏洩検査方法 |
JP2010072854A (ja) * | 2008-09-17 | 2010-04-02 | Canon Inc | 情報処理装置の支援装置、支援方法、およびコンピュータプログラム |
WO2010103543A1 (en) * | 2009-03-09 | 2010-09-16 | Abhilasha Aswal | New vistas in inventory optimization under uncertainty |
US8689180B2 (en) * | 2009-11-03 | 2014-04-01 | International Business Machines Corporation | Systems and methods for resource leak detection |
US8726392B1 (en) * | 2012-03-29 | 2014-05-13 | Symantec Corporation | Systems and methods for combining static and dynamic code analysis |
US8881293B1 (en) * | 2013-07-01 | 2014-11-04 | Sap Se | Static application security testing |
-
2013
- 2013-12-11 US US14/102,613 patent/US9081968B2/en active Active
-
2014
- 2014-11-24 CN CN201410680148.4A patent/CN104715203B/zh active Active
-
2015
- 2015-03-18 US US14/661,145 patent/US9251352B2/en not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102184360B (zh) * | 2011-05-13 | 2013-06-05 | 华中科技大学 | 一种适用于嵌入式处理器的信息流安全监控方法 |
Also Published As
Publication number | Publication date |
---|---|
US9251352B2 (en) | 2016-02-02 |
US20150193623A1 (en) | 2015-07-09 |
CN104715203A (zh) | 2015-06-17 |
US9081968B2 (en) | 2015-07-14 |
US20150161393A1 (en) | 2015-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104715203B (zh) | 信息泄漏漏洞的定量分析的方法和系统 | |
US9910941B2 (en) | Test case generation | |
JP5430570B2 (ja) | システムコールカバレッジ基準による試験スイート削減のための方法 | |
US9652369B2 (en) | Extraction of problem diagnostic knowledge from test cases | |
CN104699601B (zh) | 用于执行状态机驱动的注入的方法和系统 | |
US9690946B2 (en) | Security analysis using relational abstraction of data structures | |
CN108519945A (zh) | 覆盖率测试方法、装置及存储设备 | |
CN105824748B (zh) | 用于确定测试用例效率的方法和系统 | |
CN110209684A (zh) | 数据库ddl变更操作的跟踪方法、装置、系统及介质 | |
US9336121B2 (en) | Capture and display of historical run-time execution traces in a code editor | |
CN109783356A (zh) | 一种自动化测试方法及终端 | |
CN117172237A (zh) | 数据的分析方法及装置、电子设备和存储介质 | |
CN110413504A (zh) | 一种软件测试方法、装置、设备和存储介质 | |
CN105607990A (zh) | 一种空指针崩溃的挖掘方法及装置 | |
CN115022201B (zh) | 一种数据处理功能测试方法、装置、设备及存储介质 | |
CN113010409B (zh) | 智能合约测试方法及装置、电子设备、存储介质 | |
CN111859985B (zh) | Ai客服模型测试方法、装置、电子设备及存储介质 | |
CN115237425A (zh) | 代码检视方法、装置、计算机设备及存储介质 | |
CN116719777B (zh) | 阅读机器人读取ofd虚拟分区四性数据模仿人处理的技术 | |
CN109491921A (zh) | 埋点信息的管理方法和系统 | |
Sari et al. | A methodology for change propagation in health ontology | |
Nicolaescu et al. | On Adequate Behavior-based Architecture Conformance Checks | |
Wang | Precise Window Transition Graphs for Android Apps | |
CN115757145A (zh) | 客户端接口的开发方法、装置、设备以及存储介质 | |
US20140172404A1 (en) | Evaluation of software applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |