多数编程语言存在安全漏洞:或攻击其语言开发的应用程序

2017-12-14 10:48:18 admin 12

据外媒 12 月 10 日报道, IOActive 的高级安全顾问 Fernando Arnaboldi 于 12 月初在 2017 Black Hat 欧洲安全会议上发表了一篇有趣的研究报告:存在严重的缺陷,可能会攻击其语言开发的任何安全应用程序。

该研究是为了探索安全开发的应用程序受到底层编程语言中未知漏洞的影响。相关人士透露,Arnaboldi 使用 fuzzing 软件测试技术分析了最流行的编程语言( JavaScript、Perl、PHP、Python 和 Ruby )。Fuzzing 或 fuzz 测试是一种自动化的软件测试技术,它包括为计算机应用程序提供无效、意外或随机的数据。获得数据后,研究人员会监视类似崩溃或失败的内置代码断言之类的异常,或者是寻找潜在的内存泄漏。据悉,Google 专家就曾使用这种技术发现了流行软件 OpenSSL 和 Linux 组件中的许多缺陷。

下面是研究人员用 fuzzing 技术测试的编程语言列表。programming-languages-fuzzing

Arnaboldi 开发了一个定制的 “ 微分fuzzer ”  XDiFF ( 扩展差分 Fuzzing 框架),专门用于测试编程语言的结构。研究人员将 XDiFF 发布为 GitHub 上的开源项目。此外,研究人员还确定了大部分的基本功能,并使用 XDiFF fuzzer 进行了测试。在执行之前,fuzzer 通过在函数和有效载荷之间进行排列来生成所有可能的测试用例,测试用例将当时编程语言的一个功能与不同的有效载荷结合在一起,以便于暴露编程语言中的漏洞。

Arnaboldi 表示,漏洞的发现完全取决于能否选择正确的输入。在这个测试中,使用了少于30个原始值(比如数字,字母等)与特殊有效载荷相结合,并且定义这些特殊的有效载荷,以便于帮助识别软件何时访问外部资源。

Arnaboldi 用 fuzzer 分析了所有编程语言中的严重漏洞,有以下问题:

○ Python 包含可用于 OS 命令执行的无记录的方法和本地环境变量。

○ Perl 包含一个可以像 eval()那样执行代码的类型映射函数。

○ NodeJS 输出可以泄露部分文件内容的错误消息。

○ JRuby 加载并执行远程代码的功能不是为远程代码执行而设计的。

○ PHP 常量的名称可以用于用来执行远程命令。

Arnaboldi 表示,软件开发人员可能在不知情的情况下将代码包含在应用程序中,而这些代码可能以开发者没有预见到的方式使用,以至于对安全开发的应用程序构成了风险。假设这些漏洞并不是恶意造成的,那么可能是因为错误或试图简化软件开发的结果。而这个结果会影响到解释器解析的常规应用程序。因此,研究人员建议,在重要的生产环境中,应该优先排查或修复程序语言解释器的安全隐患。

消息来源:Security Affairs

厦门乾盛科技有限公司

地址:厦门市思明区软件园二期观日路40号1楼I单元

邮编:361004

电话:0592-2133555、2121226

传真:0592-5827699

邮箱:Admin@xmqstech.com