Python真上天了?这些编程语言最不安全?
最近,据外媒消息,开源安全公司WhiteSource在过去十年中对七种最广泛使用的语言中的开源安全漏洞进行了研究。最终结果发现最不安全的语言是C、Java、JavaScript、Python、Ruby、PHP和C ++,常用的语言全部上榜,没有任何悬念。不过这几个里面谁又是相对好一点的呢?
为了正确找到漏洞,WhiteSource使用了其语言安全数据库。其中包含来自多个来源的开源漏洞数据,如国家漏洞数据库(NVD)、安全建议、GitHub问题跟踪器和开源项目问题跟踪器。
对于哪种语言具有最大的安全漏洞其实毫无悬念,所有报告的漏洞中有近50%是在C语言中的。
谷歌Linux内核安全工程师Kees“Case”Cook最近说过:“ C是一个奇特的汇编程序,它几乎可以称之为机器代码。除此之外,C还带来了一些令人‘惊喜’的‘包袱’,未定义的行为导致安全漏洞和易受攻击的基础设施的弱点还是硬伤。”
但是,WhiteSource认为,这并不是说C的安全性低于其他语言,C中的大量开源漏洞可以用几个因素来解释。对于初学者来说,C的使用时间比我们研究过的任何其他语言都要长,并且编写的代码量最大,它也是OpenSSL和Linux内核等主要基础架构背后的语言之一。这种体积和中心性的成功组合解释了C中众多已知的开源漏洞。
“现在我已经和C语言编程战斗了几十年,在C中制造可怕的安全错误确实太容易了。例如, C包含大量未定义的行为,这会使各种可怕的可能性成为威胁。”
但是,C++在过去五年中冠以最高严重性漏洞的“荣誉称号”,长期困扰C的缓冲区错误现在也经常在C ++中被发现。
当涉及哪种语言最不安全或最安全时,这些数字并不能说明完整的事
(图片来源:WhiteSource)
JavaScript也许是最流行的语言,也是唯一一个 “ 过去10年漏洞数量持续上升 ”的语言。
WhiteSource指出, 在调侃JavaScript之前,这些结果其实具有误导性,大多数JavaScript的Common Weakness Enumeration(CWE)都是来自JavaScript包的PathTraversal和加密安全漏洞,这些漏洞几乎不被使用,维护或支持。
那么,为什么这些几乎不被使用的问题以及其他语言问题陆续浮现出来?主要来源于新的自动化程序,例如源代码分析工具,正在发现这些漏洞,否则这些漏洞还将继续被忽视。
在安全漏洞上表现良好的一种语言是我们经常取笑的Python。
几乎所有语言都共享一些CWE,70%的最常见语言中有两种CWE:跨站点脚本(XSS),又名 CWE-79和输入验证,也称为CWE-20。
显示很多的其他CWE包括:信息泄漏/泄露(CWE-200),路径遍历(CWE-22)和CWE-264权限,权限和访问控制(最近被近亲——不正当访问控制(CWE-284)取代)。
从结果来看,C真的是最糟糕的,Python是最好的。而从昨日TIOBE 公布的2019年4月编程语言排行榜来看,Python的势头凭借着与如今大热的人工智能与大数据“捆绑销售”,依然是猪突猛进。编程圈里的金句 “学完Python,便可上天!”指日可待? Python又应用范围广,还相对更安全,真的要上天了吗?
但是这种结论WhiteSource认为太简单了:“虽然嘲讽对方’我的编程语言比你更安全'是一种有趣的消磨时间的游戏,但是您应该花时间“了解已知的开源漏洞,并了解您和您的团队正在使用的编程语言中的优缺点。”