评判方法:
我们经常会听到这样的声音:“XX语言比XX语言更安全。”其实,编程语言的安全性也取决于多种因素,为了避免引起歧义,我们先来阐述一下评判方法。
本文中关于安全性的评判标准是基于Whitesource的综合数据库,该数据库汇集了来自多个来源的开源漏洞信息,如国家漏洞数据库(NVD)、安全咨询、Github问题跟踪程序和流行的开源项目问题跟踪程序。
Whitesource综合数据库涵盖了200多种编程语言,在此次研究中,我们挑选了过去几年在开源项目中最流行的其中编程语言,C、Java、JavaScript、Python、Ruby、PHP和C++。
在评判时,我们将参考这些编程语言的已知的开源安全漏洞的数量、这些漏洞随时间的严重程度以及常见的CWE。
谁是最安全的编程语言?
从上图中,我们可以看到在这些编程语言中,C语言的漏洞数量是最多的,占到了过去10年报告中的所有漏洞的47%。
这也使得很多人容易根据这个结果认为C语言最不安全,但其实事实并非如此。首先,C语言是初学者最常使用的编程语言,产生漏洞的几率无疑就增加了。其次,C语言的使用时间比大多数语言都长,理所应当的会更容易受到攻击。第三,C语言还是Open SSL和Linux内核等主要基础架构背后的语言之一。
如果单从安全漏洞数量的维度来看,Ruby是最安全的编程语言,而C语言是最不安全的编程语言。
随着时间的推移,每种编程语言安全漏洞的变化
从图中我们可以看到,每个编程语言都有自己的安全高点和低点,但是在过去的两年中,所有编程语言的安全漏洞都出现了大幅的增加,其背后的原因主要是开源的普及和大众对于开源组件安全漏洞的认知提高。另外,自动化工具和对bug奖励计划的大量投资也促进了安全漏洞数量的大幅增加。 |