当前位置: 怎么利用网络赚钱 > 网络漏洞赚钱 > 正文

研究报告:C语言竟然最不安全!来辩么?

发布时间:2019-05-01 18:17:11

可以说,技术从头到脚“千疮百孔”。我们见识了最底层的硬件错误如英特尔公司“出品的”Spectre 和 Meltdown 漏洞,而往上看,则会发现编程语言漏洞,而且多得“就像那天上的星星”。

研究人员的数据来源是WhiteSource、python。

哪种语言的漏洞总量最多?

结果不出意外,这七大流行语言是 C、Java、JavaScript、Python、Ruby、PHP 和C++。

而漏洞最多的语言是:C,且以绝对优势胜出。在所报告的漏洞中,几乎近50%位于C语言中。

这些开源语言中最常见的漏洞分别是XSS,输入有效性验证,权限、特权和访问控制,信息泄露。

使用自动化工具和赏金计划进行漏洞扫描革新了整个行业,2017年报告的漏洞量大幅增长。

过去两年间虽然漏洞的数量增长了,但是大多数语言中暴露的漏洞的严重程度降低了。

图:各语言漏洞数量占比

就像谷歌 Linux 内核安全工程师 Kees “Case” Cook 最近所说的那样,“C 是一种迷人的汇编语言,它几乎可以算作是机器代码。”但是,“C具有一些令人担忧的未明确行为以及其它一些弱点,最终导致安全缺陷和易受基础设施的情况出现。”

不过 WhiteSource 公司表示,“这并不是说 C 语言的安全性不及其它语言。C语言中存在如此多的开源漏洞的原因是:首先,C语言要比其它语言的使用时间要长,而且编写的代码数量最多;C语言同时是主流基础设施如 OpenSSL和 Linux 内核使用的语言之一。数量之多和集中程度之高是C语言中出现最多开源漏洞的原因。”

图:各语言漏洞数量对比情况

他们说的倒也有道理。但是,在使用C语言并和它斗智斗勇的十年期间,在 C 语言中搞出糟糕的安全问题也过于容易。例如,C语言中含有大量不确定行为,导致各种恶意之徒趁虚而入。

哪种语言的高危漏洞数量最多?

不过,C++ 在过去的五年中“喜得”最多数量的高危漏洞。长期折磨C语言的缓冲区错误现在也开始频繁现身于 C++ 中。

图:各语言高危漏洞数量

话虽如此,可能是最流行的语言 JavaScript也是唯一一个在过去十年间漏洞数量在持续增长的语言。

报告指出,在嘲笑 JavaScript 之前,得首先说明一点,这些结果容易引起误解。JavaScript语言中最常见的 CWE 漏洞是很少被使用、维护或支持的 JavaScript 包中的路径遍历漏洞和加密问题。那么,为什么出现的是这两种漏洞问题呢?因为发现漏洞的是新型的自动化程序。

另外一种在安全漏洞方面“颇有建树”的是 Python。对,就是经常被群嘲的 Python。

研究人员通过分析不同语言的CWE漏洞数量来分析编程语言的安全性。研究人员发现每种语言的top 3的CWE漏洞中,XSS和输入有效性验证漏洞占了70%。

七大语言的几种“最”

C 语言可以说是当之无愧的漏洞老大。损坏漏洞的语言。

Java 是唯一一种在去年开源漏洞数量见涨的语言。 语言的中危漏洞占比稳定在75%,不过在过去两年中其高危漏洞数量也在增加。

JavaScript2017年的漏洞总量是2016年的16倍。尽管 JS 的漏洞数量在2018年上涨了50%,但高危漏洞所占比例和2017年持平。

PHP 的漏洞总量排名第二,也是唯一一种 SQL 漏洞在所含漏洞中排名如此靠前(第二)的语言。的热度有所下降,但它在2017的漏洞数量猛增。

Python 与众不同的一点是,2015年的漏洞总量达到峰值,之后逐年下降。而其它语言则是2017年见涨,2018年下降。按年份来看,Python 在2017年以前的高危漏洞数量相对较少。

C++ 和 C 遭受的 CWE 漏洞类型一致。由于这两种语言在 web 应用中的流行度不高,因此它们也较少遭受其它语言饱受的 CWE 漏洞折磨。

Ruby 的漏洞总量垫底。 中所含的开源漏洞像过山车一样高低起伏不定,不过2015年以来它的流行度也一再放缓。

C 最坏 Python 最好?

但是,C语言 公司认为做出这样的结论太过武断:“虽然长期以来,我使用的语言要比你的安全这种说法颇有戏谑成分,但找到答案对你创建最具创新性或最安全的软件很可能并没有什么用。”

正确的做法是,应当“保持对已知开源漏洞的警觉,并了解你和团队所使用语言的优劣势。”

一句话结尾:安全无关语言,使用方式才至关重要。

来源网络,侵权删除