swd-15/sbom_manage
GitHub: swd-15/sbom_manage
一款基于 Go 的 SBOM 管理 CLI 工具,通过解析 CycloneDX 文件并查询 OSV 漏洞数据库,实现漏洞自动分诊、责任归属判定和修复状态全流程跟踪。
Stars: 0 | Forks: 0
# sbom_manage
一款可操作的 SBOM 管理工具,专注于安全运营的“责任归属”和决策支持。
这是一款 SBOM 管理 CLI 工具,能够识别需要处理的漏洞,并自动分配给组织内的相应负责人。
## 主要功能
| 功能 | 详情 |
|------|------|
| **支持 CycloneDX v1.6** | 解析由 Syft / Trivy 生成的 JSON |
| **实时漏洞诊断** | 直接查询 Google OSV API |
| **Fixed Version Mapping** | 自动提取已修复的版本 |
| **Responsible Attribution** | 根据生态系统和分数自动判定负责部门 |
| **扫描历史管理** | 在本地积累并参考过往的扫描结果 |
| **处理状态跟踪** | 针对每个漏洞管理 open / in-progress / done 状态 |
## 数据结构 (Core Logic)
```
type Vulnerability struct {
Purl string // Package URL パッケージの一意な識別子
Target string // 名前 ソフトウェア/ライブラリ名
CurrentVersion string // 現在のVer. 現状の把握
FixedVersion string // 修正済みVer. 修正の目標地点
Name string // CVE-ID 脆弱性識別番号
Score float64 // CVSS数値 優先順位の定量的判断
Severity string // 深刻度ラベル CRITICAL / HIGH / MEDIUM / LOW
HasPatch bool // パッチの有無 即座に対策可能かの判断
Responsible string // 対応責任者 誰が動くべきかの明確化
}
```
## 目录结构
```
sbom_manage/
├── main.go
├── go.mod
├── go.sum
├── testdata/
│ ├── testfailed.json
│ └── cyclonedx_test.json
└── internal/
├── compare/
│ ├── version.go # semver比較ロジック
│ └── version_test.go
├── model/
│ └── sbom.go # コアデータ構造体
├── parser/
│ ├── parser.go # CycloneDX JSONパーサー
│ └── parser_test.go
├── scanner/
│ ├── osv.go # OSV API クライアント
│ ├── triage.go # トリアージエンジン
│ └── triage_test.go
└── store/
├── store.go # ストアインターフェース・型定義
├── filestore.go # JSONLファイルベース実装(依存ゼロ)
└── store_test.go
```
## 🚀 使用方法
### 环境要求
- Go 1.22 或更高版本
### 安装
```
git clone https://github.com//sbom_manage.git
cd sbom_manage
go build -o sbom_manage .
```
### 命令列表
```
scan SBOMをスキャンして結果をDBに保存
history 過去のスキャン履歴を表示
status 全脆弱性の対応状況を表示
status 対応状況を更新
status メモ付きで更新
```
### 运行示例
```
# 扫描
./sbom_manage scan testdata/testfailed.json
# 履歴確認
./sbom_manage history
# 対応状況を更新
./sbom_manage status CVE-2021-44228 in-progress "担当者アサイン済み"
./sbom_manage status CVE-2021-44228 done "4.17.21にアップデート完了"
# 全件の対応状況を確認
./sbom_manage status
```
### SBOM 的生成方法
```
# Syft を使う場合
syft -o cyclonedx-json > sbom.json
# Trivy を使う場合
trivy image --format cyclonedx > sbom.json
```
### 测试
```
go test ./...
```
### 数据的保存位置
扫描历史和处理状态将保存在 `~/.sbom_manage/` 中。
```
~/.sbom_manage/
├── scans.jsonl # スキャン履歴
└── statuses.jsonl # 対応状況
```
## 分诊逻辑
### 责任部门的自动判定
| 条件 | 负责方 |
|------|------|
| 分数 ≥ 8.0 或 HIGH / CRITICAL | `Security CSIRT (High Priority)` |
| `pkg:npm/*` `pkg:pypi/*` `pkg:golang/*` 等 | `Development Team` |
| `pkg:deb/*` `pkg:rpm/*` `pkg:apk/*` 等 | `Infrastructure Team` |
| 其他情况 | `Security CSIRT (Triage Required)` |
### Severity 的决定规则
优先使用从 OSV API 获取的标签,仅在无法获取时才通过 CVSS 分数进行补充。
| CVSS 分数 | Severity |
|-----------|----------|
| 9.0 及以上 | CRITICAL |
| 7.0 – 8.9 | HIGH |
| 4.0 – 6.9 | MEDIUM |
| 大于 0 | LOW |
## 📜 许可证
[MIT License](./LICENSE)
标签:CISA项目, CLI, CVSS评分, CycloneDX, CycloneDX v1.6, DevSecOps, EVTX分析, Golang, Google OSV API, Go语言, GPT, PB级数据处理, SBOM, Syft, WiFi技术, 上游代理, 占用监测, 安全编程, 安全运维, 开源组件管理, 日志审计, 时序数据库, 漏洞管理, 版本比对, 硬件无关, 程序破解, 端点安全, 自动分配, 补丁管理, 责任归属, 资产管理, 跌倒检测, 软件物料清单