欢迎光临
我们一直在努力
您的位置:首页>新闻 >

新的调试方法在50个流行的Web应用程序中发现了23个未检测到的安全漏洞

通过利用流行的Web编程框架Ruby on Rails的一些特性,麻省理工学院的研究人员开发了一个系统,可以快速梳理成千上万行应用程序代码以发现安全漏洞。

在使用Ruby on Rails编写的50个流行Web应用程序的测试中,系统发现了23个先前未确诊的安全漏洞,分析任何给定程序花了不超过64秒。

研究人员将在5月份的国际软件工程大会上展示他们的研究成果。

根据电气工程和计算机科学系教授丹尼尔杰克逊的说法,新系统采用了一种称为静态分析的技术,该技术试图以一种非常通用的方式描述数据如何通过程序流动。

“这个经典的例子是,如果你想对一个操纵整数的程序进行抽象分析,你可以将整数分成正整数,负整数和零,”杰克逊解释道。然后,静态分析将根据其对整数符号的影响来评估程序中的每个操作。增加两个阳性产生阳性; 添加两个负数会产生负数; 乘以两个负数产生正数; 等等。

“问题在于它不能完全准确,因为你丢失了信息,”杰克逊说。“如果添加正整数和负整数,则不知道答案是正数,负数还是零。大多数关于静态分析的工作都集中在努力使分析更具可扩展性和准确性,以克服这些问题。“

然而,对于Web应用程序,准确性的成本非常高,杰克逊说。“正在分析的计划非常庞大,”他说。“即使你编写了一个小程序,它仍然位于大量的库和插件和框架之上。因此,当您查看像Ruby on Rails这样的语言编写的Web应用程序时,如果您尝试进行传统的静态分析,您通常会发现自己陷入了这种巨大的困境。这使得它在实践中真的不可行。“

然而,这个庞大的图书馆大厦也让杰克逊和他的前学生约瑟夫·阿瑟(Joseph Near)在去年春天从麻省理工学院毕业,现在正在加州大学伯克利分校做博士后,这是一种对所写程序进行静态分析的方法。 Ruby on Rails很实用。

库是程序员倾向于反复使用的代码汇编。程序员可以只从库中导入它们,而不是为每个新程序重写相同的函数。

Ruby on Rails - 或Rails,因为它被称为简称 - 具有定义甚至是库中最基本操作的特性。每次添加,每个特定值赋值给变量,都会从库中导入代码。

接近重写这些库,以便它们中定义的操作用逻辑语言描述它们自己的行为。这将Rails解释器转换为静态分析工具,Rails解释器将高级Rails程序转换为机器可读代码。使用Near的库,通过解释器运行Rails程序可以生成关于程序如何处理数据的正式的逐行描述。

在他的博士论文中,Near使用这种通用机制为Ruby on Rails应用程序构建了三个不同的调试器,每个都需要不同程度的程序员参与。新论文中描述的那个,研究人员称之为Space,评估了一个程序的数据访问程序。

近似确定了Web应用程序通常控制数据访问的七种不同方式。有些数据是公开的,有些数据仅供当前登录的用户使用,有些是个人用户专用,有些用户 - 管理员 - 可以访问每个人数据的选择方面,等等。

对于这些数据访问模式中的每一种,Near开发了一个简单的逻辑模型,该模型描述了用户在什么情况下可以对哪些数据执行哪些操作。从被黑客库生成的描述中,Space可以自动确定程序是否符合这些模型。如果没有,则可能存在安全漏洞。

使用Space确实需要有权访问应用程序代码的人来确定哪些程序变量和函数与Near模型的哪些方面相对应。但这不是一个繁重的要求:Near能够为他评估的所有50个应用程序映射对应关系。对于从一开始就参与应用程序开发的程序员来说,映射应该更容易,而不是像Near那样从外部进行映射。

免责声明:本网站图片,文字之类版权申明,因为网站可以由注册用户自行上传图片或文字,本网站无法鉴别所上传图片或文字的知识版权,如果侵犯,请及时通知我们,本网站将在第一时间及时删除。