即使是使用安全开发程序构建的软件也可能容易受到攻击, 这是由于它们所依赖的解释的编程语言存在缺陷。
IOActive的研究员Fernando Arnaboldi在黑帽欧洲会议上透露,五种流行的编程语言的解释器存在严重缺陷,这使得应用程序面临风险。
Arnaboldi发现,例如,Python有“可以用于OS命令执行的未公开的方法和本地环境变量”。
NodeJS是一个JavaScript解释器,同时可以通过输出的错误消息来泄漏文件内容,而JRuby是Ruby的Java实现,“在不是为远程代码执行而设计的函数上加载和执行远程代码”。
对Perl来说,Arnaboldi引用了它的typemaps函数的能力,包括在默认的一组模块中,来执行代码。 在PHP中,某些本地函数可以传递一个常量的名字来执行远程命令执行。
他认为这些漏洞可能是由于试图简化软件开发而造成的。
这些语言漏洞被怀疑是由于试图简化软件开发而造成的
“这些漏洞最终会影响到受影响的解释器的正常应用程序;然而,这些修补程序应该应用于解释器。”他说。
对于被解释的编程语言的漏洞, 软件开发人员可能不知不觉地将代码包含在应用程序中, 这种方法可以用设计器没有预见到的方式来使用。Arnaboldi 写道: "这些行为中的一些会给应用程序安全带来风险, 而这些应用是根据指导原则开发的。
研究人员利用XDiFF(一种“差别化的模糊”)发现了这些缺陷,并针对不同的语言进行了几个解释。
对于JavaScript,目标包括Google的v8 JavaScript引擎,以及微软的ChakraCore等价物,Mozilla的SpiderMonkey,NodeJS和Node-ChakraCore。
在PHP中,他使用了PHP和HHVM,而Ruby的目标包括Ruby和JRuby。他还使用了Perl、ActivePerl、CPython、PyPy和Jython。
正如他之前指出的那样,研究表明,当使用编程语言的某些特性时,应用程序可能会受到安全问题的影响。
Aranboldi写道:“在可能影响安全应用程序的不同实现中有许多可能被滥用。在JavaScript、Perl、PHP、Python和Ruby中,解释的编程语言对代码进行解析时,出现了一些意想不到的情况。”
更多阅读
“欢乐圣诞”“喜迎元旦”课课家“双旦”活动火爆来袭!
课课家云数据中心网络技术与设计视频课程
课课家 2018年软考软件设计师历年案例分析真题详析视频课程
领取专属 10元无门槛券
私享最新 技术干货