网络安全 频道

这些最不安全的编程语言了解一下?

  从上到下,技术充斥着安全风险。在最低层次上,我们有硬件错误,比如英特尔的崩溃和Spectre的bug。就在这些之上,我们有编程语言安全漏洞。

  开源安全公司WhiteSource最近对过去十年中使用最广泛的七种语言的开源安全漏洞进行了研究。为了找到漏洞,该公司使用了其语言安全数据库。它包含来自多个来源的关于开源漏洞的数据,如国家漏洞数据库(NVD)、安全警告、GitHub问题跟踪器和开源项目问题跟踪器。

  该公司发现:最不安全的语言是C、Java、JavaScript、Python、Ruby、PHP和c++,这并不令人意外。

  对于哪种语言的安全漏洞最多也不奇怪。这是C,大幅度提升。所有报告的漏洞中有近50%是在C中。

  正如谷歌Linux内核安全工程师Kees“Case”Cook最近所说:“C是一种高级的汇编程序。几乎是机器代码。”此外,“C带来了一些令人担忧的包袱、未定义的行为,以及其他导致安全缺陷和脆弱基础设施的弱点。”

  但WhiteSource认为:这并不是说C语言不如其他语言安全。C中大量的开源漏洞可以用几个因素来解释。首先,C语言的使用时间比我们研究过的任何其他语言都要长,并且拥有最多的编写代码量。它也是OpenSSL和Linux内核等主要基础设施背后的语言之一。这种体积和中心的成功结合解释了C语言中大量已知的开源漏洞。

  他们说的有道理。但是,在编写了C语言程序并与之斗争了几十年之后,我发现在C语言中确实很容易犯严重的安全错误。

  然而,c++在过去5年里“有幸”拥有最严重的漏洞。长期困扰C语言的缓冲区错误现在也经常在c++中被发现。

 当涉及到哪种语言最不安全或最安全时,这些数字并不能说明全部问题

  也就是说,JavaScript,也许是最流行的语言,也是唯一一个“在过去10年里漏洞数量持续增加”的语言。

  WhiteSource指出,在充分利用JavaScript之前,这些结果是有误导性的。JavaScript最常见的弱点是来自JavaScript包的路径遍历和密码安全漏洞,这些漏洞很少被使用、维护或支持。

  那么,为什么他们,以及其他语言问题会出现呢?新的自动化程序,如源代码分析工具正在发现漏洞,否则这些漏洞会被忽略。

  有一种语言在安全漏洞方面表现得很好,那就是Python。

  几乎所有语言都有一些CWE。在70%最常见的语言中都有两个CWE:跨站点脚本(Cross-Site-Scripting, XSS),即CWE-79和输入验证(Input Validation,也称为CWE-20。

  其他经常出现的CWE包括:信息泄漏/公开(CWE-200)、路径遍历(CWE-22)和CWE-264权限、特权和访问控制。最近,后者因其更具体、更密切的关系,不恰当的访问控制(CWE-284)而被取代。

  但是C语言真的是最差,Python是最好的吗?WhiteSource认为这是一个过于简单的结论:“虽然‘我的编程语言比你的更安全’的游戏无疑是一种消磨时间的有趣方式……找到答案可能无助于你创造出最具创新性或最安全的软件。”

  相反,您应该花时间“掌握已知的开源漏洞,了解您和您的团队正在使用的编程语言的优缺点”。

  最后,安全性与语言无关,而与您如何使用它们有关。

0
相关文章