如今基本任何一個 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 來進行掃描了。
完成後就可以查看掃描結果:
總結
Snyk 對於開源軟件的安全監控很有幫助,並且能夠非常簡單的使用,乃至整合到 CI/CD的流程中,是一個非常好的安全工具。但需要留意的是, Snyk 是一個依賴漏洞檢測工具,針對的僅僅是已知的軟件漏洞。它並不是一個防病毒工具,不能檢測任何惡意程式, 更不會檢測項目專案中自己寫的代碼。若要掃描自己的代碼,可以使用類似 SonarQube,Findbug等的工具,有時間的話會另文分享。
有疑问加站长微信联系(非本文作者)