GitHub來信警告:您的相依套件有安全性漏洞 / Alert from GitHub: One of your dependencies may have a security vulnerability
之前收到GitHub的警告來信,是說我的儲存庫中使用的相依套件「event-stream > 3.3.4」有安全性漏洞。如果不處理這個問題,GitHub的警告訊息會一直出現在儲存庫的上方。解決問題的方法也不難,就是修改相依套件的版本設定,避開有問題的版本即可。
來自GitHub的警告 / Alert Mail from GitHub
在2018年11月27日,我收到了GitHub的來信,標題寫著「One of your dependencies may have a security vulnerability」,也就是說該儲存庫的相依套件中存在著安全性漏洞。
點下「Review vulnerable dependency」(檢視有安全性漏洞的相依套件)按鈕之後,會顯示出問題的套件檔案,以及該安全性漏洞的相關資訊。這個安全性漏洞的細節如下:
GHSA-mh6f-8j2x-4483 More information
critical severity
Vulnerable versions: > 3.3.4
Patched version: No fix
The NPM package
flatmap-stream
is considered malicious. A malicious actor added this package as a dependency to the NPMevent-stream
package in versions3.3.6
and later. Users ofevent-stream
are encouraged to downgrade to the last non-malicious version,3.3.4
.Users of
flatmap-stream
are encouraged to remove the dependency entirely.
也就是說,flatmap-stream是一個惡意軟件,可被用來竊取比特幣,而它已經入侵到NPM套件庫的event-stream套件的3.3.6版本中。要解決這個問題,最好是將event-stream套件降回到安全的3.3.4版本,並將flatmap-stream套件完全移除。
瞭解原因之後,接下來就要想辦法來解決這個安全性漏洞的問題。
修改具有安全性漏洞的檔案 / Fix Vulnerable Dependency
在GitHub的Insights (統計分析)裡面的Alerts (警告)裡面會列出具有安全性漏洞的相關檔案。在這個儲存庫裡面,有兩個檔案存在著event-stream的安全性漏洞:
- www/loading-test/lib/onsenui/css-components-src/package.json
- www/loading-test/lib/onsenui/package.json
你可以發現,這兩個檔案都是OnsenUI底下的檔案,而且都是記錄相依套件的package.json檔。OnsenUI是一種網頁元件框架,可以讓網頁表現得像是行動裝置的APP,容易開發又好用。我在很多儲存庫都有使用OnsenUI,而OnsenUI也用到了具有安全性漏洞的event-stream,所以我就收到了相當多GitHub的警告信。
讓我們來看看其中一個package.json的檔案內容吧。
package.json記錄了OnsenUI框架的套件資訊,也包括了dependencies (相依套件)。裡面可以找到其中一個相依套件及其版本「"event-stream": "^3.1.2",」,版本3.1.2前面的「^」表示可接受大於3.1.2的版本,不過實際上我一開始用的時候event-stream只是3.1.2而已。
讓我們按下檔案右上角的「Edit this file」(編輯此檔案)的按鈕。
將"event-stream"的版本改為「3.3.4」,或是維持原來的「3.1.2」(僅移除「^」)。這樣子就可以解決這個安全性漏洞了。
全部修正之後,GitHub保存庫上方的黃色警告也會隨之消失。好好確認每個檔案都有修改,避開有問題的相依套件吧。
小結 / In closing
老實說,收到GitHub安全性漏洞的通知信件,讓我覺得蠻訝異的。畢竟我用的是免費的GitHub,也沒付什麼錢,可是它竟然還有重大漏洞程式碼的主動掃描服務。難道這也是GitHub被微軟收購之後所帶來的好處嗎?
是說GitHub今天也宣佈免費版使用者也能設定私人儲存庫(private repositories)。雖然免費版只能供3個帳號共同使用,但對於許多小型專案團隊來說,已經是非常受用了。不過站在開放原始碼的立場來看,這是不是變相鼓勵大家封閉原始碼、拒絕分享呢?
讓我們繼續看下去吧。
那麼這次的處理GitHub安全性漏洞通知的教學就到這裡了。你會使用Git之類的保存庫嗎?你偏好使用GitHub、還是GitLab呢?你對開放原始碼有什麼看法呢?歡迎在下面的留言處跟我們分享你的想法。如果你覺得我這篇教學寫的不錯的話,請幫我在AddThis分享工具按讚、將這篇分享到Facebook等社群媒體吧!感謝你的耐心閱讀,讓我們下一篇見。
謝謝分享
回覆刪除昨天上傳一個 node.js 小專案
收到20幾封信,嚇死我了= =
To 口口口,
刪除我超多Node.js專案都收到爆炸多的信
整理都整理不完了@@