osv-scanner 2.0 使用说明
1.简介
使用 OSV-Scanner 查找影响项目依赖项的现有漏洞。
OSV-Scanner 为 OSV 数据库提供官方支持的前端,将项目的依赖项列表与影响它们的漏洞连接起来。由于 OSV.dev 数据库是开源和分布式的,与闭源咨询数据库和扫描器相比,它有几个好处:
- 每个漏洞警报都来自一个开放和权威的来源(例如 RustSec 咨询数据库 )
- 任何人都可以建议对漏洞警报的改进,从而产生非常高质量的数据库
- OSV 格式以机器可读的格式明确地存储有关受影响版本的信息,该格式精确地映射到开发人员的软件包列表
GIT地址 : https://github.com/google/osv-scanner
版本 : v2.0.0
2.下载和安装
下载地址 : https://github.com/google/osv-scanner/releases/download/v2.0.0/osv-scanner_linux_amd64
上载到目标服务器上(假设上载到~/tool
目录下)
chmod +x ~/tool/osv-scanner_linux_amd64
ln -s ~/tool/osv-scanner_linux_amd64 ~/tool/osv-scanner
查看版本:
~/tool/osv-scanner --version
输出如下 :
osv-scanner version: 2.0.0
commit: 0e986b49c4e7ee5aa545531c4a8908455f8a9e82
built at: 2025-03-17T01:50:11Z
3.使用
以下仅针对镜像和镜像文件,暂时没有针对源码的漏洞扫描示例
前置条件
- 安装
docker
。因为需要将镜像保存为本地临时文件,因此需要使用docker
命令。如果是扫描本地镜像文件,则无需安装docker
3.1 扫描本地镜像文件(即.tar文件)
~/tool/osv-scanner scan image --serve --archive prometheus-v3.1.0.tar.gz
参数说明 :
scan image
: 扫描镜像--serve
: 在8000端口监听,用于查看扫描结果。比如:本机IP是192.168.132.100
,则可通过http://192.168.132.100:8000
来查看扫描结果.--archive prometheus-v3.1.0.tar.gz
: 指定本地镜像文件的路径和文件名- 如果想将扫描结果保存为本地文件,则执行如下命令 :
~/tool/osv-scanner scan image --archive prometheus-v3.1.0.tar.gz --format=html --output prometheus-v3.1.0.html
参数说明 :
--format=html
: 指定输出的格式。如果没有此参数,则在屏幕上显示表格分隔
的结果。除了html,还有json和markdown等格式--output prometheus-v3.1.0.html
: 指定存放扫描结果的文件名
上述命令的输出如下:
输出如下 :
Scanning local image tarball "prometheus-v3.1.0.tar.gz"
Starting filesystem walk for root:
End status: 70 dirs visited, 1752 inodes visited, 4 Extract calls, 16.207229ms elapsed, 16.20759ms wall time
Starting filesystem walk for root:
End status: 0 dirs visited, 1 inodes visited, 1 Extract calls, 3.736192ms elapsed, 3.736873ms wall time
Starting filesystem walk for root:
End status: 0 dirs visited, 1 inodes visited, 1 Extract calls, 603.093µs elapsed, 603.291µs wall time
Serving HTML report athttp://localhost:8000/
If you are accessing remotely, use the following SSH command:
`ssh -L local_port:destination_server_ip:8000 ssh_server_hostname`
3.2 扫描镜像
~/tool/osv-scanner scan image prom/mysqld-exporter:v0.16.0
参数说明 :
scan image
: 扫描镜像--serve
: 在8000端口监听,用于查看扫描结果。比如:本机IP是192.168.132.100
,则可通过http://192.168.132.100:8000
来查看扫描结果prom/mysqld-exporter:v0.16.0
: 指定镜像:版本号
.如果指定的镜像不存在,则会通过docker
命令从网上拉取
输出结果如下 :
Checking if docker image ("prom/mysqld-exporter:v0.16.0") exists locally...
Saving docker image ("prom/mysqld-exporter:v0.16.0") to temporary file...
Scanning image "prom/mysqld-exporter:v0.16.0"
Starting filesystem walk for root:
End status: 66 dirs visited, 1743 inodes visited, 3 Extract calls, 1.940169ms elapsed, 1.94032ms wall time
Starting filesystem walk for root:
End status: 0 dirs visited, 1 inodes visited, 1 Extract calls, 76.157µs elapsed, 76.215µs wall time
Container Scanning Result (Unknown):
Total 4 packages affected by 8 known vulnerabilities (1 Critical, 0 High, 1 Medium, 0 Low, 6 Unknown) from 1 ecosystem.
8 vulnerabilities can be fixed.
Go
╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ Source:artifact:bin/mysqld_exporter │
├─────────────────────┬───────────────────┬───────────────┬────────────┬──────────────────┬──────────────────────┤
│ PACKAGE │ INSTALLED VERSION │ FIX AVAILABLE │ VULN COUNT │ INTRODUCED LAYER │ IN BASE IMAGE │
├─────────────────────┼───────────────────┼───────────────┼────────────┼──────────────────┼──────────────────────┤
│ golang.org/x/crypto │ 0.28.0 │ Fix Available │ 2 │ # 7 Layer │ prom/mysqld-exporter │
│ golang.org/x/net │ 0.29.0 │ Fix Available │ 2 │ # 7 Layer │ prom/mysqld-exporter │
│ golang.org/x/oauth2 │ 0.23.0 │ Fix Available │ 1 │ # 7 Layer │ prom/mysqld-exporter │
│ stdlib │ 1.23.3 │ Fix Available │ 3 │ # 7 Layer │ prom/mysqld-exporter │
╰─────────────────────┴───────────────────┴───────────────┴────────────┴──────────────────┴──────────────────────╯
For the most comprehensive scan results, we recommend using the HTML output: `osv-scanner scan image --serve <image_name>`.
You can also view the full vulnerability list in your terminal with: `osv-scanner scan image --format vertical <image_name>`.
3.3 扫描源码
~/tool/osv-scanner scan --serve -r <source_directory>