在开发和部署 Java 应用时,确保依赖库和项目文件中的安全性至关重要。Grype 是一款强大的开源工具,用于扫描项目文件(如 .jar
包)中的已知漏洞。本篇博客将介绍如何手动安装 Grype 并使用它检测 .jar
包中的安全漏洞。
一、手动安装 Grype
Grype 提供了一个简单的命令行工具来检测软件依赖项中的漏洞,支持包括 .jar
在内的多种文件格式。以下是如何在 Linux 系统上手动安装 Grype 的步骤。
1. 前往 下载 Grype
首先,前往使用 Grype 检查 .jar 包中的漏洞,下载适合你的操作系统的 Grype 版本。
2. 下载适合你的 Linux 版本
在页面中找到最新的发布版本,并下载与系统匹配的二进制文件。对于 Linux 用户,可以选择 grype_0.80.0_linux_amd64.tar.gz
这样的文件。
3. 上传到linux上
如: /www/wwwroot/grype
4. 解压文件
下载完成后,使用 tar
命令解压缩文件:
tar -xzf grype_0.80.0_linux_amd64.tar.gz
5. 将 Grype 移动到系统路径
将解压出来的 grype
二进制文件移动到 /usr/local/bin/
,这样系统会自动识别该命令。
sudo mv grype /usr/local/bin/
6. 检查 Grype 是否安装成功
执行以下命令,检查 Grype 是否已成功安装并可用:
grype version
如果安装成功,终端将显示 Grype 的版本信息,如:
Application: grype
Version: 0.80.0
BuildDate: 2024-01-01
...
二、检测 .jar
包中的漏洞
Grype 安装成功后,就可以开始扫描 .jar
文件中的安全漏洞了。Grype 支持扫描多种文件格式(如 .jar
、.tar
、.tgz
等),并会根据已知漏洞数据库提供详细的安全报告。
1. 使用 Grype 检查 .jar
包中的漏洞
假设我们已经生成了一个 .jar
包并希望检测其中的漏洞,可以使用以下命令:
grype path/to/your/file.jar
例如,如果你的 .jar
文件名为 app.jar
,并且位于当前目录下,可以运行:
grype ./app.jar
Grype 将自动分析 .jar
文件的依赖项,并匹配公开的漏洞数据库(如 NVD、GitHub Advisories)中的信息,生成详细的安全扫描结果。
2. 输出信息
扫描完成后,Grype 会输出漏洞检测报告,包括以下内容:
- 漏洞 ID: 表示漏洞的唯一标识符(例如,CVE-编号)。
- 漏洞严重性: 表示该漏洞的严重性等级(低、中、高、关键)。
- 修复建议: 包含可能的修复方案或版本建议。
- 受影响的组件: 展示受影响的库或依赖项的版本信息。
输出示例如下:
NAME INSTALLED FIXED-IN TYPE VULNERABILITY SEVERITY
Java-WebSocket 1.3.7 1.5.0 java-archive GHSA-gw55-jm4h-x339 High
bcprov-jdk15on 1.65 1.67 java-archive GHSA-73xv-w5gp-frxh High
bcprov-jdk15on 1.65 java-archive GHSA-wjxj-5m7g-mg7q Medium
bcprov-jdk15on 1.65 1.78 java-archive GHSA-v435-xc8x-wvr9 Medium
bcprov-jdk15on 1.65 1.78 java-archive GHSA-m44j-cfrm-g8qc Medium
bcprov-jdk15on 1.65 java-archive GHSA-hr8g-6v94-x4m9 Medium
bcprov-jdk15on 1.65 1.78 java-archive GHSA-8xfc-gm6g-vgpv Medium
bcprov-jdk15on 1.65 1.66 java-archive GHSA-6xx3-rg99-gc3p Medium
classgraph 4.8.83 4.8.112 java-archive GHSA-v2xm-76pq-phcf Medium
commons-compress 1.19 1.21 java-archive GHSA-xqfj-vm6h-2x34 High
commons-compress 1.19 1.21 java-archive GHSA-mc84-pj99-q6hh High
commons-compress 1.19 1.21 java-archive GHSA-crv7-7245-f45f High
commons-compress 1.19 1.21 java-archive GHSA-7hfm-57qf-j43q High
commons-compress 1.19 1.26.0 java-archive GHSA-4g9r-vxhx-9pgx High
commons-fileupload 1.4 1.5 java-archive GHSA-hfrx-6qgj-fp6c High
jackson-databind 2.12.6.1 2.12.7.1 java-archive GHSA-rgv9-q543-rqg4 High
jackson-databind 2.12.6.1 2.12.7.1 java-archive GHSA-jjjh-jjxp-wpff High
jdom 1.1 java-archive GHSA-2363-cqg2-863c High
jettison 1.1 1.5.2 java-archive GHSA-x27m-9w8j-5vcw High
jettison 1.1 1.5.4 java-archive GHSA-q6g2-g7f3-rr83 High
jettison 1.1 1.5.2 java-archive GHSA-grr4-wv38-f68w High
jettison 1.1 1.5.2 java-archive GHSA-7rf3-mqpx-h7xg High
jettison 1.1 1.5.1 java-archive GHSA-56h3-78gp-v83r Medium
logback-classic 1.2.11 1.2.13 java-archive GHSA-vmq6-5m68-f53m High
logback-core 1.2.11 1.2.13 java-archive GHSA-vmq6-5m68-f53m High
mysql-connector-java 8.0.28 8.2.0 java-archive GHSA-m6vm-37g8-gqvh High
netty-handler 4.1.75.Final 4.1.94.Final java-archive GHSA-6mjq-h674-j845 Medium
okio 3.2.0 3.4.0 java-archive GHSA-w33c-445m-f8w7 Medium
okio-jvm 3.2.0 3.4.0 java-archive GHSA-w33c-445m-f8w7 Medium
pagehelper 5.3.0 5.3.1 java-archive GHSA-w559-623p-vfg8 Critical
ruoyi-common 3.8.2 java-archive GHSA-vp22-232w-h9x8 Medium
snakeyaml 1.28 2.0 java-archive GHSA-mjmj-j48q-9wg2 High
snakeyaml 1.28 1.31 java-archive GHSA-3mc7-4q67-w48m High
snakeyaml 1.28 1.32 java-archive GHSA-w37g-rhq8-7m4j Medium
在报告中,Grype 会显示受影响的依赖项、受影响的版本、修复后的版本(如果存在)、漏洞 ID 和严重性等信息。通过这些信息,可以判断 .jar
文件中的潜在安全风险,并采取相应的修复措施。
总结
使用 Grype 可以轻松扫描 Java .jar
包中的安全漏洞,帮助开发者及安全工程师及时发现项目中的已知漏洞并尽快修复。通过本教程的手动安装和使用指南,你可以快速在 Linux 系统上部署 Grype,并进行漏洞扫描,确保你的项目依赖库的安全性。