kitsunetrail/stackwatch

GitHub: kitsunetrail/stackwatch

StackWatch 对运行中的 Docker 容器进行每日 CVE 扫描,筛选并优先排序高危漏洞,仅在有可修复项时通过 Slack 通知,帮助自托管用户高效处理安全风险。

Stars: 0 | Forks: 0

# StackWatch 专为自托管玩家和家庭实验室(homelab)爱好者打造。它能帮你完成阅读 Trivy 原始输出这项繁琐的工作,并直接呈现出你*现在*就能修复的内容。 ## 功能说明 1. 从 `docker.sock`(只读)读取你正在运行的容器所使用的唯一镜像 2. 使用 [Trivy](https://github.com/aquasecurity/trivy) 扫描每个镜像(CVE 数据库由 Trivy 负责处理) 3. 仅保留 **HIGH / CRITICAL**(高危 / 严重)级别的发现 4. 根据 Trivy 的 `Status`(状态)进行排序(当前可修复 / 等待上游修复 / 不会修复) 5. 按包进行汇总,并标注升级风险(对于编程语言相关的包,semver 会告诉你此次版本升级是安全的还是需要谨慎处理) 6. 将基础操作系统生命周期结束(EOL)标记为最高优先级 7. 每天向 Slack / webhook 发送一次通知 —— 但仅限在有值得采取行动的内容时才发送 ## 快速开始 ``` # 1. 创建你的 config(只需填入一个 Slack Incoming Webhook URL 即可开始) cp config.example.yml config.yml $EDITOR config.yml # 2. 运行它(以只读方式挂载 docker.sock) docker run -d --name stackwatch \ -v /var/run/docker.sock:/var/run/docker.sock:ro \ -v "$PWD/config.yml:/etc/stackwatch/config.yml:ro" \ ghcr.io/kitsunetrail/stackwatch:latest ``` 大功告成 —— 宿主机上的每个容器(无论是通过哪个 compose 项目还是单次的 `docker run` 启动的)都会被每日扫描。 你不需要为每个容器或每个 compose 项目部署一个实例:**每台宿主机只需一个实例**。 ### 使用 docker compose 运行 仓库内包含了一个开箱即用的 [docker-compose.yml](docker-compose.yml): ``` cp config.example.yml config.yml # then add your Slack webhook to config.yml docker compose up -d docker compose logs -f ``` ## 配置说明 请参阅 [config.example.yml](config.example.yml)。你至少需要设置 `notify.slack_webhook_url` 或 `notify.generic_webhook_url` 中的任意一个,即可开始使用。 ## 开发说明 ``` go test ./... -short # fast unit tests (no Docker / network needed) go test ./... # also runs integration tests that use Trivy (needs trivy + network) go build ./... ``` 该处理流水线被拆分为了多个小型包:`docker`(枚举) → `scanner`(运行并解析 Trivy) → `analyze`(排序、汇总、评估) → `notify`(格式化与发送),并由 `runner` 将它们串联在一起。 ## 开源许可证 [GNU AGPL-3.0](LICENSE)。Copyright (c) 2026 Kitsune Trail. 简而言之:你可以自由地使用、修改和自托管它。如果你将修改后的版本 作为网络服务运行,你必须向其用户公开你修改后的源代码。
标签:DevSecOps, Docker, EVTX分析, Go, Ruby工具, Web报告查看器, 上游代理, 安全告警, 安全防御评估, 日志审计, 自动化运维, 请求拦截