使用 Snyk 檢測安全漏洞
1. 概述
在快速變化的軟件開發領域,確保強大的安全性是一項重要但往往很棘手的任務。由於現代應用程序嚴重依賴開源庫和依賴項,因此這些組件中潛伏的漏洞可能會構成嚴重威脅。
這就是Snyk發揮作用的地方,它為開發人員提供了自動檢測潛在易受攻擊的代碼或依賴項的工具。在本文中,我們將探討其功能以及如何在 Java 項目上下文中使用它們。
2.斯尼克是什麼?
Snyk 是一個雲原生安全平台,專注於識別和緩解開源軟件組件和容器中的漏洞。在我們深入使用特定功能之前,讓我們先看看主要用法,這將是本文的重點。
2.1. Snyk 開源
Snyk Open Source 通過分析我們的應用程序依賴的庫和包來掃描我們項目的依賴項。它根據已知漏洞的綜合數據庫檢查這些依賴性。 Snyk Open Source 不僅指出了漏洞,還提供了可行的修復指南。它提出了解決漏洞的可能解決方案,例如昇級到安全版本或應用補丁。
2.2.斯尼克代碼
Snyk Code 採用靜態代碼分析技術來審查源代碼並識別安全漏洞和其他問題。它在不執行代碼的情況下審查代碼,通過分析代碼庫中的結構、邏輯和模式來發現潛在問題。這包括源自已知安全數據庫的漏洞,以及代碼質量問題,例如代碼異味、潛在邏輯錯誤和錯誤配置。
2.3.一體化
我們可以通過按需使用 Snyk CLI 或將其連接到版本控制系統(例如 Git)將 Snyk 集成到項目中。這種集成允許 Snyk 訪問我們的代碼庫,並在代碼發生更改時執行自動掃描。或者,我們可以使用構建系統的插件(例如 Gradle)來執行掃描,作為構建過程的一部分。
3. 設置
在我們深入研究使項目更加安全之前,我們需要執行幾個步驟來設置 Snyk CLI 及其與 Snyk 服務的連接。
3.1.創建賬戶
Snyk 是一個雲原生解決方案。我們需要一個帳戶才能使用它。在撰寫本文時,一個足以用於測試和小型項目的基本 Snyk 帳戶是免費的。
3.2.安裝 CLI
Snyk 提供了命令行界面 (CLI),允許我們從終端與 Snyk 服務進行交互。一旦我們安裝了 CLI 應用程序,它只會完成連接到 Snyk 服務器的工作,所有艱苦的工作都將在雲端進行。
我們可以使用 Node Package Manager (npm) 全局安裝 CLI:
$ npm install -g snyk
我們還可以使用Snyk手冊中描述的其他安裝方法。
3.3.正在驗證
最後,我們需要進行身份驗證,以便 CLI 知道它應該連接到哪個帳戶:
$ snyk auth
4. 使用CLI測試漏洞
Snyk CLI是Snyk提供的一個工具,可以讓我們輕鬆連接到Snyk服務並從命令行執行掃描。讓我們看一下 Snyk 的兩個基本功能:依賴掃描和代碼掃描。
4.1.依賴關係掃描
要使用 Snyk CLI 對我們的項目運行依賴項掃描,我們只需鍵入:
$ snyk test
該命令將分析項目的依賴關係並識別任何問題。 Snyk 將提供詳細報告,顯示漏洞、其嚴重程度以及受影響的軟件包:
[...]
Package manager: gradle
Target file: build.gradle
Project name: snyktest
Open source: no
Project path: [...]
Licenses: enabled
✔ Tested 7 dependencies for known issues, no vulnerable paths found.
4.2.掃碼
我們還可以在 Snyk 頁面的設置中啟用靜態代碼分析,並在我們自己的代碼中運行漏洞掃描:
$ snyk code test
[...]
✔ Test completed
Organization: [...]
Test type: Static code analysis
Project path: [...]
Summary:
✔ Awesome! No issues were found.
5. 使用 Gradle 集成
我們可以使用 Gradle 插件並在構建過程中自動運行 Snyk 測試,而不是使用 Snyk CLI。首先,我們需要將插件添加到build.gradle
文件中:
plugins {
id "io.snyk.gradle.plugin.snykplugin" version "0.5"
}
然後,我們可以選擇提供一些配置:
snyk {
arguments = '--all-sub-projects'
severity = 'low'
api = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
}
然而,在大多數情況下,默認值應該足夠好了。此外,如果我們之前使用 CLI 進行了身份驗證,則不需要提供 API 密鑰。最後,要運行測試,我們只需鍵入:
$ ./gradlew snyk-test
我們還可以配置 Gradle 在每次構建時運行 Snyk 測試:
tasks.named('build') {
dependsOn tasks.named('snyk-test')
}
請注意,Snyk 的免費版本的測試數量有限,我們每月可以運行的測試數量有限,因此每次構建都運行測試可能會造成浪費。
六,結論
Snyk Code 對於開發人員和組織來說是一個有價值的工具,旨在通過在開發生命週期的早期識別漏洞和代碼質量問題來提高應用程序安全性。在本文中,我們學習瞭如何使用 Snyk 開源和代碼功能來掃描我們的項目是否存在可能的安全問題。此外,我們還研究瞭如何將 Snyk 集成到 Gradle 構建系統中。