当前位置: 首页 > news >正文

使用 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,并进行漏洞扫描,确保你的项目依赖库的安全性。

相关文章:

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

在开发和部署 Java 应用时,确保依赖库和项目文件中的安全性至关重要。Grype 是一款强大的开源工具,用于扫描项目文件(如 .jar 包)中的已知漏洞。本篇博客将介绍如何手动安装 Grype 并使用它检测 .jar 包中的安全漏洞。 一、手动安…...

IDEA 常用插件推荐,美观又实用!

1、 TONGYl Lingma - Your Al Coding Assistant. Type less, Code more. 通义灵码,是一款基于通义大模型的智能编码辅助工具,提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码注释生成、代码解释、研发智能问答、异常报错排查等能力&…...

浮点数精度问题

为什么会产生精度问题? 我们带着这个问题去探寻浮点数二进制的存储原理 浮点数是怎么存在计算机中的? 浮点数在计算机中的表示通常遵循IEEE 754标准。其基本概念如下: 结构:浮点数由三部分组成: 符号位(…...

RK3576芯片在智能家居里中型智慧屏产品的应用方案分析

智能家居在近年来得到了快速发展,AI技术不断发展,人机交互十分成熟,各种家电也都迎来了智能化浪潮,智能家居为人们提供了优秀的产品体验,受到主流消费者的青睐,智能家居里的中型智慧屏产品也随之兴起。 瑞芯…...

什么是生成式 AI?

人工智能 (AI) 通过使用机器学习与环境交互并执行任务来模仿人类行为,而无需明确指示要输出的内容。 生成式 AI 描述 AI 中用于创建原创内容的一类功能。 人员通常与聊天应用程序中内置的生成式 AI 交互。 此类应用程序的一个常见示例是 Microsoft Copilot&#xf…...

计算机网络期末试题及答案

一、选择题(每空2分,共20分) 1、下列关于常用交换技术的描述不正确的是( )。 A、电路交换是面向连接可靠的,适合大量的、连续的数据传输。 B、分组交换采用存储转发方式,以较小的固定长度的分组作为数据传输单…...

MySQL中DML操作(一)

添加数据(INSERT) 1.选择插入 INSERT INTO 表名(列名1 , 列名2 , 列名3......) VALUES(值1 , 值2 , 值3......); 示例: 向departments表中添加一条数据,部门名称为market,工作地点ID为1。 insert into department…...

Django 模板继承

Django 模板继承的语法主要涉及两个关键标签:{% extends %} 和 {% block %}。 语法详解 {% extends %}: 用于指定当前模板继承自哪个父模板。语法:{% extends "父模板的路径" %} {% extends "base.html" %}{% block %}&…...

黑马点评17——多级缓存-Lua语法

文章目录 Lua语法初始Lua变量和循环条件控制、函数 变量和循环函数和条件控制 Lua语法 初始Lua https://www.lua.org/ 魔兽的一些插件就是用lua开发的。 centOs已经装好了lua,直接用~ 变量和循环 条件控制、函数 变量和循环 函数和条件控制...

如何在Linux 上运行 SciChart WPF图表控件?

SciChart – 一个跨平台图表库,可实现 Windows Presentation Foundation (WPF)、JavaScript 以及原生 iOS (Swift/Objective-C) 和 Android (Java/Kotlin),基于代号为 Visual Xccelerator 的专有 C 渲染引擎。这提供了 SciChart 众所周知的速度和性能&am…...

C--字符串函数处理总结

文章目录 函数接口strchrstrtok 常见应用int 转化 字符串1 2 3 4 (int ) ---> 1,2,3,4 (char []) 字符串转化为 int1,2,3,4(char []) ---> 1 2 3 4 (int ) 函数接口 strchr char *strch…...

PLSQL-将一份excel数据导入到一张物理表(Oracle)

–>> 很简单~ 平时用惯了DBeaver,突然要用PLSQL Developer,确实很生疏。 –>> 我的场景,将一份.csv文件数据手动导入到Oracle下的一张物理表中去。 研究了半天,看网上说的可以用:Tools → ODBC Importer &…...

【系统架构设计师】状态模式

状态模式(State Pattern)是行为设计模式的一种,它允许一个对象在其内部状态改变时改变它的行为。对象看起来像是改变了它的类。这种模式可以用于实现一些复杂的有限状态机,在不同的条件下改变对象的行为而无需修改对象本身。下面是一个关于状态模式的详细介绍,包括其概念、…...

Linux网络编程1——socket通信

一.网络准备 1.套接字 在TCP/IP 协议中,“ip 地址TCP 或UDP 端口号”唯一标识网络通讯中的一个进程。“IP 地址端口号”就对应一个socket。欲建立连接的两个进程各自有一个 socket 来标识,那么这两个 socket 组成的 socket pair 就唯一标识一个连接。因…...

【每日一题】LeetCode 1052.爱生气的书店老板(数组、滑动窗口)

【每日一题】LeetCode 1052.爱生气的书店老板(数组、滑动窗口) 题目描述 书店老板的商店每天有不同数量的顾客进入。每分钟,老板可能或可能不会生气。如果老板生气,那一分钟的顾客就会不满意。老板知道一个秘密技巧,…...

IDEA中无法使用 Subversion 命令行客户端 svn Subversion 可执行文件的路径可能是错误的

IDEA中无法使用 Subversion 命令行客户端 svn 我在新电脑上安装好IDEA和SVN后使用IDEA拉取和提交项目时提示无法使用。 解决方案 我这边的问题是在安装TortoiseSVN的时候少启用了一个功能,需要重新安装并把这个功能启用。 在这一步需要把command line client to…...

ThreadLocal 在线程池中的内存泄漏问题

ThreadLocal 是一种非常方便的工具,它为每个线程创建独立的变量副本,避免了线程之间的共享数据问题。然而,在线程池环境中,ThreadLocal 的使用必须非常谨慎,否则可能会引发内存泄漏问题。 为什么 ThreadLocal 可能导致…...

如何编写Prompt,利用AI高效生成图表——图表狐(FoxChart)指南

在数据可视化领域,图表是数据的重要表达方式。为了让更多人能够轻松高校地生成美观、专业的图表,图表狐(FoxChart)应用而生。然而,要想充分发挥AI的潜力,编写合适的Prompt至关重要。本文介绍一些编写Prompt的原则,帮助…...

Redis主从数据同步过程:命令传播、部分重同步、复制偏移量等

请记住胡广一句话,所有的中间件所有的框架都是建立在基础之上,数据结构,计算机网络,计算机原理大伙一定得看透!!~ 1. Redis数据同步 1.1 数据同步过程 大家有没想过为什么Redis多机要进行数据同步&#…...

《JavaEE进阶》----13.<Spring Boot【配置文件】>

本篇博客讲解 1.SpringBoot配置文件的格式以及对应的语法 2.了解两个配置文件格式的差异、优缺点。 我们这里只做简单的介绍。看会,了解,学会读取就行了。 因为配置文件实在太多了,这里只做基础的介绍。 一、配置文件的作用 前言 计算机中有许…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

OpenLayers 分屏对比(地图联动)

注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...