近日開源安全公司 WhiteSource 針對程式語言的安全性做了一份報告,這份報告提出了一個新問題 —— “有哪一種程式語言比其他的更安全嗎?”程式語言之爭,是開發者社群一直以來的熱議問題,不過討論的過程往往伴隨著雙方的憤怒及和諧的破損,不了了之。許多開發者喜歡證明他們使用的程式語言占主導地位,這個過程中經常提到的就有安全性。
近日 WhiteSource 就七種熱門程式語言的安全性做了年岸度報告。該報告彙總了多個來源的開源漏洞資訊,如國家漏洞資料庫(NVD)、安全公告、GitHub 問題追蹤器(Issue Tracker)和流行開源專案問題追蹤器。
WhiteSource 根據開源社群過去幾年使用的一些流行語言,確認了七種比較熱門的程式語言:C,Java,JavaScript,Python,Ruby,PHP 和 C ++。在這些程式語言的基礎上,WhiteSource 搜尋了資料庫,檢視了過去十年中每種語言中已知開源安全漏洞的數量、隨時間推移這些安全漏洞發生的變化、以及各語言最常見的 CWE(Common Weakness Enumeration,通用缺陷列表)。
報告顯示了過去10年中不同語言的開源漏洞總數,很明顯居於首位的程式語言是 C 語言,佔到了近一半的比例。
不過這不能說明 C 語言的安全性遠低於其他熱門語言。如此高的佔比有幾個因素可以解釋:一是 C 語言的使用時間在調查語言中是最長的,二是 C 語言一般編寫的程式碼量很大,三是 Open SSL 和 Linux 核心等基礎架構背後的主要語言之一就是 C 語言。這些存在時間、體積和中心性等因素的組合,可以解釋 C 語言為什麼存在這麼多大量已知開源安全漏洞。
報告也顯示了隨著時間推移不同程式語言的開源安全漏洞數量變化。過去的十年中,它們各有自己的高點和低點。但是所有語言都由一個突出的趨勢,就是近兩年所有語言的已知安全漏洞數量都大幅增加。這可以看作是安全漏洞意識的提高及開源的更加普及。隨著開源安全研究投入資源的增加,人們發現的安全問題數量也會變多。
這些漏洞的嚴重程度如何呢?調查人員研究高嚴重性的開源安全漏洞(CVSS v2 得分高於7)時,發現除了 JavaScript 和 PHP,報告中涉及的大多數語言嚴重漏洞的佔比處於下降趨勢。
這可能是安全研究人員使用自動化工具的結果。雖然藉助這些工具,過去幾年大多數語言的中等漏洞數量一直在增加,但這些工具通常不能發現複雜和嚴重的安全問題。
調查人員還研究了每種語言常見的 CWE。這其中,跨站指令碼攻擊(XSS,也被稱為 CWE-79)和輸入驗證(也被稱為 CWE-20)佔據了最常見的位置。另外較為突出的 CWE 有資訊洩漏(CWE-200),路徑遍歷(CWE-22),許可權及訪問控制(CWE-264)、不正當訪問控制(CWE-284)等。
“我的程式語言比你更安全”,類似的話題可以是一種有趣的消磨時間方式。關於哪種程式語言最安全的討論往往也會出現一些有趣的觀點,而找到最終答案反而可能無法幫助你創造兼具創新性和安全性的軟體。
如今,大多數軟體開發都依賴多種程式語言來實現,而不是執著於某一程式語言。掌握已知的開源漏洞、瞭解團隊正在使用的程式語言中的優點和缺點,這些都是確保軟體專案從一開始就具有安全性的好方法。
最安全的程式語言沒有最終贏家。WhiteSource 從研究中得出的最後一個結論是,程式語言的安全性無關於語言本身,而是取決於使用者的使用方式。開發團隊使用了適當的管理方法,減輕整個 SDLC (系統生存週期)的漏洞,這才是保證專案安全的好選擇。
來源:開源中國
更多資訊: