使用 Grype 检查 .jar 包中的漏洞

在开发和部署 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,并进行漏洞扫描,确保你的项目依赖库的安全性。

相关推荐
wdfk_prog6 小时前
嵌入式面试真题第 10 题:高优化等级下共享状态可见性、内存模型与系统级同步设计
java·linux·开发语言·面试·职场和发展·架构·c
卓怡学长6 小时前
w255基于springboot仓库管理系统
java·数据库·spring boot·spring·intellij-idea
这个DBA有点耶9 小时前
SQL调优进阶:从“优化一条SQL”到“优化一个系统”的思维升级
java·大数据·数据库·sql·程序人生·dba·改行学it
csdn2015_9 小时前
springboot读取配置的方法
java·spring boot·spring
AOwhisky10 小时前
下一代容器来了?Docker 宣布原生支持 WebAssembly
java·运维·docker·容器·rust·wasm
云云只是个程序马喽12 小时前
海外短剧平台搭建方案:私有化源码系统选型|云微短剧系统技术架构拆解
java·php
C137的本贾尼13 小时前
第七篇:消息队列(MQ)——就是个带存储的异步通信管道
java·开发语言·中间件
Flittly13 小时前
【AgentScope Java新手村系列】(19)多模态-图像音频视频
java·spring boot·spring
Javatutouhouduan13 小时前
国内大厂Java面试高频题库(2026突击版)
java·架构师·java面试·java面试题·后端开发·java程序员·java八股文
Tim_1013 小时前
【C++】017、new/delete与malloc/free的区别
java·数据结构·算法