madhav-dhungana/Dojo-CTI

GitHub: madhav-dhungana/Dojo-CTI

Dojo-CTI 是一个 DefectDojo 插件库,通过持续整合 EPSS、CISA KEV、勒索软件及在野利用情报来动态丰富漏洞 Finding 数据,帮助团队基于真实威胁信号进行补丁优先级排序。

Stars: 5 | Forks: 0

# DOJO CTI 用于 DefectDojo 的持续威胁监控 Django 库。 Dojo CTI 通过真实的可利用性信号,丰富了您现有的 DefectDojo Findings。它针对 FIRST.org EPSS 数据、CISA KEV 数据、勒索软件使用指标以及 VulnCheck POC / 在野利用情报,扫描 DefectDojo 中已存在的 CVE,以便团队能够持续了解哪些漏洞需要优先处理。 该库专为 Django-DefectDojo 构建,并设计为附加模式:它提供了自己的 Django 应用、管理 UI、定时任务、手动扫描、审计日志和 API 输出,同时保持 DefectDojo 的核心模型和业务逻辑完好无损。 ## 功能 - 针对现有 DefectDojo Findings 进行 EPSS 扫描 - 使用 API JSON 或 CSV 源进行 KEV 扫描 - 来自 KEV 兼容源的勒索软件使用信号 - 首次发现 KEV 的日期跟踪,在后续扫描中不会覆盖现有日期 - 针对现有 Finding CVE 进行 POC 和在野利用(ITW)检查 - 使用 DefectDojo 的凭据加密密钥对 API 访问的第三方 token 进行加密存储 - 针对 Docker 和 Kubernetes 部署的基于环境/文件的 token 覆盖 - 支持针对大型资产清单(如 6万-7万个 CVE)发起 ITW/POC API 请求 - 面向包内全局 CVE 情报的 CTI DB,可被其他服务利用,不限于本地 Findings - 可从 EPSS / KEV UI 执行手动获取和对比操作 - 使用 DefectDojo 的 Celery beat 和 worker 进行定时扫描 - 可从 API 或自定义 CSV URL 配置 EPSS 源 - 可配置 KEV 源 URL 和源格式 - 针对 EPSS 更新控制 Finding 的适用范围 - EPSS / KEV 仪表板和更新日志 - 在 Finding 匹配数据中附加 EPSS 更新 / KEV / POC / ITW 指标 - 在 Swagger 中可见的、用于 Finding 匹配数据的 API endpoint - 在 Swagger 中可见的、用于 CVE 状态查询的 CTI DB endpoint - 适用于 DefectDojo 开发和生产环境部署的 Docker 安装程序 ## 它的功能 Dojo CTI 帮助漏洞管理团队超越静态严重性的限制。Dojo CTI 通过可能随时间变化的可利用性和威胁情报信号持续丰富 Findings。 该库: - 从 DefectDojo Findings 中提取 CVE - 从 FIRST.org 或给定数据获取 EPSS 分数和百分位数 - 将 EPSS 记录与现有 Findings 进行对比 - 检查 Finding CVE 是否被列为已知被利用漏洞 - 检查这些 CVE 是否已知在勒索软件活动中被使用 - 检查这些 CVE 是否具有公开的 PoC(概念验证)漏洞利用数据 - 检查这些 CVE 是否被报告存在在野利用 - 积极、安全地更新受支持的 Finding 字段 - 将 VulnCheck POC / ITW 结果存储在应用专属的快照表中 - 可选择根据配置源中可用的所有 CVE 构建本地 CTI DB - 在便于审计的更新日志中记录每一次运行 - 在 UI 和 API 中公开结果 默认情况下,Dojo CTI 专注于 DefectDojo 环境中已存在的 CVE,因此输出结果反映了您真实的漏洞态势。如果启用了 CTI DB,它还会维护一个应用专属的 CVE 情报目录,其他工具可以对其进行查询,而无需在每次审计扫描期间请求公开源。 “设置”页面允许您将 EPSS 和 KEV 源指向兼容的内部镜像。目前通过 VulnCheck 分析 POC/ITW,访问由 API token 控制:社区版和商业版 token 会自动暴露该 token 授权的索引。 ## 开发计划 - 如果存储的漏洞超过特定分数或级别,通过 Teams/Slack 发送通知 - DefectDojo 内部的高级风险评分引擎,以便您可以根据资产类型和组织制定并应用多种自定义风险方案。 ## 依赖 依赖说明: ``` dependencies = ["Django>=4.2", "requests>=2.28"] ``` 运行时依赖: - Python `>=3.11` - Django `>=4.2` - requests `>=2.28` - 用于定时/后台任务的 DefectDojo 现有 Celery 技术栈 可选依赖: - Celery `>=5.3`,用于非 DefectDojo 的独立任务场景 - 用于测试的 pytest、pytest-django 和 responses DefectDojo 在核心集中固定了许多运行时包,因此该库有意保持较低的依赖门槛。 ## 安装说明 首先克隆此代码库: ``` git clone https://github.com/madhav-dhungana/Dojo-CTI ``` 然后从您的 DefectDojo 检出根目录运行安装程序。 示例: ``` cd ~/path-to-your-DefectDojo/django-DefectDojo bash "/path/to/Dojo-CTI/install-dojo-epss.sh" \ --source "/path/to/Dojo-CTI" \ --mode prod ``` 对于生产环境的 Docker 部署,请使用 `--mode prod`。 对于将 DefectDojo 检出目录绑定挂载到容器 `/app` 路径下的开发环境部署,请使用 `--mode dev`。 您可以通过以下命令验证开发模式的适用性: ``` docker compose exec uwsgi test -f /app/docker-compose.yml && echo "dev mode OK" ``` 如果该命令没有输出 `dev mode OK`,请使用 `--mode prod`。 ## 安装程序模式 ### 生产模式 生产模式构建一个名为 `dojo-epss-django:local` 的 Docker overlay 镜像。 它会: - 将该库复制到 Docker 构建上下文中 - 将 Dojo EPSS 安装到镜像中 - 在镜像内应用附加的 UI 模板补丁 - 写入所需的 Django 设置覆盖 - 使用新镜像重新创建 Django 和 Celery 服务 - 运行 Dojo EPSS 数据库迁移 在生产模式下安装后,请始终使用生成的覆盖文件启动 DefectDojo: ``` docker compose -f docker-compose.yml \ -f dojo_epss_pkg/docker/docker-compose.override.dojo-epss.yml \ up -d ``` ### 开发模式 开发模式适用于将 DefectDojo 检出目录绑定挂载到容器中的场景。 它会: - 将该库复制到 `./dojo_epss_pkg` - 将附加的模板补丁应用到主机检出目录 - 将 Dojo EPSS 设置块写入 `dojo/settings/local_settings.py` - 在运行中的 Django/Celery 容器内安装该包 - 运行迁移 - 重启服务 仅当 `uwsgi` 容器内存在 `/app/docker-compose.yml` 时,才使用开发模式。 ## 首次运行 安装完成后: 1. 以超级用户身份登录 DefectDojo。 2. 打开 `EPSS / KEV / VulnCheck / CTI DB Settings`。 3. 启用该模块。 4. 选择一个 EPSS 源:从 FIRST.org 获取或每日 CSV 下载。 5. 如果您需要 KEV 和勒索软件信息扩充,请启用 KEV 检查。 6. 如果您需要 POC 和在野利用信息扩充,请启用 VulnCheck 检查。 7. 添加 VulnCheck API token,或通过环境/文件覆盖方式提供。 8. 如果您需要应用专属的 CVE 情报目录,可选择启用 CTI DB。 9. 保存设置。 10. 打开 `Manual Run`。 11. 运行 `Fetch and Compare from FIRST.org` 或 `Download CSV and Compare`。 12. 可选择运行 `Fetch KEV and Update Findings`。 13. 可选择运行 `Fetch VulnCheck POC / ITW Signals`。 14. 可选择运行 `Sync CTI DB`。 15. 查看仪表板、Finding Matches、CTI DB、Update Logs 和 Findings 列表。 ## 卸载说明 Dojo CTI 包含干净的卸载路径。在您的 DefectDojo 检出根目录下运行卸载命令: ``` cd ~/path-to-your-defectdojo/django-DefectDojo bash "/path/to/Dojo-EPSS/install-dojo-epss.sh" --uninstall ``` 卸载程序将: - 将 Dojo CTI 数据库表迁移回初始状态 - 在可能的情况下,从运行中的 Django/Celery 容器中卸载 `dojo-epss` Python 包 - 撤销附加的 DefectDojo 模板补丁 - 从 `dojo/settings/local_settings.py` 中移除 Dojo EPSS 设置块 - 移除本地的 `dojo_epss_pkg` 副本 - 当技术栈正在运行时重启 Django/Celery 容器 卸载过程旨在干净地移除 Dojo CTI,而不会破坏 Django-DefectDojo 的核心文件或无关的 DefectDojo 数据。它仅针对 Dojo CTI 专属的表、包文件、设置块和模板补丁添加内容。 ## 定时任务 Dojo CTI 使用 DefectDojo 现有的 Celery worker 和 Celery beat 设置。 安装程序会添加一个每小时的静态调度任务: ``` dojo_epss.schedule_dispatcher_task ``` 调度程序会检查 EPSS / KEV / VulnCheck / CTI DB 设置页面,仅在配置的间隔时间到达时才执行扫描。 UI 计划任务字段使用小时为单位: - `0` 表示禁用该定时同步 - 最多至 `8760` 的任何正整数值表示启用该定时同步 这使得 Celery beat 配置保持稳定,同时允许管理员通过 UI 控制扫描时间。 ## 手动操作 可以从 EPSS / KEV / VulnCheck / CTI DB Manual Run 页面执行手动操作: - 从 FIRST.org 获取并对比 - 下载 CSV 并对比 - 获取 KEV 并更新 Findings - 获取 VulnCheck POC / ITW 信号 - 同步 CTI DB - 自动更新符合条件的 Findings - 测试 FIRST.org API 连通性 手动操作仅限超级用户执行,并会写入更新日志。 ## API Dojo CTI 提供了在 Swagger 中可见的 API endpoint: ``` GET /api/v2/dojo_epss/finding-matches/ GET /api/v2/dojo_epss/cti-cves/ ``` 受支持的查询过滤条件: - `status` - `finding_id` - `cve_id` - `kev=true` - `ransomware=true` - `poc=true` - `itw=true` 响应内容包括 EPSS 匹配数据,以及可用的 KEV 和 VulnCheck 快照。 CTI DB endpoint 支持 CVE 目录过滤条件,例如 `cve_id`、`q`、`kev=true`、`ransomware=true`、`poc=true`、`itw=true` 和 `epss_min`。 ## 权限 只读的 EPSS / KEV / VulnCheck / CTI DB 页面面向员工、超级用户或具有以下权限的用户开放: ``` dojo_epss.view_epss_dashboard ``` 设置和手动写入操作需要超级用户权限。 详细的更新日志请求参数、源 URL 和错误详情仅对超级用户可见。 ## 安全说明 EPSS 和 KEV 源 URL 是可配置的,以便组织可以使用内部镜像。请将这些设置视为受信任的管理员输入。 VulnCheck API token 使用 DefectDojo 的凭据加密助手进行加密存储,且在保存后绝不再显示。操作员可以通过向 Django 和 Celery 服务提供 `DOJO_EPSS_VULNCHECK_API_TOKEN`、`DOJO_EPSS_VULNCHECK_API_TOKEN_FILE`、`DD_DOJO_EPSS_VULNCHECK_API_TOKEN` 或 `DD_DOJO_EPSS_VULNCHECK_API_TOKEN_FILE`,来避免将 token 存储在数据库中。 该库: - 在应用代码中不使用 `eval` 或 shell 执行 - 通过 CSRF 和超级用户检查来保护手动 POST 操作 - 使用有界的 HTTP 重试机制 - 将失败的外部调用记录在更新日志中,而不是破坏正常的 DefectDojo 页面 - 通过针对性的 `save(update_fields=[...])` 写入来更新 Findings ## 开源许可证 Dojo EPSS 采用 BSD-3-Clause 许可证发布。 参见 [LICENSE](LICENSE)。
标签:CISA KEV, DefectDojo, Django, EPSS, GPT, 威胁情报, 子域名突变, 安全运营, 开发者工具, 扫描框架, 漏洞管理, 网络测绘, 请求拦截, 逆向工具