用哪種語言寫的應用漏洞最嚴重?六大主流語言代碼漏洞分析報告出爐

2021-01-07 騰訊網

靜態代碼分析安全公司 Veracode 近日發布了一份應用程式分析報告,結果發現比起 JavaScript 和 Python 等語言,C++ 和 PHP 的安全漏洞要嚴重得多。

如果你是一位靠 .NET、C++、Java、JavaScript、PHP 或 Python 吃飯的開發者,那要注意了:一項新研究揭示了這些程式語言的主要安全漏洞。

靜態代碼分析安全公司 Veracode 近期發布了這些語言的漏洞類型數據,這是該公司掃描了 13 萬應用程式的安全問題後得到的報告。

該公司調查了用 .NET、C++、Java、JavaScript、PHP 或 Python 編寫的應用程式的漏洞趨勢。這些數據整合在 Veracode 的《軟體安全狀態第 11 卷(State of Software Security Volume 11)》報告中:

https://www.veracode.com/sites/default/files/pdf/resources/ipapers/security-flaw-heatmap/index.html。

Veracode掃描13 萬個應用程式後得到的漏洞類型數據

對於最常用的前端開發語言 JavaScript,Veracode 發現 31.5% 的應用至少有一個跨站腳本(XSS)漏洞,而用 PHP 寫的應用中有 74.6% 至少有一個 XSS 漏洞。此外,71% 的 PHP 應用存在加密問題。

對於用 .NET 寫的應用,最主要的問題是信息洩露——62.8% 的 .NET 應用存在該問題。C++ 應用最大的問題是錯誤處理,佔到了 66.5%。

至於 Java 應用,首要問題是 CRLF 注入(回車或換行注入),佔受調查應用的 64.4%。Python 應用中最嚴重的安全問題與加密相關,出現在 35% 的受調查應用中。

每種語言的漏洞嚴重性也存在很大差別。Veracode 發現用 C++ 寫的應用中有 59% 存在非常嚴重的漏洞;而對於 PHP,這一數字為 52%。但是,用 JavaScript 寫的應用僅有 9.6% 有非常嚴重的漏洞,Java 應用的數據為 24%。

Veracode 首席研究官 Chris Eng 解釋了不同語言漏洞趨勢不同的原因,以及如何修復它們以避免嚴重損失。

從整體數據上看,我們這個行業過去十年來沒能消除任何一種漏洞類別。

Eng 說,

沒有任何問題完全消失。很多事情都在波動,但看看平均情況,你會發現相比於其它指標,這些數據更能反映語言選擇和語言流行程度的變化。我們看到 C++ 常見的緩存溢出問題有下降的趨勢,但這並不是因為開發者處理這些問題的能力更強了,而是因為使用 C++ 進行開發的人變少了。

另一方面,影響 JavaScript 和 Python 的問題則有所增長,原因是這兩種語言現在非常流行。在企業層面上,Java 和 .NET 依然備受歡迎。

PHP 依然是網頁應用開發最常用的腳本語言之一,但 Eng 指出 PHP 漏洞數量更高的原因是該語言提供了大量不安全的原語以及大量錯誤開發的方式。

有些語言會盡力避免開發者考慮不周而把事情搞砸,.NET 就是其中最早的語言之一。

Eng 解釋說,

相比於使用 PHP,使用 .NET 時,你會發現大量 API 都有更安全的默認設置,使得出現跨站腳本錯誤或 SQL 注入錯誤會困難得多。在 PHP 中,這些錯誤幾乎是默認的——除非你剛好在使用一種能為你提供更多保護的更現代框架。使用 PHP 出錯的情況實在太多了。

Veracode 在其分析的 JavaScript 應用中發現的漏洞遠遠更少,但即使 JavaScript 有更安全的默認設置,龐大的 npm 生態系統中的 JavaScript 和 node.js 開源軟體庫是潛在的薄弱環節。

即使你能修復自己寫的代碼中的所有漏洞,你使用的第三方軟體庫仍會帶來諸多變數。打補丁實際上並不如你期望的那麼好。現在的趨勢是開發者在需要時才會去下載這些軟體庫的最新版本,然後他們就再也不更新了,除非這個軟體庫又增加了什麼新功能。

工程開發和產品團隊應該如何降低為關鍵應用程式打補丁的麻煩和成本?Eng 的建議是保持更新並且清晰地跟蹤構建應用的技術和安全成本隨時間的變化情況。在某個時間,該應用將需要得到修復或打補丁,其中包括語言更新和關鍵軟體庫的補丁。

如果我現在在使用 4.5 版,而 4.6 版已經出來了,我可以使用該補丁,同時幾乎不會產生功能方面的影響。開源軟體庫不會在小版本更新中對軟體庫進行重大修改。但如果你現在使用的是 2.0 版,那麼你就必須得更新到 4.6 版,這個過程會很痛苦。

對於使用龐大 npm 生態系統的 JavaScript 來說,更新軟體庫這個問題可能會更嚴重一點,但 Java 和 Python 都有各自的大型生態系統:Maven 和 PyPI。

Eng 表示 JavaScript 應用平均有大約 400 個依賴關係。如果來看第 90 百分位數的 JavaScript 應用程式,它們的依賴關係數量可達 1000 或 2000 個。

應用安全公司 Snyk 曾解釋說影響 JavaScript、Ruby、Java、PHP 和 Python 的大多數安全漏洞都源自項目中加載的主要組件之間的間接依賴關係。

還有一點,某些 JavaScript 軟體庫非常受歡迎,多達 80%-90% 的 JavaScript 應用在使用它們。

Eng 說:

只要這些軟體包中某一個包裡有一個漏洞,你就繼承了該風險。而且這不只是安全風險。

他指的是 JavaScript 軟體庫 left-pad 曾出現過的情況:2016 年的一場爭吵之後,一個開發者將該軟體庫移出了 npm。

它從 GitHub 上消失了,然後突然之間,三分之二的網際網路崩潰了,因為它們全都依賴這個幾行代碼的軟體庫來確定一個數是否在左側填充了零。

BOOK

聲明:除發布的文章無法追溯到作者並獲得授權外,我們均會註明作者和文章來源。如涉及版權問題請及時聯繫我們,我們會在第一時間刪改,謝謝!文章來源:安全幫 。

相關焦點

  • 用哪種程式語言寫的應用漏洞最嚴重 Java還是Python
    打開APP 用哪種程式語言寫的應用漏洞最嚴重 Java還是Python 機器之心 發表於 2021-01-06 16:19:26
  • 程式語言安全漏洞:C++、PHP、Java、Python、.Net 和 JavaScript
    程式語言安全漏洞:C++、PHP、Java、Python、.Net 和 JavaScript 靜態代碼分析安全公司 Veracode 最近發布了一份年度軟體安全狀態(SOSS)報告,其中的第 11 卷則揭示了用 .NET、C++、Java、JavaScript、PHP 或 Python
  • 思科修復嚴重等級為最高級10的遠程代碼執行漏洞
    根據此前發布的安全通報,較老版本的思科自適應安全設備軟體,會因為作業系統的安全套接層協議層(SSL)VPN功能漏洞而受到影響。漏洞將會影響啟用VPN功能的ASA設備雷鋒網(公眾號:雷鋒網)了解到,這一漏洞(CVE-2018-0101)將會導致以下思科ASA設備受到影響——不過,只有當「webvpn」功能啟動時,漏洞才會生效。
  • 2019 年開源軟體漏洞增長近 50%,C 語言漏洞佔比最高
    不過報告也指出,遺憾的是,最終只有 84% 的已知開源漏洞出現在 NVD 中。且有關漏洞的信息並沒有集中在一個位置發布,而是分散在數百種資源中。因此,一旦出現索引編制不正確的狀況時,就會使得搜索特定數據變得愈發艱難。而報告的開源漏洞也中有 45% 並未是最初就報告給 NVD 的,許多漏洞是在其他渠道中被報告數月後才在 NVD 中發布。
  • 還在寫Bug?GitHub官方代碼掃描工具上線,免費查找漏洞
    在 GitHub 發布項目之前,你可以用免費的官方代碼掃描程序來檢查 Bug 了。機器之心報導,作者:蛋醬編程很難,難就難在常有 Bug 而不自知。有程式設計師調侃:「我不是在寫代碼,我是在寫 Bug。」從現在開始,你在 GitHub 上傳的代碼可以免費使用 Bug 篩查程序了。早發現,早報告,早診斷…… 以及早修復。去年 9 月,GitHub 收購代碼分析平臺企業 Semmle,宣布將在 GitHub 的開發者工作流程中引入代碼安全性流程。
  • Java安全之反序列化漏洞分析
    那麼對於完全面向對象的Java語言來說為什麼要有序列化機制?實質上,序列化機制並不只局限於Java語言,序列化的本質是內存對象到數據流的一種轉換,我們知道內存中的東西不具備持久性,但有些場景卻需要將對象持久化保存或傳輸。
  • 西北大學研發FUNDED系統 極大提升原始碼漏洞檢準率
    FUNDED系統利用圖神經網絡檢測原始碼漏洞示意圖。西北大學供圖什麼是原始碼漏洞檢測?據介紹,開發網站、編寫程序,或引用網際網路上的代碼,確定代碼是否含有漏洞,這個過程就是原始碼漏洞檢測,是軟體安全保障的基礎。
  • 想用自主開發的程式語言改朝換代!
    76 年迭代與更新,程式語言界,誰主沉浮? 在六百多種程式語言中,對於開發者而言,其主觀印象中或只有幾種主流的程式語言,如 Java、C、C++、C#、新貴 Python 等,而之所以它們能夠成為主流,軟體開發生態必是其中不可或缺的一個重要部分。
  • 純乾貨:微軟漏洞中國第一人黃正——如何用正確姿勢挖掘瀏覽器漏洞...
    大家都知道是用來看網頁用的,再往底層一點呢,它是把html代碼按照一定的標準繪製成在屏幕上肉眼可見的圖像用的。比如,像這段html代碼,瀏覽器會按照一定的標準去把他變成一張肉眼可見的網頁:今天給大家分享一個最簡單的Fuzz框架,一行代碼,啟動調試器打開樣本生成器網頁:windbg -c 「!
  • 哪種程式語言好?大神為你分析 Go、Java、C、C++ 等主流程式語言
    而此時 Java 提供了多線程、網絡和應用開發方面的標準庫和基於 JVM 技術的跨平臺支持,把 Java 推向主流程式語言,也就是 Java 前十年成功的關鍵所在。7、動態語法為啥要把動態語法作為一個關鍵項呢,相信用過 Python 等的,不考慮其它運行效率因素,無疑會對其簡潔耳目一新,尤其是在對象初始化和構造方面,而這是程序代碼中可能佔據 10% 甚至 50% 代碼的地方,尤其對於處理數據、配置和分析的系統。
  • 路由器漏洞挖掘之 DIR-805L 越權文件讀取漏洞分析
    接下來的文章都會實戰復現一些關於路由器的 web /二進位漏洞,可能會寫的比較細,希望能給大家帶來啟發。
  • CVE-2020-2555:WebLogic RCE漏洞分析
    轉載:nosec 作者:iso600010x00 前言不安全的反序列化漏洞已經逐漸成為攻擊者/研究人員在面對Java Web應用時尋找的目標。這些漏洞通常能得到可靠的遠程代碼執行(RCE)效果,並且修復起來比較困難。
  • VeraCrypt 審計報告公布,發現多個高危漏洞
    正是因為用戶數量龐大(本身也存在一些漏洞),OSTIF(一個開源技術改進基金)才同意獨立審計VeraCrypt,並於今年8月聘請了QuarksLab研究人員主導這次審計。發現數個高危漏洞這次安全審計的原始碼來自VeraCrypt 1.18版本和VeraCrypt DCS EFI Bootloader 1.18版本,重點聚焦在上次審查後,這款應用引入的新特性上。
  • 深入解讀:Windows HTTP.sys遠程代碼執行漏洞跟蹤進展
    下面對此漏洞的原理進行分析,以便大家更好的理解和防禦這一高危安全漏洞。4、代碼執行從上述分析可以看出,觸發此漏洞可越界寫數據而造成內存破壞,理論上存在遠程執行代碼的可能性。但是越界所寫數據的長度下限由ContentLength決定,通常會是一個較大的值而立即使系統崩潰。即使目標伺服器上存在一些大的文件,可以用來越界寫少量數據,所寫數據內容與被覆蓋目標也很難控制。因此,在實際環境中想要穩定的利用此漏洞來執行代碼是非常困難的。
  • 文庫 | 反序列化漏洞匯總
    因此,幾乎不可能預料到惡意數據的流動並堵塞(修復)每個潛在的漏洞。簡而言之,反序列化不受信任的輸入是不安全的。漏洞影響不安全的反序列化的影響可能非常嚴重,因為它為大規模增加攻擊面提供了切入點。它允許攻擊者以有害的方式重用現有的應用程式代碼,從而導致許多其他漏洞,通常是遠程執行代碼(RCE)。
  • 仍有不少谷歌商城應用沒有跟進修復Play Core Library漏洞
    在宣傳 Play Store 的時候,谷歌表示它不僅僅只是一個 Android 應用商城,更是你可以信賴且安全的應用來源。不過這並不代表著就百分百安全了,近日谷歌對存在於 Google Play Core Library 中的安全漏洞進行了修復,不過由於應用開發者尚未完全跟進,意味著依然有不少應用和它們的用戶存在風險。顧名思義,Google Play Core Library 是谷歌移動服務最基礎的組件之一。
  • 三款商業化原始碼審計工具對比
    Fortify SCA是一個靜態的、白盒的軟體原始碼安全測試工具,它通過內置的五大主要分析引擎:數據流、語義、結構、控制流、配置流等對應用軟體的原始碼進行靜態的分析,分析的過程中與它特有的軟體安全漏洞規則集進行全面地匹配
  • Android DropBox SDK漏洞(CVE-2014-8889)分析
    從安全的角度來看,SDK則提供了極具吸引力的攻擊面,因為其一旦出現可供利用的漏洞,可以影響大量使用該SDK的app。本文介紹了Android Dropbox SDK 1.5.4-1.6.1版本中存在的一個嚴重漏洞(CVE-2014-8889),該漏洞使基於Dropbox SDK的app暴露於嚴重的本地和遠程攻擊。
  • 蘋果手機出現新嚴重漏洞:帳戶被接管
    1、據外媒報導,研究人員 Bhavuk Jain 在四月份發現了一個嚴重的「使用 Apple 登錄」漏洞,該漏洞可能導致某些用戶帳戶被接管。值得一提的是,這個 Bug 特定於使用「通過蘋果登錄」功能且未實施其它安全措施的第三方應用。
  • 谷歌工程師:Chrome 70% 的安全漏洞是內存安全問題,Rust 又成備選...
    並發現,在這些被標記為「高」或「嚴重」等級的所有安全漏洞中,大約 70% 是內存管理和安全問題。這其中又有一半是 use-after-free 漏洞。這種安全問題是由對內存指針(地址)的錯誤管理引起的,為攻擊者打開了攻擊 Chrome 內部組件的大門。