Vue涉及國家安全漏洞?尤雨溪迴應:前端框架沒有滲透功能

語言: CN / TW / HK

作者 | Tina、萬佳

無論是前端還是後端,只要有程式碼存在,就會出現漏洞。  

最近,有兩幅關於 Vue 安全問題的截圖在業界廣為傳播,截圖內容表明目前有多家公司統計軟體開發過程中使用 Vue.js 和 SonarQube 的情況,疑似有黑客利用 Vue.js 和 SonarQube 中的漏洞對我國境內機關和重要企事業單位實施網路攻擊探測。

Vue 是一款流行的 JavaScript 前端框架,於 2014 年作為獨立開源開發者尤雨溪的個人專案釋出。時至今日,Vue 已成為 GitHub 上最受歡迎的開源專案之一。同時,在 JavaScript 框架中,Vue 所獲得的星標數已超過 React,並高於 Backbone.js、Angular 2、jQuery 等專案。

前端框架會不會有安全漏洞?

雖然截圖來源不明,但由於 Vue 使用者眾多,於是就有很多開發者將截圖發給了尤雨溪。

1 月 25 日,尤雨溪在知乎上做了公開回應: https://zhuanlan.zhihu.com/p/461720764

他表示 Vue 對於安全問題是很看重的,近期他們也沒有收到漏洞報告,公開的 CVE 資料庫中目前也沒有任何針對 Vue.js 本身的漏洞。Vue 作為開源專案,又是以 JavaScript 原始碼形式釋出的前端專案,每一行程式碼都公開接受任何安全審計。Vue 2 釋出至今已經 5 年多,在全球業界被廣泛使用,期間從未有被發現過真正意義上的安全漏洞。

同時他解釋道,“黑客滲透可能會利用被攻擊者所使用的前端框架中的漏洞,但黑客不會用前端框架作為其滲透的工具,因為前端框架根本沒有這個功能。”

前端作為在使用者瀏覽器裡執行的程式碼,漏洞型別通常都是 XSS (Cross-Site Scripting),XSS 中文叫跨站指令碼攻擊,指的是通過上傳惡意資訊,讓資訊中包含的指令碼被意外地渲染,從而能夠在其他使用者登陸時執行,竊取其他使用者的資料。XSS 可以以多種形式出現,在純粹服務端渲染的頁面上也可能發生,不一定涉及前端框架。

我們過去私下也接到過一些所謂的 “漏洞” 報告,但這些報告幾乎全部是在假設了將使用者上傳的任意 HTML 內容當作 Vue 模版或是 v-html 資料使用的前提下 —— 這種場景跟直接渲染使用者上傳的任意 HTML 沒有本質區別,不管用的是不是 Vue 都會導致 XSS,我們文件裡的安全章節也對這種做法有特別警告。前端框架的職責是根據開發者提供的模版和資料渲染介面,如果開發者強行要求框架渲染不可信的模版然後指責框架不安全,這就如同用 innerHTML 渲染不可信的內容,然後指責瀏覽器有安全漏洞一樣。

最後,他特別強調:“只要遵循普適的前端安全常識,Vue 本身並不存在任何安全性問題。”

對於尤雨溪的回覆,大部分網友都表示支援:“前端框架還能有安全漏洞?”、“甩鍋給 Vue 實在是有些牽強”。

但作為一款應用廣泛的開源軟體,使用者有所擔憂也是正常的,特別是在 Log4j 漏洞事件之後。

Apache Log4j 是 Java 開發領域應用非常廣泛的一款開源日誌框架。根據谷歌安全團隊的統計,截至 2021 年 12 月 16 日,來自 Maven Central 的 35,863 個可用 Java 元件依賴於 Log4j。這意味著 Maven Central 上超過 8% 的軟體包裡至少有一個版本會受此漏洞影響。

因此,Log4j 漏洞從去年剛剛爆發開始,就因影響範圍大、危險程度高吸引了安全圈所有人的目光,甚至工信部也專門針對 Log4j 漏洞給出了風險提示。比利時國防部也曾在媒體上確認在其網路上發生了涉及 Log4j 漏洞的網路攻擊。

1 月 13 日,美國白宮還針對 Log4j 漏洞專門召開開源軟體安全峰會,聚集了谷歌、蘋果、亞馬遜、微軟和其他主要科技組織,包括 Apache 軟體基金會(Log4j 庫的所有者和維護者)、 Oracle(Log4j 庫執行所在的 Java 軟體平臺的所有者)、GitHub 和 Linux 開源基金會等等,共同討論開源軟體的安全性。

開源軟體安全問題不應被忽視

當今,開源軟體已經成為軟體世界的重要組成部分,根據 Gartner 統計,99% 的組織在其 IT 系統中使用了開源軟體。Gartner 還表示,現代軟體大多數是被“組裝”出來的,不是被“開發”出來的。那麼,與企業自主編寫的原始碼相同,開源軟體同樣位於軟體供應鏈的源頭。從源頭到交付,每個環節都可能會引入供應鏈安全風險從而遭受攻擊,上游環節的安全問題會傳遞到下游環節並被放大。

有些人認為開源軟體處於“眾目睽睽”之下,漏洞問題就不會太嚴重。但實際上,開源軟體的安全缺陷非常密集。奇安信《2021 中國軟體供應鏈安全分析報告》顯示,2020 年全年,奇安信程式碼安全實驗室對 1364 個開源軟體原始碼進行了安全缺陷檢測,程式碼總量為 124296804 行,共發現安全缺陷 1859129 個,其中高危缺陷 117738 個,整體缺陷密度為 14.96 個 / 千行,高危缺陷密度為 0.95 個 / 千行。並且,開源軟體之間的關聯依賴,導致開源軟體的漏洞管理非常複雜。

這也意味著在開源軟體中,約每 1000 行程式碼裡面就有一個高危軟體缺陷。

在 InfoQ 之前針對開源安全的採訪中,奇安信表示,漏洞實質是“被利用的網路缺陷”,缺陷是天生的,但並非每個缺陷都會被利用。逐利、好奇是人的天性,發現缺陷並利用它,漏洞就產生了。“因此,缺陷是天生的,漏洞是不可避免的,網路攻擊也是必然的。無論是前端還是後端,只要有程式碼存在,就會出現漏洞。”

奇安信程式碼安全事業部總經理黃永剛也在之前的採訪中表示:“安全開始左移,大家開始重視源頭上的安全工作。開源軟體是軟體開發的原材料,是我們進行資訊系統開發和建設要把住的第一道安全關口。”

在軟體開發上,無論是技術方面,還是流程和管理方面,任何一點疏忽都會導致開源軟體出現安全問題。具體說來,黃永剛總結了三個方面的原因:

  1. 開源軟體開發者自身的技術能力和安全開發知識存在問題,導致開發的程式碼中有安全缺陷;

  2. 大多數開源專案的開發缺少 SDL(安全開發生命週期)的流程和工具。並且,很多開源專案能使用的資源很有限,缺乏專業的程式碼安全分析工具,而大部分專業的程式碼安全分析工具都是收費的,價格昂貴;

  3. 攻擊者對開源生態的攻擊,比如向開源庫中注入惡意程式碼、向包管理器倉庫投放惡意元件等。

五點安全建議

如何提高開源軟體的安全性?黃永剛認為,從技術上,開源專案需要更系統地引入保障應用安全的流程、方法和工具,比如基於 SDL 的流程和理念管理開源專案的開發過程,並對開源專案開發者進行安全開發知識的普及。其次,使用原始碼靜態分析、動態安全測試、互動式安全測試等工具,並對開源專案開發者提交的程式碼進行全面的安全測試等。

針對軟體開發者和企業,黃永剛建議從引入控制、資產梳理、風險識別、漏洞告警和合理修復五個方面加強開源軟體的安全治理。

  1. 引入控制。企業應規範開源軟體的引入流程,建立開源軟體安全引入和退出機制。同時,對開源軟體的引入需要加入安全評估因素,不僅需要評估專案團隊引入的開源軟體是否存在公開的漏洞,是否存在開源法律風險,而且企業應進行完整性驗證,開源軟體是否來自官方,避免使用被篡改的開源軟體。

  2. 資產梳理。無論是軟體開發者,還是企業,它們在軟體開發過程中會引入大量開源軟體。然而,企業的安全管理者和開發管理者常常不清楚自身的資訊系統到底引入多少開源軟體,引入了哪些開源軟體。開源軟體有著層層巢狀的依賴關係,軟體開發者或企業很難通過人工方式進行梳理。因此,建議使用專業的自動化工具識別軟體系統中含有哪些開源軟體以及開源軟體之間的關聯關係,形成企業開源軟體視覺化資產清單。

  3. 風險識別。軟體中使用的開源軟體可能存在已知漏洞,且這些開源軟體背後呼叫或依賴的其他開源軟體也可能存在已知安全漏洞。在軟體開發過程中,企業應及時發現存在漏洞的開源軟體版本並進行升級。

  4. 漏洞告警。在軟體執行階段,企業應監控開源軟體漏洞情報資訊,及時發現開源軟體的最新漏洞資訊,並進行應急響應。

  5. 合理修復。絕大多數的開源軟體是通過版本更新實現漏洞修復的。對於不能通過升級新版本或打補丁來修復漏洞,企業應引入專業的漏洞研究隊伍,定製漏洞修復方案。

延伸閱讀:

《每 1000 行程式碼有 14 個安全缺陷,開源軟體的安全令人堪憂》

(https://www.infoq.cn/article/7LxAlkslCBOgtdl8qITl)

《超 8 成專案存在高危開源漏洞, “2021 中國軟體供應鏈安全分析報告”釋出》

今日好文推薦

GitHub 上只賣 5 美元的指令碼,卻給我帶來了一年數十萬元報酬

增加了一行程式碼,讓我們提高了 3000% 的效能

2021 年人均年終獎 2.3 萬元;位元組跳動日均進賬 10 億;Flink 聯合創始人離職;Boss 直聘強制全員春節原地過年 | Q 資訊

雲技術的新變革:阿里雲 13 年後重構全部核心排程系統

活動推薦

《中國卓越技術團隊訪談錄》是 InfoQ 打造的重磅內容產品,為了能進一步瞭解讀者的實際需求和喜好,持續為大家生產有價值、具備啟發性的內容,我們發起了本次調查,真誠邀請廣大社群讀者參與問卷。同時,如果你希望 InfoQ 關注並採訪你所在的技術團隊,也可以通過本問卷報名,報名選項在問卷底部。

點選【 閱讀原文 】,即刻參與有獎問卷調查,還有機會獲得精美禮品。

如對本次調研有任何疑問或建議,歡迎聯絡微信 13512772438。

點個在看少個 bug   :point_down: