研究報告:C語言竟然最不安全!來辯麼?

可以說,技術從頭到腳“千瘡百孔”。我們見識了最底層的硬件錯誤如英特爾公司“出品的”Spectre 和 Meltdown 漏洞,而往上看,則會發現編程語言漏洞,而且多得“就像那天上的星星”。

研究人員的數據來源是WhiteSource的綜合數據庫,有點類似NVD數據庫。該數據庫中包含200多種語言,研究人員主要關注過去10年最常用的7種編程語言的安全性分別是,C、C++、Java、PHP、python、JS、Ruby。

每天晚上20:00我偶爾會開直播給大家分享C/C++遊戲編程學習知識和路線方法,我會不定期更新最新的教程和學習方法,大家都是學習C/C++的,或是轉行,或是大學生,還有工作中想提升自己能力的前端黨,如果你是正在學習C/C++的小夥伴可以加入學習。最後祝所有程序員都能夠走上人生巔峯,讓代碼將夢想照進現實,非常適合新手學習,有不懂的問題可以隨時問我,工作不忙的時候希望可以給大家解惑。c/c++學習羣:825414254

哪種語言的漏洞總量最多?

結果不出意外,這七大流行語言是 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 語言可以說是當之無愧的漏洞老大。十年來漏洞總量都穩居霸主寶座。不過,C語言的低危漏洞數量也相對較低,2018年僅爲7%。它也是唯一一種含有嚴重程度高的內存損壞漏洞的語言。

Java 是唯一一種在去年開源漏洞數量見漲的語言。令人吃驚的是,2018年Java 的漏洞數量幾乎是2017年的兩倍。Java 語言的中危漏洞佔比穩定在75%,不過在過去兩年中其高危漏洞數量也在增加。

JavaScript 是當前的“流量小生”,也是過去十年來唯一一種漏洞總量持續上漲的語言。2017年的漏洞總量是2016年的16倍。儘管 JS 的漏洞數量在2018年上漲了50%,但高危漏洞所佔比例和2017年持平。

PHP 的漏洞總量排名第二,也是唯一一種 SQL 漏洞在所含漏洞中排名如此靠前(第二)的語言。雖然PHP的熱度有所下降,但它在2017的漏洞數量猛增。

Python 與衆不同的一點是,2015年的漏洞總量達到峯值,之後逐年下降。而其它語言則是2017年見漲,2018年下降。按年份來看,Python 在2017年以前的高危漏洞數量相對較少。

C++ 和 C 遭受的 CWE 漏洞類型一致。由於這兩種語言在 web 應用中的流行度不高,因此它們也較少遭受其它語言飽受的 CWE 漏洞折磨。

Ruby 的漏洞總量墊底。十年來,Ruby 中所含的開源漏洞像過山車一樣高低起伏不定,不過2015年以來它的流行度也一再放緩。

C 最壞 Python 最好?

但是,C語言真的是最糟糕的語言、Python 是最佳語言麼?WhiteSource 公司認爲做出這樣的結論太過武斷:“雖然長期以來,我使用的語言要比你的安全這種說法頗有戲謔成分,但找到答案對你創建最具創新性或最安全的軟件很可能並沒有什麼用。”

正確的做法是,應當“保持對已知開源漏洞的警覺,並瞭解你和團隊所使用語言的優劣勢。”

一句話結尾:安全無關語言,使用方式才至關重要。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章