导读:OSV-Scanner提供当前最大的社区可编辑、开源的漏洞数据库。
如果各位开发者会和安全打交道,那么本文可以视作一个好消息—— Google (谷歌)最新发布了一款开源工具,名为 OSV-Scanner 。
GitHub:https://github.com/google/osv-scanner#scan-a-directory
OSV-Scanner 是一个开源漏洞 (OSV) 数据库的开源前端接口。
其中,OSV 数据库是一个分布式开源数据库,以 OSV 格式存储安全与漏洞信息。
OSV.dev 目前支持16个生态系统,覆盖所有主要语言、Linux发行版(Debian和Alpine)、Android、Linux内核和OSS-Fuzz。
据统计,OSV.dev 2022年的安全告警数量比2021 年多了1.5倍。其中Linux(27.4%)、Debian(23.2%)、PyPI(9.5%)、Alpine(7.9%)和npm(7.1%)为前5大安全告警类别。
现代应用程序有很多均存在依赖关系。例如使用 create-react-app 命令创建了一个React 框架的单页 Web 应用程序,结果可能是一个具有七、7个运行时依赖项和9个开发依赖项的项目。
这些直接依赖关系中的每一个都有其它依赖关系,称为传递依赖关系。react 包又包括loose -envify作为传递依赖,它本身又依赖于其它库。
OSV-Scanner 分别通过分析清单、软件物料清单 (SBOM) 和提交哈希,确定正在使用的相关依赖项。这些信息查询 OSV.dev 数据库,分析与项目相关的依赖关系,从而凸显相关漏洞。漏洞以表格格式或可选的基于 JSON 的 OSV 格式报告。
OSV 格式提供了一种机器可读的JSON 模式,用于表现漏洞信息。
这个格式旨在强制执行与实际开源包中使用的命名和方案一致的版本规范。Google 工程师Oliver Chang和杰出工程师Russ Cox表示,这种方法“可用于描述任何开源生态系统中的漏洞,同时不需要生态系统相关逻辑来处理它们。”
SV-Scanner 漏洞输出格式
其JSON文档格式类似如下:
"schema_version": "1.3.0",
"id": "GHSA-c3g4-w6cv-6v7h",
"modified": "2022-04-01T13:56:42Z",
"published": "2022-04-01T13:56:42Z",
"aliases": [ "CVE-2022-27651" ],
"summary": "Non-empty default inheritable capabilities for linux container in Buildah",
"details": "A bug was found in Buildah where containers were created ...",
"affected": [
{
"package": {
"ecosystem": "Go",
"name": "github.com/containers/buildah"
},
"ranges": [
{
"type": "SEMVER",
"events": [
{
"introduced": "0"
},
{
"fixed": "1.25.0"
}
]
}
]
}
],
"references": [
{
"type": "WEB",
"url": "https://github.com/containers/buildah/commit/..."
},
{
"type": "PACKAGE",
"url": "https://github.com/containers/buildah"
}
]
}
OSV-Scanner 可以扫描目录、查找锁定类型文件、SBOM 以及 git 目录。可以通过如下命令运行:
osv-scanner -r /path/to/your/dir
可选-r参数表示启用递归扫描。目前它支持使用包含 URL 的 SPDX 和 CycloneDX SBOM。已支持许多锁类型文件,包括 yarn.lock、composer.lock、go.mod 和 Gemfile.lock。
它也可以扫描 Debian 映像中已安装软件包的清单,找出相关漏洞:
$ osv-scanner --docker image_name:latest.
注意,此时需要安装 docker,目前它不扫描 Docker 容器的文件系统。有关此预览功能的更多详细信息,各位开发者可以参考GitHub Issue。
地址:https://github.com/google/osv-scanner/issues/64
OSV-Scanner 还可以配置为通过 ID 忽略某个漏洞。此功能还支持选择性地提供忽略到期的日期与原因。忽略的漏洞可以在IgnoreVulns的Key下指定。
类似如下配置:
[[IgnoredVulns]]
id = "GO-2022-0968"
# ignoreUntil = 2022-11-09
reason = "No ssh servers are connected to or hosted in Go lang"
目前,OSV-Scanner 已集成到OpensSSF Card的漏洞检查中。这是一种自动化安全工具,可识别开源项目中存在风险的供应链技术实践,这将扩展到项目依赖项中的任何漏洞。
Scorecard地址:https://github.com/ossf/scorecard
Google工程师 Rex Pan分享了 OSV-Scanner 下一步的升级细节,,包括提供独立的 CI 操作,可进一步集成到工作流中。该团队正在通过“通过向 CVE 添加精确的提交级别Meta 数据来构建高质量的 C/C++ 漏洞数据库”,用来改进 C 和 C++ 语言支持。
OSV-Scanner 通过GitHub地址获取:
https://github.com/google/osv-scanner
OSV-Scanner 以 Apache License 2.0 开源协议发布。
作者:春晓
参考:
https://security.googleblog.com/2022/12/announcing-osv-scanner-vulnerability.html
本文为 @ 场长 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。