最近開源安全公司W(wǎng)hiteSource報告了編程語言的安全性,提出了一個新問題——“哪種編程語言最安全?”
編程語言之爭一直是開發(fā)者社區(qū)的一個熱門問題,但討論的過程往往伴隨著雙方的憤怒和和諧的破壞。許多開發(fā)人員喜歡證明他們使用的編程語言占主導地位,這通常是安全的。
近日WhiteSource年度報告了七種流行編程語言的安全性。報告總結(jié)了國家漏洞數(shù)據(jù)庫等多種來源的開源漏洞信息,如國家漏洞數(shù)據(jù)庫(NVD),安全公告,GitHub問題追蹤器(IssueTracker)以及流行開源項目問題跟蹤器。
WhiteSource根據(jù)開源社區(qū)過去幾年使用的一些流行語言,確認了七種流行的編程語言:C,Java,JavaScript,Python,Ruby,PHP和C++。
基于這些編程語言,WhiteSource搜索數(shù)據(jù)庫,查看過去十年每種語言中已知的開源安全漏洞的數(shù)量,隨著時間的推移,這些安全漏洞的變化,以及最常見的語言CWE(CommonWeaknessEnumeration,一般缺陷列表)。
報告顯示,過去10年不同語言的開源漏洞總數(shù)顯然是C語言,占近一半。
但這并不意味著C語言的安全性遠低于其他流行語言。這么高的比例有幾個因素可以解釋:
一是C語言在調(diào)查語言中使用時間最長;
二是C語言一般編寫大量代碼;
三是OpenSSL和LinuxC語言是核心等基礎(chǔ)設(shè)施背后的主要語言之一。
這些因素的結(jié)合,如時間、體積和中心性,可以解釋為什么C語言有這么多已知的開源安全漏洞。
報告還顯示,隨著時間的推移,不同編程語言的開源安全漏洞數(shù)量發(fā)生了變化。
在過去的十年里,他們有自己的高點和低點,但所有的語言都有一個突出的趨勢,即在過去的兩年里,所有已知的語言安全漏洞的數(shù)量都顯著增加。這可以看作是安全漏洞意識的提高和開源的普及。隨著開源安全研究投資資源的增加,人們發(fā)現(xiàn)的安全問題數(shù)量也會增加。
這些漏洞有多嚴重?調(diào)查人員研究了高嚴重性開源安全漏洞(CVSSv當?shù)梅指哂?分時,發(fā)現(xiàn)除了7分,JavaScript和PHP,報告中涉及的嚴重語言漏洞大多處于下降趨勢。
這可能是安全研究人員使用自動化工具的結(jié)果。雖然在這些工具的幫助下,過去幾年大多數(shù)語言的中等漏洞一直在增加,但這些工具通常找不到復雜和嚴重的安全問題。
調(diào)查人員還研究了每種常見語言CWE。其中,跨站腳本攻擊(XSS,也被稱為CWE-與輸入驗證(驗證(又稱輸入驗證(也稱輸入驗證(也稱輸入驗證(也稱輸入驗證)CWE-20)占據(jù)了最常見的位置。另外比較突出的。CWE有信息泄漏(CWE-200),路徑遍歷(CWE-22)權(quán)限和訪問控制(CWE-264),不正當訪問控制(CWE-284)等。
“我的編程語言比你更安全”類似的話題可以是消磨時間的有趣方式。關(guān)于哪種編程語言最安全的討論往往會有一些有趣的觀點,但找到最終的答案可能無法幫助你創(chuàng)建創(chuàng)新和安全的軟件。
如今,大多數(shù)軟件開發(fā)都依賴于各種編程語言,而不是執(zhí)著于某種編程語言。掌握已知的開源漏洞,了解團隊使用的編程語言的優(yōu)缺點,是確保軟件項目從一開始就安全的好方法。
最安全的編程語言沒有最終的贏家。WhiteSource研究的最后一個結(jié)論是,編程語言的安全性與語言本身無關(guān),而是取決于用戶的使用方式。開發(fā)團隊采用了適當?shù)墓芾矸椒▉頊p少整SDLC(系統(tǒng)生存周期)漏洞,是保證工程安全的好選擇。