E安全12月13日讯,网络安全公司IOActive高级安全顾问费尔南多·阿纳博迪上周在欧洲2017黑帽大会上发布的一项研究结果显示,几款目前热门的编程语言中存在漏洞,可允许黑客入侵这些语言构建的应用程序。
阿纳博迪使用模糊测试(Fuzzing)技术分析了几个热门编程语言,包括JavaScript、Perl、PHP、Python和Ruby。
模糊测试 (Fuzzing,Fuzz testing)是一种软件测试技术,其核心思想是自动或半自动化生成随机数据输入到一个程序中,并监控程序异常,如崩溃,断言(assertion)失败,以发现可能的程序错误,比如内存泄漏。模糊测试常常用于检测软件或计算机系统的安全漏洞。
这项研究背后的想法是,安全开发的应用程序也可能受底层编程语言的漏洞所影响。谷歌专家曾使用Fuzzing技术发现热门软件OpenSSL和Linux组件中存在的许多漏洞。
阿纳博迪利用Fuzzing技术测试的编程语言如下图:
阿纳博迪开发了一款专门测试编程语言结构的自定义差异化模糊测试工具“XDiFF”(Extended Differential Fuzzing Framework,扩展性差异化模糊测试框架)。这名研究人员将XDiFF发布在开源GitHub上,链接见:https://github.com/IOActive/XDiFF
阿纳博迪确定了这些编程语言的大多数基本功能,并利用XDiFF Fuzzer进行测试。阿纳博迪在研究论文中写到,执行之前,XDiFF会在函数和Payload之间执行置换(Permutation),从而生成所有可能的测试用例。测试用例此时将编程语言的一个函数与不同的Payload组合。
阿纳博迪解释称,发现漏洞完全取决于选择正确的输入。在这项测试中,不到30个原始值(例如数字、字母等)与特殊Payload组合。这些特殊的Payload经过定义,以帮助识别软件何时试图访问外部资源。
阿纳博迪经过分析发现这些编程语言中存在的漏洞如下:
Python包含用于OS命令执行的未公开方法和本地环境变量。
Perl包含像ev al ()那样执行代码的typemaps函数。
NodeJS输出可能会暴露部分文件内容的错误信息。
JRuby会在非远程代码执行功能上加载并执行远程代码。
PHP常量名称能被用来执行远程命名。
阿纳博迪指出,这些漏洞可能是因为错误所致,也可能是试图简化软件开发带来的结果。这些漏洞最终会使受影响解释器解析的常规应用程序受到影响。攻击者可利用这些漏洞攻击安全性最高的应用程序。
阿纳博迪表示,软件开发人员可能会不知不觉地将代码添加到应用程序中,而这些代码可能会以设计人员未预见的方式被利用。一些行为可能会给安全开发的应用程序带来风险。
注:本文由E安全编译报道,转载请注明原文地址
https://www.easyaq.com/news/835701630.shtml
领取专属 10元无门槛券
私享最新 技术干货