BBlue530/PatchHound
GitHub: BBlue530/PatchHound
PatchHound是一款集成SBOM生成、多源漏洞扫描、CISA KEV比对、合规报告生成和持续监控的开源软件供应链安全平台。
Stars: 0 | Forks: 0
# PatchHound (SBOM 漏洞报告生成器)
## 概述
PatchHound 是一款用于源代码和容器镜像的开源 **SBOM (软件物料清单) 漏洞扫描器**。它将 SBOM、发现的漏洞和优先级排序集中到一个工作流中。
### PatchHound 通过以下方式帮助团队:
- 集中漏洞发现结果,使其更易于跟踪、确定优先级和管理。
- 通过自动重新扫描新发现的漏洞,进行持续监控。
- 生成适合合规性和安全审查的综合审计就绪报告。
- 通过排除机制进行漏洞管理,支持公开注释(在 PDF 报告中可见)、内部注释和漏洞范围界定。
- 通过带有跟踪理由的排除管理,减少警报噪音。
- 生成详细的 PDF 摘要,包括扫描元数据、统计信息、排除项、工具版本、优先级发现结果以及扫描/报告的生成时间。
- 通过突出显示关键漏洞和 CISA KEV 列出的漏洞来确定风险优先级。
- 轻松集成 CI/CD。
## 功能特性
- SBOM 生成 ([Syft](https://github.com/anchore/syft)) + 漏洞扫描 ([Grype](https://github.com/anchore/grype))
- [Trivy](https://github.com/aquasecurity/trivy) 用于检测错误配置和密钥
- [Semgrep](https://github.com/semgrep/semgrep) 用于 SAST
- 使用更新的漏洞数据库 + KEV 目录进行每日重新扫描
- 使用 [Cosign](https://github.com/sigstore/cosign) 进行签名和验证
- PDF 报告、仓库历史跟踪、审计追踪
- 通过 [Slack](https://slack.com/)/[Discord](https://discord.com/) 发送警报
- 扫描漏洞(SBOM、SAST、错误配置、密钥)
- 与 CISA 的 [已知被利用漏洞](https://www.cisa.gov/known-exploited-vulnerabilities-catalog) (KEV) 进行对比
- 生成 PDF 摘要报告
- 支持排除项的摘要,并带有理由跟踪
## 使用说明
### 后端
后端负责处理文件摄取、漏洞扫描、优先级排序和存储。
它接收来自 CLI 或 CI/CD 流水线的 SBOM、SAST 报告和 Trivy 结果,对它们进行处理,签署结果,将漏洞与 CISA KEV 目录进行比对,并在需要时触发警报。
有关安装、设置和详细的 API 文档,请参阅 [后端 README](https://github.com/BBlue530/PatchHound/blob/master/docs/backend.md#backend-patchhound)。
### 命令行界面 (CLI)
CLI 是后端与用户之间通信的核心部分。关于如何使用 CLI 的更多信息,请参阅 [此处](https://github.com/BBlue530/PatchHound/blob/master/docs/cli-commands.md#cli-patchhound)。
## 配置
后端目前支持 AWS 生态系统用于存储密钥,使用 S3 buckets 存储外部扫描数据,以及使用 PostgreSQL 进行数据库管理。所有配置均在 [app-config.yaml](https://github.com/BBlue530/PatchHound/blob/main/src/Backend/app-config.yaml) 中完成。未来可能会增加对其他存储后端的支持。
```
backend:
storage:
secret_data:
local:
generate_secrets:
enabled: True
secrets:
enabled: False
secrets_name:
api_key: "${API_KEY}"
jwt_key: "${JWT_KEY}"
cosign_key: "${COSIGN_KEY}"
secret_manager:
aws:
enabled: False
secret_manager_name: "${SECRET_MANAGER_NAME}"
secrets_name:
api_key: "secret_api_key"
jwt_key: "secret_jwt_key"
cosign_key: "secret_cosign_key"
token_key_database:
local:
enabled: True
external_database:
enabled: False
username: "${EXTERNAL_DB_USERNAME}"
password: "${EXTERNAL_DB_PASSWORD}"
db_name: "${EXTERNAL_DB_NAME}"
db_host: "${EXTERNAL_DB_HOST}"
scan_data:
local:
enabled: True
aws:
s3_bucket:
enabled: False
bucket: "${BUCKET}"
bucket_key: "${BUCKET_KEY}"
cleanup:
cleanup_entries:
enabled: False
max_entries: 5
cleanup_old_entries:
enabled: False
always_keep_entries: 2
max_entry_age:
month: 0
week: 0
day: 7
export_log:
https:
enabled: False
export_url: "${EXPORT_URL}"
export_url_api_key: "${EXPORT_URL_API_KEY}"
opentelemetry:
enabled: False
export_url: "${EXPORT_URL}"
export_url_api_key: "${EXPORT_URL_API_KEY}"
service_name: "${SERVICE_NAME}"
environment: "${ENVIRONMENT}"
scheduled_rescan:
enabled: True
rescan_interval:
month: 0
week: 0
day: 1
alert:
rescan_alert:
# 'all_not_excluded_vulnerabilities' Will not alert if vulnerabilities found are in exclusion list
# 'all_new_vulnerabilities' Will alert on all new vulnerabilities found even if on exclusion list
# 'all_vulnerabilities' Will alert all vulnerabilities
kev_vulns: "all_not_excluded_vulnerabilities"
vulns: "all_not_excluded_vulnerabilities"
# This webhook will be secondary to the webhook inside of repo dir
webhook: "${ALERT_WEBHOOK}"
auth:
aws:
enabled: False
aws_access_key_id: "${AWS_ACCESS_KEY_ID}"
aws_secret_access_key: "${AWS_SECRET_ACCESS_KEY}"
aws_default_region: "${AWS_DEFAULT_REGION}"
```
### 容器镜像
后端和 CLI 均提供容器镜像。这些镜像包含了快速入门所需的一切。
#### [后端容器镜像](https://github.com/BBlue530/PatchHound/pkgs/container/patchhound_backend):
```
docker pull ghcr.io/bblue530/patchhound_backend:latest
```
#### [CLI 镜像](https://github.com/BBlue530/PatchHound/pkgs/container/patchhound_cli):
```
docker pull ghcr.io/bblue530/patchhound_cli:latest
```
## 注意事项
扫描目录 (`TARGET="."`) 时,Syft 会警告缺少显式的名称/版本元数据。这**不会**影响扫描结果。
如果您不希望工作流在发现关键漏洞时失败,请将 `FAIL_ON_VULNERABILITY=true` 更改为 `false`
如果您正在扫描容器镜像,请确保将名为 `PAT_TOKEN` 的密钥添加到您的仓库中。
1. 转到 **Settings > Secrets and variables > Actions**
2. 点击 **New repository secret**
3. 命名为:`PAT_TOKEN`
4. 粘贴您的 PAT
5. 确保您在 [CLI](https://github.com/BBlue530/PatchHound/blob/master/docs/cli-commands.md#scan) 中传递了 `PAT_TOKEN` 密钥
### 所需令牌权限
- **`read:packages`** - 拉取镜像所需
- **`repo`** - 仅在访问**私有镜像**或**私有仓库**时需要
公共镜像仅需 `read:packages`。
# 文档
- [文档](https://github.com/BBlue530/PatchHound/tree/master/docs)
- [快速开始](https://github.com/BBlue530/PatchHound/blob/master/docs/quick-start.md)
- [后端](https://github.com/BBlue530/PatchHound/blob/main/docs/backend.md)
- [CLI 命令](https://github.com/BBlue530/PatchHound/blob/main/docs/cli-commands.md)
- [配置](https://github.com/BBlue530/PatchHound/blob/main/docs/config.md)
## 许可证
本项目采用 Apache License 2.0 授权。有关详细信息,请参阅 LICENSE 文件。
标签:Angular, CISA KEV, Cosign, DevSecOps, Discord告警, GPT, Grype, PDF报告生成, SAST, SBOM, Semgrep, Slack告警, Syft, WordPress安全扫描, 上游代理, 云安全监控, 代码安全, 加密, 合规报告, 威胁情报, 开发者工具, 持续监控, 文档安全, 测试用例, 漏洞优先级, 漏洞扫描器, 漏洞枚举, 漏洞管理, 盲注攻击, 硬件无关, 请求拦截, 跌倒检测, 软件供应链安全, 软件物料清单, 远程方法调用, 逆向工具, 错误配置扫描, 静态分析