使用 Snyk 檢查開源軟件依賴中的漏洞

  • FrankFrank
  • /
  • 6 分鐘閱讀
  • /
  • Jul 9, 2020
  • /
  • - views

如今基本任何一個 IT Project 都離不開開源社區中的軟件依賴包( Dependencies ), 在如今越來越注重資訊安全的年代,隨之而來的問題是,誰會能夠保證這些依賴包的安全性?如何監控這些開源軟件包的漏洞?人肉留意最新的漏洞信息,比如關注 CVE 網站之餘,有沒有更加自動化的方法?

答案當然是「有」。

Snyk

Snyk 是一家美國的安全公司,致力於監控開源軟件包中的漏洞。Snyk 以其龐大的漏洞資料庫為基礎(由以色列和倫敦的資安研究專家團隊負責維護該資料庫),持續的監控開源社區中各種軟件包的安全情況,以及給出解決方案。 隨著 Snyk 的不斷發展,它已經可以做到輕鬆掃描,IDE配合,與原碼平台整合 (如 GitHub、BitBucket、GitLab等)、實現 CI/CD 流程。

Snyk 雖然是一款商用漏洞掃描工具,但他對開源的項目免費。私有的項目,也可以用每月 200 次的掃描,對於一般的項目,個人感覺免費的計劃已經夠用。

Snyk 支援的語言

根據官網的文檔,目前 Snyc 支援以下語言:

  • Javascript
  • Java
  • Python
  • Php
  • Ruby
  • Golang
  • Scala
  • Swift & Objectiv-C
  • .NET

對比 npm audit

npm audit 也是一個常用且免費的漏洞掃描工具,snyk 對比 npm audit ,檢測能力上要強很多。可以參考這篇文章,作者有對兩者進行對比。

安裝

Snyk 透過 CLI 方式運行, CLI 的安裝十分簡單, 官網有詳細的介紹。如果是本地使用,可以透過下列步驟快速安裝:

npm install -g snyk

之後需要進行綁定你的 snyk 賬戶,進行授權

snyk auth

在打開的網頁中授權即可。

使用

安裝完成後,便可以使用 snyk 來檢測你的 Project 了。

cd /my/project/
snyk test

IDE 插件

snyk 對於 IDE 有插件 ( Plug-In) 可以使用,以 Intellij IDEA 為例, 可以在 Market Place 中直接搜尋安裝。

裝好後就可以在 IDE 中直接查看檢測結果。

直接掃描 Git 中的項目專案

Snyk 也可以直接接駁 GitLab, Github 等平台,直接進行掃描。因為我自己一般使用 Gitlab 為主,所以以下便以 Gitlab 舉例:

首先登入你的 synk 賬戶 , 然後按照指示選擇代碼平台:

如果是使用 Gitlab ,則要按 + 來選擇:

然後需要你輸入 Gitlab 的 token:

這個 token 可以在你的 Gitlab 中新建:

之後,就可以選擇 Gitlab 中的 Project 來進行掃描了。

完成後就可以查看掃描結果:

另外值得一提的是,在集成了 Git 之後, snyk 會自動對你的專案進行掃描,並且自動進行 patch。如果你查看 Gitlab 的 CI/CD , 會看到 snyk 已經默默的幫你 patch 了一些漏洞。

snyk 自動進行的 patch

總結

Snyk 對於開源軟件的安全監控很有幫助,並且能夠非常簡單的使用,乃至整合到 CI/CD的流程中,是一個非常好的安全工具。但需要留意的是, Snyk 是一個依賴漏洞檢測工具,針對的僅僅是已知的軟件漏洞。它並不是一個防病毒工具,不能檢測任何惡意程式, 更不會檢測項目專案中自己寫的代碼。若要掃描自己的代碼,可以使用類似 SonarQubeFindbug等的工具,有時間的話會另文分享。