無論是前端還是后端,只要有代碼存在谷丸,就會出現(xiàn)漏洞堡掏。
最近,有兩幅關(guān)于 Vue 安全問題的截圖在業(yè)界廣為傳播刨疼,截圖內(nèi)容表明目前有多家公司統(tǒng)計軟件開發(fā)過程中使用 Vue.js 和 SonarQube 的情況泉唁,疑似有黑客利用 Vue.js 和 SonarQube 中的漏洞對我國境內(nèi)機(jī)關(guān)和重要企事業(yè)單位實施網(wǎng)絡(luò)攻擊探測。
Vue 是一款流行的 JavaScript 前端框架揩慕,于 2014 年作為獨立開源開發(fā)者尤雨溪的個人項目發(fā)布游两。時至今日,Vue 已成為 GitHub 上最受歡迎的開源項目之一漩绵。同時,在 JavaScript 框架中肛炮,Vue 所獲得的星標(biāo)數(shù)已超過 React止吐,并高于 Backbone.js宝踪、Angular 2、jQuery 等項目碍扔。
前端框架會不會有安全漏洞瘩燥?
雖然截圖來源不明,但由于 Vue 使用者眾多不同,于是就有很多開發(fā)者將截圖發(fā)給了尤雨溪厉膀。
1 月 25 日,尤雨溪在知乎上做了公開回應(yīng):https://zhuanlan.zhihu.com/p/461720764
他表示 Vue 對于安全問題是很看重的二拐,近期他們也沒有收到漏洞報告服鹅,公開的 CVE 數(shù)據(jù)庫中目前也沒有任何針對 Vue.js 本身的漏洞。Vue 作為開源項目百新,又是以 JavaScript 源碼形式發(fā)布的前端項目企软,每一行代碼都公開接受任何安全審計。Vue 2 發(fā)布至今已經(jīng) 5 年多饭望,在全球業(yè)界被廣泛使用仗哨,期間從未有被發(fā)現(xiàn)過真正意義上的安全漏洞。
同時他解釋道铅辞,“黑客滲透可能會利用被攻擊者所使用的前端框架中的漏洞厌漂,但黑客不會用前端框架作為其滲透的工具,因為前端框架根本沒有這個功能斟珊∥”
前端作為在用戶瀏覽器里執(zhí)行的代碼,漏洞類型通常都是 XSS (Cross-Site Scripting)倍宾,XSS 中文叫跨站腳本攻擊雏节,指的是通過上傳惡意信息,讓信息中包含的腳本被意外地渲染高职,從而能夠在其他用戶登陸時執(zhí)行钩乍,竊取其他用戶的數(shù)據(jù)。XSS 可以以多種形式出現(xiàn)怔锌,在純粹服務(wù)端渲染的頁面上也可能發(fā)生寥粹,不一定涉及前端框架。
我們過去私下也接到過一些所謂的 “漏洞” 報告埃元,但這些報告幾乎全部是在假設(shè)了將用戶上傳的任意 HTML 內(nèi)容當(dāng)作 Vue 模版或是 v-html 數(shù)據(jù)使用的前提下 —— 這種場景跟直接渲染用戶上傳的任意 HTML 沒有本質(zhì)區(qū)別涝涤,不管用的是不是 Vue 都會導(dǎo)致 XSS,我們文檔里的安全章節(jié)也對這種做法有特別警告岛杀。前端框架的職責(zé)是根據(jù)開發(fā)者提供的模版和數(shù)據(jù)渲染界面阔拳,如果開發(fā)者強(qiáng)行要求框架渲染不可信的模版然后指責(zé)框架不安全,這就如同用 innerHTML 渲染不可信的內(nèi)容类嗤,然后指責(zé)瀏覽器有安全漏洞一樣糊肠。
最后辨宠,他特別強(qiáng)調(diào):“只要遵循普適的前端安全常識,Vue 本身并不存在任何安全性問題货裹∴托危”
對于尤雨溪的回復(fù),大部分網(wǎng)友都表示支持:“前端框架還能有安全漏洞弧圆?”赋兵、“甩鍋給 Vue 實在是有些牽強(qiáng)”。
但作為一款應(yīng)用廣泛的開源軟件搔预,使用者有所擔(dān)憂也是正常的霹期,特別是在 Log4j 漏洞事件之后。
Apache Log4j 是 Java 開發(fā)領(lǐng)域應(yīng)用非常廣泛的一款開源日志框架斯撮。根據(jù)谷歌安全團(tuán)隊的統(tǒng)計经伙,截至 2021 年 12 月 16 日,來自 Maven Central 的 35,863 個可用 Java 組件依賴于 Log4j勿锅。這意味著 Maven Central 上超過 8% 的軟件包里至少有一個版本會受此漏洞影響帕膜。
因此,Log4j 漏洞從去年剛剛爆發(fā)開始溢十,就因影響范圍大垮刹、危險程度高吸引了安全圈所有人的目光,甚至工信部也專門針對 Log4j 漏洞給出了風(fēng)險提示张弛。比利時國防部也曾在媒體上確認(rèn)在其網(wǎng)絡(luò)上發(fā)生了涉及 Log4j 漏洞的網(wǎng)絡(luò)攻擊荒典。
1 月 13 日,美國白宮還針對 Log4j 漏洞專門召開開源軟件安全峰會吞鸭,聚集了谷歌寺董、蘋果、亞馬遜刻剥、微軟和其他主要科技組織遮咖,包括 Apache 軟件基金會(Log4j 庫的所有者和維護(hù)者)、 Oracle(Log4j 庫運行所在的 Java 軟件平臺的所有者)造虏、GitHub 和 Linux 開源基金會等等御吞,共同討論開源軟件的安全性。
開源軟件安全問題不應(yīng)被忽視
當(dāng)今漓藕,開源軟件已經(jīng)成為軟件世界的重要組成部分陶珠,根據(jù) Gartner 統(tǒng)計,99% 的組織在其 IT 系統(tǒng)中使用了開源軟件享钞。Gartner 還表示揍诽,現(xiàn)代軟件大多數(shù)是被“組裝”出來的,不是被“開發(fā)”出來的。那么寝姿,與企業(yè)自主編寫的源代碼相同交排,開源軟件同樣位于軟件供應(yīng)鏈的源頭。從源頭到交付饵筑,每個環(huán)節(jié)都可能會引入供應(yīng)鏈安全風(fēng)險從而遭受攻擊,上游環(huán)節(jié)的安全問題會傳遞到下游環(huán)節(jié)并被放大处坪。
有些人認(rèn)為開源軟件處于“眾目睽睽”之下根资,漏洞問題就不會太嚴(yán)重。但實際上同窘,開源軟件的安全缺陷非常密集玄帕。奇安信《2021 中國軟件供應(yīng)鏈安全分析報告》顯示,2020 年全年想邦,奇安信代碼安全實驗室對 1364 個開源軟件源代碼進(jìn)行了安全缺陷檢測裤纹,代碼總量為 124296804 行,共發(fā)現(xiàn)安全缺陷 1859129 個丧没,其中高危缺陷 117738 個鹰椒,整體缺陷密度為 14.96 個 / 千行,高危缺陷密度為 0.95 個 / 千行呕童。并且漆际,開源軟件之間的關(guān)聯(lián)依賴,導(dǎo)致開源軟件的漏洞管理非常復(fù)雜夺饲。
這也意味著在開源軟件中奸汇,約每 1000 行代碼里面就有一個高危軟件缺陷。
在 InfoQ 之前針對開源安全的采訪中往声,奇安信表示擂找,漏洞實質(zhì)是“被利用的網(wǎng)絡(luò)缺陷”,缺陷是天生的浩销,但并非每個缺陷都會被利用贯涎。逐利、好奇是人的天性撼嗓,發(fā)現(xiàn)缺陷并利用它柬采,漏洞就產(chǎn)生了∏揖“因此粉捻,缺陷是天生的,漏洞是不可避免的斑芜,網(wǎng)絡(luò)攻擊也是必然的肩刃。無論是前端還是后端,只要有代碼存在,就會出現(xiàn)漏洞盈包》心牛”
奇安信代碼安全事業(yè)部總經(jīng)理黃永剛也在之前的采訪中表示:“安全開始左移,大家開始重視源頭上的安全工作呢燥。開源軟件是軟件開發(fā)的原材料崭添,是我們進(jìn)行信息系統(tǒng)開發(fā)和建設(shè)要把住的第一道安全關(guān)口∨寻保”
在軟件開發(fā)上呼渣,無論是技術(shù)方面,還是流程和管理方面寞埠,任何一點疏忽都會導(dǎo)致開源軟件出現(xiàn)安全問題屁置。具體說來,黃永剛總結(jié)了三個方面的原因:
開源軟件開發(fā)者自身的技術(shù)能力和安全開發(fā)知識存在問題仁连,導(dǎo)致開發(fā)的代碼中有安全缺陷蓝角;
大多數(shù)開源項目的開發(fā)缺少 SDL(安全開發(fā)生命周期)的流程和工具。并且饭冬,很多開源項目能使用的資源很有限使鹅,缺乏專業(yè)的代碼安全分析工具,而大部分專業(yè)的代碼安全分析工具都是收費的伍伤,價格昂貴并徘;
攻擊者對開源生態(tài)的攻擊,比如向開源庫中注入惡意代碼扰魂、向包管理器倉庫投放惡意組件等麦乞。
五點安全建議
如何提高開源軟件的安全性?黃永剛認(rèn)為劝评,從技術(shù)上姐直,開源項目需要更系統(tǒng)地引入保障應(yīng)用安全的流程、方法和工具蒋畜,比如基于 SDL 的流程和理念管理開源項目的開發(fā)過程声畏,并對開源項目開發(fā)者進(jìn)行安全開發(fā)知識的普及。其次姻成,使用源代碼靜態(tài)分析插龄、動態(tài)安全測試、交互式安全測試等工具科展,并對開源項目開發(fā)者提交的代碼進(jìn)行全面的安全測試等均牢。
針對軟件開發(fā)者和企業(yè),黃永剛建議從引入控制才睹、資產(chǎn)梳理徘跪、風(fēng)險識別甘邀、漏洞告警和合理修復(fù)五個方面加強(qiáng)開源軟件的安全治理。
引入控制垮庐。企業(yè)應(yīng)規(guī)范開源軟件的引入流程松邪,建立開源軟件安全引入和退出機(jī)制。同時哨查,對開源軟件的引入需要加入安全評估因素逗抑,不僅需要評估項目團(tuán)隊引入的開源軟件是否存在公開的漏洞,是否存在開源法律風(fēng)險寒亥,而且企業(yè)應(yīng)進(jìn)行完整性驗證锋八,開源軟件是否來自官方,避免使用被篡改的開源軟件护盈。
資產(chǎn)梳理。無論是軟件開發(fā)者羞酗,還是企業(yè)腐宋,它們在軟件開發(fā)過程中會引入大量開源軟件。然而檀轨,企業(yè)的安全管理者和開發(fā)管理者常常不清楚自身的信息系統(tǒng)到底引入多少開源軟件胸竞,引入了哪些開源軟件。開源軟件有著層層嵌套的依賴關(guān)系参萄,軟件開發(fā)者或企業(yè)很難通過人工方式進(jìn)行梳理卫枝。因此,建議使用專業(yè)的自動化工具識別軟件系統(tǒng)中含有哪些開源軟件以及開源軟件之間的關(guān)聯(lián)關(guān)系讹挎,形成企業(yè)開源軟件可視化資產(chǎn)清單校赤。
風(fēng)險識別。軟件中使用的開源軟件可能存在已知漏洞筒溃,且這些開源軟件背后調(diào)用或依賴的其他開源軟件也可能存在已知安全漏洞马篮。在軟件開發(fā)過程中,企業(yè)應(yīng)及時發(fā)現(xiàn)存在漏洞的開源軟件版本并進(jìn)行升級怜奖。
漏洞告警浑测。在軟件運行階段,企業(yè)應(yīng)監(jiān)控開源軟件漏洞情報信息歪玲,及時發(fā)現(xiàn)開源軟件的最新漏洞信息迁央,并進(jìn)行應(yīng)急響應(yīng)。
合理修復(fù)滥崩。絕大多數(shù)的開源軟件是通過版本更新實現(xiàn)漏洞修復(fù)的岖圈。對于不能通過升級新版本或打補(bǔ)丁來修復(fù)漏洞,企業(yè)應(yīng)引入專業(yè)的漏洞研究隊伍夭委,定制漏洞修復(fù)方案幅狮。