:::

GitHub來信警告:您的相依套件有安全性漏洞 / Alert from GitHub: One of your dependencies may have a security vulnerability

簡報1

之前收到GitHub的警告來信,是說我的儲存庫中使用的相依套件「event-stream > 3.3.4」有安全性漏洞。如果不處理這個問題,GitHub的警告訊息會一直出現在儲存庫的上方。解決問題的方法也不難,就是修改相依套件的版本設定,避開有問題的版本即可。


來自GitHub的警告 / Alert Mail from GitHub

2018-11-27_123757

在2018年11月27日,我收到了GitHub的來信,標題寫著「One of your dependencies may have a security vulnerability」,也就是說該儲存庫的相依套件中存在著安全性漏洞。

image

點下「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 NPM event-stream package in versions 3.3.6 and later. Users of event-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

image

在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的檔案內容吧。

2019-01-08_214108

package.json記錄了OnsenUI框架的套件資訊,也包括了dependencies (相依套件)。裡面可以找到其中一個相依套件及其版本「"event-stream": "^3.1.2",」,版本3.1.2前面的「^」表示可接受大於3.1.2的版本,不過實際上我一開始用的時候event-stream只是3.1.2而已。

image

讓我們按下檔案右上角的「Edit this file」(編輯此檔案)的按鈕。

image

將"event-stream"的版本改為「3.3.4」,或是維持原來的「3.1.2」(僅移除「^」)。這樣子就可以解決這個安全性漏洞了。

image

全部修正之後,GitHub保存庫上方的黃色警告也會隨之消失。好好確認每個檔案都有修改,避開有問題的相依套件吧。


小結 / In closing

老實說,收到GitHub安全性漏洞的通知信件,讓我覺得蠻訝異的。畢竟我用的是免費的GitHub,也沒付什麼錢,可是它竟然還有重大漏洞程式碼的主動掃描服務。難道這也是GitHub被微軟收購之後所帶來的好處嗎?

image

是說GitHub今天也宣佈免費版使用者也能設定私人儲存庫(private repositories)。雖然免費版只能供3個帳號共同使用,但對於許多小型專案團隊來說,已經是非常受用了。不過站在開放原始碼的立場來看,這是不是變相鼓勵大家封閉原始碼、拒絕分享呢?

讓我們繼續看下去吧。


那麼這次的處理GitHub安全性漏洞通知的教學就到這裡了。你會使用Git之類的保存庫嗎?你偏好使用GitHub、還是GitLab呢?你對開放原始碼有什麼看法呢?歡迎在下面的留言處跟我們分享你的想法。如果你覺得我這篇教學寫的不錯的話,請幫我在AddThis分享工具按讚、將這篇分享到Facebook等社群媒體吧!感謝你的耐心閱讀,讓我們下一篇見。

總共2 則留言, (我要發問)

  1. 謝謝分享
    昨天上傳一個 node.js 小專案
    收到20幾封信,嚇死我了= =

    回覆刪除
    回覆
    1. To 口口口,

      我超多Node.js專案都收到爆炸多的信
      整理都整理不完了@@

      刪除