专利名称:用于信息流降级器的静态检测和分类的系统和方法
技术领域:
本发明涉及静态程序分析,并且更具体而言涉及如下字符串分析,该字符串分析无需执行程序就能推断运行时出现的字符串值,以提供用于信息流降级器的自动检测和分类的函数分析。
背景技术:
信息流安全性原理规定在程序中不允许信息的任何“违法流”。如果一个流使得在可信计算中使用不可信信息(完整性侵害)或者如果一个流使得向未授权用户完全地或部分地透露秘密信息(机密性侵害),则该流是违法的。通过简单地声明不应该存在任何从“高”到“低”的信息流,可以将完整性和机密性看作为双重问题,其中“高”意味着完整性中 的“不可信”和机密性中的“秘密”,而“低”意味着完整性中的“可信”和机密性中的“公开”。可以利用信息流标签来标记信息。通常,信息流标签形成部分排序的集合或者甚至点阵(lattice)。如果严格强制信息流安全性并且不允许违法信息流,则大部分程序将无法工作。为了信息流安全性,不得不对程序进行“分割”,使得用特定标签“/”所标记的信息仅可以流向用高于或等于“/”的标签所标记的程序点。具有这些约束条件的程序非常有可能是没有用的。例如从完整性的观点来看,认为Web应用接受来自潜在不可信用户的输入并且在可信计算中使用这些输入。例如,在线银行程序将用户的账号和密码(潜在不可信或畸形的信息)作为输入并且将它们传递到后端数据库系统,其中在该后端数据库系统将它们用在可信设置中。在另一示例中,在线书店将顾客的用户ID和密码以及该顾客想要购买的书的书名(全部潜在不可信或畸形的信息)作为输入,并且使用它们来完成交易等等。从机密性的观点来看,Web应用通常释放基于秘密信息所计算的数据并且因此也应该被认为是秘密的。例如,银行应用可以向任意出纳员透露任意用户的社会安全号码的后四位数字,在线书店可以向任意商店售货员透露任意顾客的信用卡号码的后四位数字,诸如此类。在所有这些程序展示一种允许“高”信息流向“低”程序点的流的情况下,如果简单地强制信息流安全性,则所有这些程序将被拒绝。为了允许这些程序运行,可以将“高”信息“降级”并且变得足够“低”以便在“低”程序点中使用。降级将其自身转换成完整性中的“认可(endorsement) ”和机密性中的“从机密表删除(declassification) ”。例如,一旦程序证实用户向Web应用提供的输入是正确格式化的字符串,该程序便可以认可该输入,该输入现在变得足够可信以在可信计算中使用。类似地,一旦程序证实从秘密中提取的信息不足以透露该秘密自身,该程序便可以从机密表删除所提取的信息,所提取的信息现在变得足够公开以被透露给公开听众。表格I :信息流安全性
完整性机密性
WWW SI
权利要求
1.一种用于信息流降级器的静态检测和分类的方法,包括 通过静态分析程序变量来变换(502)存储在存储器设备中的程序,以产生对指令集中的每个变量的单个赋值; 将所述指令集转换(504)成具有字符串操作的产生规则,以标识有限字符串集合; 根据所述产生规则生成(508)上下文无关语法;以及 通过将所述有限字符串集合相对于一个或多个函数规范进行核对来标识(510)信息流降级器函数。
2.如权利要求I所述的方法,其中标识(510)包括检测所述降级器函数并且基于所述降级器函数的目的来对所述降级器函数进行分类。
3.如权利要求I所述的方法,其中所述一个或多个函数包括所述程序中的对安全性敏感的函数。
4.如权利要求I所述的方法,还包括将所述上下文无关语法与所述对安全性敏感的函数的规范进行比较(512),使得如果所述语法满足所述规范,则认为输入被正确降级。
5.如权利要求4所述的方法,还包括对字符串进行标记(514),以定位已经修改所述输入并且使得所述输入符合规范的字符串操作函数。
6.如权利要求I所述的方法,其中使用所述一个或多个函数规范来对所述降级器函数进行分类。
7.如权利要求I所述的方法,其中变换(502)所述程序包括通过使用程序变量赋值的伪注释来变换所述程序。
8.如权利要求I所述的方法,其中由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.一种用于信息流降级器的静态检测和分类的系统,包括 程序存储设备¢02),其被配置为存储程序,所述程序存储设备还被配置为结合处理器(606) 一起工作来执行程序指令以检测并且对所述程序中的信息流降级器进行分类;静态分析框架¢08),其被配置为分析应用程序并且对所述应用程序执行静态字符串赋值,以变换程序变量以产生对指令集中的每个变量的单个赋值,所述框架被配置为将所述指令集转换成具有字符串操作的产生规则,并且根据所述产生规则生成上下文无关语法以标识有限字符串集合;以及 比较模块¢10),其被配置为通过将所述有限字符串集合相对于一个或多个函数规范进行比较来标识信息流降级器函数,以检测所述有限字符串集合并对其进行分类。
20.如权利要求19所述的系统,其中基于所述降级器函数的目的来对所述降级器函数进行分类。
21.如权利要求19所述的系统,其中所述一个或多个函数包括所述程序中的对安全性敏感的函数。
22.如权利要求19所述的系统,其中所述比较模块(610)将所述上下文无关语法与对安全性敏感的函数的规范进行比较(512),使得如果所述语法满足所述规范则认为输入被正确降级。
23.如权利要求23所述的系统,还包括标记器¢14),其被配置为对字符串进行标记以定位已经修改所述输入并且使得所述输入符合规范的字符串操作函数。
24.如权利要求19所述的系统,其中由Web应用生成所述降级器函数。
25 略
全文摘要
一种用于信息流降级器的静态检测和分类的系统和方法包括通过静态分析程序变量来变换(502)存储在存储器设备中的程序,以产生对指令集中的每个变量的单个赋值。将该指令集转换(504)成具有字符串操作的产生规则。根据该产生规则生成(508)上下文无关语法,以标识有限字符串集合。通过将该有限字符串集合相对于一个或多个函数规范进行核对来标识(510)信息流降级器函数。
文档编号G06F17/30GK102741837SQ201080045278
公开日2012年10月17日 申请日期2010年7月30日 优先权日2009年10月8日
发明者A·沙拉巴尼, G·波德雅尔尼, M·皮斯托亚, R·海, T·欧麦尔, W·奥马里, Y·哈维夫, 立石孝彰 申请人:国际商业机器公司