新的调试方法在流行的Web应用程序中找到了23个未检测到的安全漏洞
一个新的调试系统在50个流行的Web应用程序中找到了23个未确诊的安全漏洞,并且在64秒内才能分析任何给定的程序。
通过利用在Rails上的流行网络编程框架Ruby的一些特点,MIT研究人员开发了一个系统,可以通过数万行的应用程序代码快速梳理,以找到安全漏洞。
在测试使用Ruby在Rails上写入的50个流行Web应用程序的测试中,系统发现了23个以前未确诊的安全漏洞,并且不超过64秒才能分析任何给定的程序。
研究人员将在5月份在国际软件工程会议上展示其结果。
据丹尼尔杰克逊称,电气工程系和计算机科学系教授,新系统采用了一种称为静态分析的技术,旨在以非常一般的方式描述数据如何流过程序。
“典型示例是,如果您想对操作整数的程序进行抽象分析,则可能会将整数遍历到正整数,负整数和零,”杰克逊解释。然后,静态分析将根据其对整数符号的影响来评估程序中的每个操作。添加两个阳性产生阳性;添加两个否定会产生负面影响;乘以两个否定产生积极的;等等。
“这个问题是它不能完全准确,因为你失去了信息,”杰克逊说。“如果添加正极和负整数,则不知道答案是否为正,负或零。大多数关于静态分析的工作都专注于试图使分析更加可扩展,准确地克服这些问题。“
然而,随着Web应用程序,杰克逊说,准确性的成本非常高。“正在分析的计划只是巨大,”他说。“即使你写了一个小程序,它坐在庞大的图书馆和插件和框架上。因此,当您查看像Ruby在Raby上写的Web应用程序的Web应用程序时,如果您尝试进行传统的静态分析,则您通常会发现自己在这个巨大的沼泽中占据。这使得实践中真的不可行。“
然而,图书馆的广大大厦也给了杰克逊和他的前学生Joseph附近,他去年春天毕业,现在正在加利福尼亚大学在伯克利大学进行博士学位,这是一种制定书面的计划静态分析Ruby在Rails实用。
图书馆是程序员倾向于一遍又一遍地使用的代码汇编。而不是为每个新程序重写相同的功能,而是程序员可以从库中导入它们。
Ruby在Rails - 或Rails上,因为它被要求短暂 - 具有甚至在图书馆中定义其最基本的操作的特殊性。每次添加,每个分配特定值到变量,从库中导入代码。
近refrote这些库,以便在它们中定义的操作描述了它们以逻辑语言的自己的行为。这将转换为静态分析工具的机器可读代码转换为机器可读代码的Rails解释器。使用近附近的图书馆,通过解释器运行Rails程序,会产生程序处理数据的正式,逐行描述。
在他的博士工作中,在使用这款通用机制附近为Rails应用中的Ruby建造三种不同的调试器,每个都需要不同程度的程序员参与。研究人员呼叫空间中描述的新论文中描述的是,评估程序的数据访问过程。
靠近识别的七种不同方式,其中Web应用程序通常控制对数据的访问。有些数据是公开的,有些数据只能向当前登录的用户提供,有些是私人融入用户,一些用户 - 管理员 - 可以访问每个人的数据的选择方面,等等。
对于这些数据访问模式中的每一个,靠近开发的简单逻辑模型,该模型描述了用户可以在什么情况下执行的操作。根据黑客库生成的描述,空间可以自动确定程序是否遵守这些模型。如果没有,可能是安全缺陷。
使用空间确实需要访问应用程序代码的人来确定哪些程序变量和函数对应于附近模型的哪些方面。但这不是繁重的要求:靠近能够为他评估的所有50个应用程序映射相应的对应关系。并且该映射应该更轻松地对从一开始就涉及应用程序的开发的程序员,而不是在外面来到它附近。