开源
OSV-Scanner:查找影响项目依赖项的现有漏洞
来源:元经纪     阅读:1186
网站管理员
发布于 2023-06-16 05:42
查看主页

概述

使用 OSV-Scanner 查找影响项目依赖项的现有漏洞。 OSV-Scanner 为OSV 数据库提供了一个官方支持的前端,它将项目的依赖项列表与影响它们的漏洞联系起来。由于 OSV.dev 数据库是开源和分布式的,与闭源咨询数据库和扫描器相比,它有几个好处:

安装

您可以从发布页面下载适用于 Linux、macOS 和 Windows 的SLSA3兼容二进制文件。

包管理器

Windows Scoop

[hidecontent type="logged" desc="隐藏内容:登录后可查看"]

Windows Scoop用户可以从官方 bucket安装 osv-scanner :
scoop install osv-scanner
 

Homebrew

Homebrew用户可以通过以下方式安装osv-scanner
brew install osv-scanner
 

架构Linux

Arch Linux 用户可以从官方仓库安装 osv-scanner:
pacman -S osv-scanner
 

Alpine Linux

Alpine Linux 用户可以从官方仓库安装 osv-scanner:
apk add osv-scanner
 

打开BSD

OpenBSD 用户可以从官方仓库安装 osv-scanner:
pkg_add osv-scanner
 

从源安装

或者,您可以通过运行以下命令从源安装它:
go install github.com/google/osv-scanner/cmd/osv-scanner@v1
 
这需要安装 Go 1.18+。

从源代码构建

请参阅CONTRIBUTING.md文件。

验证构建

我们的每个版本都带有 SLSA 出处数据 ( multiple.intoto.jsonl),可用于通过该slsa-verifier工具验证二进制文件的来源和出处。 例如
slsa-verifier verify-artifact ./osv-scanner_1.2.0_linux_amd64 --provenance-path multiple.intoto2.jsonl --source-uri github.com/google/osv-scanner --source-tag v1.2.0
 

用法

一般用例:扫描目录

osv-scanner -r /path/to/your/dir
 
前面的命令将在您的目标目录中找到锁定文件、SBOM 和 git 目录,并使用它们来确定依赖关系,以检查 OSV 数据库是否存在任何已知漏洞。 递归标志-ror--recursive将告诉扫描器搜索除指定目录之外的所有子目录。它可以找到额外的锁定文件、依赖项和漏洞。如果您的项目具有深层嵌套的子目录,则递归搜索可能需要很长时间。 在 Git 目录中搜索最新的提交哈希。搜索 git commit hash 旨在与使用 git 子模块或类似机制的项目一起工作,其中依赖项被检出为真正的 git 存储库。

忽略的文件

默认情况下,OSV-Scanner 不会扫描被.gitignore文件忽略的文件。所有递归扫描的文件都与 git 存储库(如果存在)匹配,并且.gitignore该存储库中的任何匹配文件都会被考虑在内。 存在一个已知问题,即解析器无法正确遵守存储库边界。 该--no-ignore标志可用于强制扫描器扫描忽略的文件。

指定 SBOM

如果只想检查 SBOM 中依赖项中的已知漏洞,可以使用以下命令:
osv-scanner --sbom=/path/to/your/sbom.spdx.json
 
支持使用包 URL 的SPDXCycloneDX SBOM 。根据输入的文件内容和文件名自动检测格式。 扫描目录时,只会扫描指定文件名之后的 SBOM。请参阅SPDX 文件名CycloneDX 文件名的规范。

指定锁定文件

如果要检查特定锁定文件中的已知漏洞,可以使用以下命令:
osv-scanner --lockfile=/path/to/your/package-lock.json --lockfile=/path/to/another/Cargo.lock
 
一次可以指定多个锁文件;您还可以指定如何解析任意文件:
osv-scanner --lockfile 'requirements.txt:/path/to/your/extra-requirements.txt'
 
使用此lockfile 包支持范围广泛的 lockfiles 。这是当前支持的锁定文件列表:
  • buildscript-gradle.lockfile
  • Cargo.lock
  • composer.lock
  • conan.lock
  • Gemfile.lock
  • go.mod
  • gradle.lockfile
  • mix.lock
  • package-lock.json
  • packages.lock.json
  • Pipfile.lock
  • pnpm-lock.yaml
  • poetry.lock
  • pom.xml*
  • pubspec.lock
  • requirements.txt*
  • yarn.lock
扫描仪还支持:
  • installedAlpine Package Keeper (apk) 使用的文件通常位于/lib/apk/db/installed
  • statusDebian 包管理器 (dpkg) 使用的文件通常位于/var/lib/dpkg/status
但是您必须使用标志明确指定它们--lockfile
osv-scanner --lockfile 'apk-installed:/lib/apk/db/installed'
osv-scanner --lockfile 'dpkg-status:/var/lib/dpkg/status'
 
如果您正在扫描的文件位于名称中有冒号的目录中,您可以在路径前加上一个冒号,以明确向扫描器发出信号,表明它应该根据文件名推断解析器:
osv-scanner --lockfile ':/path/to/my:projects/package-lock.json'
 

使用呼叫分析进行扫描

具有experimental前缀的功能和标志可能会更改或仅在次要版本更新时被删除。

可以对某些语言执行调用堆栈分析,以检查您的项目是否实际执行了易受攻击的代码。如果代码没有被执行,这些漏洞将被标记为未执行。 要启用调用分析,请使用标志调用 OSV-Scanner --experimental-call-analysis

支持的语言

  • go
    • 附加依赖项:
      • go需要安装编译器并在 PATH 上可用

例子

osv-scanner --experimental-call-analysis ./my/project/path
 

扫描基于 Debian 的 docker 镜像包

预览

该工具将抓取 Debian 映像中已安装软件包的列表并查询它们的漏洞。 目前仅支持基于 Debian 的 docker 镜像扫描。 需要docker安装和工具有调用它的权限。 这目前不扫描 Docker 容器的文件系统,并且有各种其他限制。请关注此问题以获取有关容器扫描的更新!

例子

osv-scanner --docker image_name:latest
 

在 Docker 容器中运行

获取 osv-scanner docker 镜像的最简单方法是从 GitHub Container Registry 中拉取:
docker pull ghcr.io/google/osv-scanner:latest
 
一旦你有了图像,你可以通过运行来测试它是否有效:
docker run -it ghcr.io/google/osv-scanner -h
 
最后,要运行它,请挂载您要扫描的目录/src并传递适当的 osv-scanner 标志: docker run -it -v ${PWD}:/src ghcr.io/google/osv-scanner -L /src/go.mod 若您需要更详细的教程用法,请参阅详细文档以了解如何使用 OSV-Scanne。

[/hidecontent]

 
免责声明:本文为用户发表,不代表网站立场,仅供参考,不构成引导等用途。 开源
2024年上半年十大热搜手机公布 华为苹果赢麻了
opporeno13系列全球版通过多国认证
短视频时代,你会选择“边看边买”吗?
一加ace3v限时优惠,直降100元
为期三天的云栖大会今天正式开幕

首页

分类

定制方案

消息

我的