jmscory/ThreatFlow

GitHub: jmscory/ThreatFlow

ThreatFlow:基于OCaml的威胁情报推理引擎,提供可解释的漏洞修复建议。

Stars: 0 | Forks: 0

# 威胁流 ![版本](https://img.shields.io/badge/version-1.0.0-blue) ![许可证](https://img.shields.io/badge/license-MIT-green) ![OCaml](https://img.shields.io/badge/OCaml-5%2B-f28f1c) ThreatFlow 是一个用 OCaml 编写的确定性威胁情报推理引擎。它将 CVE、KEV、ATT&CK 和行为者情报融合到一个类型图中,然后产生优先级高、可解释的修复建议。 ## 目录 - [什么是 ThreatFlow](#what-threatflow-is) - [架构快照](#architecture-snapshot) - [亮点](#highlights) - [为什么确定性很重要](#why-deterministic-matters) - [系统概述](#system-overview) - [数据需求](#data-requirements) - [上游数据源映射](#upstream-feed-mapping) - [快速入门](#quick-start) - [商业案例研究](#business-case-study) - [场景](#scenarios) - [演示镜像](#demo-images) - [本地工作站](#the-native-workstation) - [验证](#validation) - [基准测试](#benchmarking) - [存储库布局](#repository-layout) - [文档](#documentation) - [限制](#limitations) - [许可证](#license) ## 什么是 ThreatFlow ThreatFlow 是一个面向分析师的漏洞操作推理系统。 它旨在回答: - 哪些漏洞现在最紧急? - 支持这种排名的证据是什么? - 哪些威胁行为者和 ATT&CK 技术与每个暴露相关? ThreatFlow 是基于规则的且可重复的。对于相同的输入数据,它会产生相同的结果。 ## 架构快照 ``` flowchart LR A[Local CVE Data] --> E[Typed Ingest] B[KEV Data] --> E C[ATT&CK Data] --> E D[Actor Data] --> E E --> F[Security Graph] F --> G[Rule Inference] G --> H[Exposure and Confidence Scoring] H --> I[Explainable Recommendations] I --> J[CLI Search Query Explain Export] ``` ## 演示镜像 以下视觉图像是从捆绑的样本数据生成的,并从本地图中导出的。 知识图谱快照: ![ThreatFlow 知识图谱](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/6f50ee881d115519.png) 详细的 APT29 业务上下文图: ![APT29 详细图](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/d643119af0115521.png) ## 亮点 - 对 CVE、CISA KEV、MITRE ATT&CK 和行为者记录进行类型化摄取。 - 内存中的知识图谱,具有遍历和路径分析。 - 基于规则的 Actor -> 技术 -> CVE 推理。 - 暴露和置信度评分,包括因素分解。 - 人类可读和 JSON 格式的可解释模板。 - 基于 Cmdliner 的专业 CLI,具有搜索、查询、解释、摄取和图形导出。 ## 为什么确定性很重要 ThreatFlow 是为分析师需要证明决策、回放结果和比较跨时间输出的环境而设计的。这带来了比不透明的推荐系统三个实际优势: - 可重复性:相同的数据集每次都会产生相同的优先级和解释。 - 可审计性:每个排名都与可见的证据相关联,例如 KEV 存在、行为者活动、ATT&CK 技术和 CVSS 严重性。 - 运营信任:团队可以调整规则、审查输出差异,并在受监管或事件后环境中使用引擎,而无需争论隐藏的模型行为。 ## 系统概述 ThreatFlow 管道: 1. 解析和验证威胁情报源。 2. 构建一个类型化安全图。 3. 推断额外的关系。 4. 通过暴露和置信度评分漏洞。 5. 发出可解释的建议和图形导出。 主要运行时数据源是本地 JSON 文件: - `data/cves.json` - `data/kev.json` - `data/techniques.json` - `data/actors.json` 核心执行通过 CLI 可执行文件完成: - `threatflow search` - `threatflow query` - `threatflow explain` - `threatflow ingest` - `threatflow graph export` ## 数据需求 ThreatFlow 预期在数据目录(默认:`data/`)中存在本地 JSON 文件。 正式数据合同在 [docs/DATA_CONTRACTS.md](docs/DATA_CONTRACTS.md) 中记录,并且可机器读取的架构在 [schemas](schemas)下可用。 运行时所需: - `data/cves.json` - `data/kev.json` - `data/techniques.json` - `data/actors.json` 主要的 CLI 工作流程(`search`、`query`、`explain`、`graph export`)从所有四个文件构建一个引擎。缺少文件或无效的 JSON 将导致启动失败。 最小预期的结构: - `cves.json`:CVE 记录数组,具有如 `id`、`description`、`cvss`、`published`、`cwes`、`affected_products` 等字段。 - `kev.json`:KEV 记录数组,具有如 `cve_id`、`vendor_project`、`product`、`date_added`、`due_date`、`known_ransomware_use` 等字段。 - `techniques.json`:ATT&CK 技术记录数组,具有如 `id`、`name`、`tactics`、`platforms` 等字段。 - `actors.json`:行为者记录数组,具有如 `id`、`name`、`aliases`、`motivations`、`sophistication`、`targeted_sectors`、`techniques`、`exploited_cves` 等字段。 数据质量预期: - ID 应该在文件之间匹配以增强推理(例如 `actors.exploited_cves` 应该引用 `cves.id`,并且 `actors.techniques` 应该引用 `techniques.id`)。 - 空文件是有效的 JSON,但会降低输出质量。 - `ingest` 可以在完整运行之前验证单个源文件。 ## 上游数据源映射 在用真实情报导出替换样本文件时使用此映射。 - NVD CVE 数据源 -> `data/cves.json` - CISA KEV 数据源 -> `data/kev.json` - MITRE ATT&CK STIX 包 -> `data/techniques.json` - 内部行为者跟踪或 CTI 供应商导出 -> `data/actors.json` 上游数据源的验证工作流程: ``` dune exec threatflow -- ingest cves path/to/nvd-feed.json dune exec threatflow -- ingest kev path/to/cisa-kev.json dune exec threatflow -- ingest attack path/to/enterprise-attack.json ``` 行为者数据应采用 ThreatFlow 行为者 JSON 形状: ``` dune exec threatflow -- ingest actors data/actors.json ``` 验证后,将标准化文件放置在 `data/` 中,使用标准名称,并运行正常命令(`search`、`query`、`explain`、`graph export`)。 ## 快速入门 要求: - opam - OCaml - Dune 安装依赖项: ``` opam update opam install . --deps-only --with-test ``` 构建和验证: ``` dune build dune runtest ``` 运行首次演示体验: ``` ./examples/demo.sh ``` 如果您想手动执行主要命令: ``` dune exec threatflow -- search --cvss-min 0 --limit 5 dune exec threatflow -- query "FIND CVE WHERE cvss >= 8" dune exec threatflow -- explain CVE-2024-0001 --format human ``` ## 商业案例研究 场景:一个漏洞操作团队正在处理新的待办事项列表,并需要决定是否中断计划中的面向互联网产品的维护问题。 来自捆绑的样本集的输入数据: - `CVE-2024-0001` 是 `EdgeGateway` 上的远程代码执行问题,CVSS 为 `9.8`。 - 该 CVE 存在于 KEV 数据集中,并标记为已知勒索软件使用。 - 威胁行为者数据将 `ALPHA SPIDER` 与 CVE 以及同一攻击路径中的 ATT&CK 技术相关联。 ThreatFlow 推断: - 该 CVE 在捆绑的数据集中排名第一。 - 解释将紧迫性与 KEV 存在、勒索软件关联、ATT&CK 技术覆盖和行为者兴趣联系起来。 - 结果不仅仅是“高严重性”,而是“高严重性,具有活跃的利用上下文和对手相关性。” 为什么这对运营很重要: - 补丁团队可以证明将 `EdgeGateway` 修复工作提前于较低上下文漏洞。 - 领导层获得非计划维护的防御性理由。 - 分析师可以将解释输出作为审计证据,而不是依赖于主观的优先级注释。 此场景的建议操作: - 首先修补或隔离受影响的 `EdgeGateway` 暴露 - 验证面向公共访问路径的补偿性控制措施 - 在修复票据和变更审批轨迹中使用解释输出 ### APT28 配置文件注释(自带数据) 捆绑的样本行为者集包括 `ALPHA SPIDER` 和 `APT29`。如果您的环境跟踪 APT28(也称为 `FANCY BEAR`),请将其作为 `data/actors.json` 中的第一类行为者记录添加,以便 ThreatFlow 可以将其包含在推理和解释输出中。 ThreatFlow 中 APT28 的实用建模指南: - 将已知别名(`APT28`、`FANCY BEAR`、`STRONTIUM`)映射到 `aliases` - 保持 `motivations` 与您的 CTI 团队使用的间谍活动和破坏报告保持一致 - 将 `targeted_sectors` 限制在您自己的观察到的目标模式 - 仅包括您可以在证据中防御的技术和 CVE 示例行为者记录形状: ``` { "id": "TA-APT28", "name": "APT28", "aliases": ["FANCY BEAR", "STRONTIUM"], "motivations": ["espionage"], "sophistication": "strategic", "targeted_sectors": ["government", "defense", "energy"], "techniques": ["T1190", "T1068"], "exploited_cves": ["CVE-2024-0100"] } ``` 添加 APT28 数据后,验证并重新运行排名/解释命令: ``` dune exec threatflow -- ingest actors data/actors.json dune exec threatflow -- search --cvss-min 7 --limit 10 dune exec threatflow -- explain CVE-2024-0100 --format human ``` ## 场景 投资组合优先级: ``` dune exec threatflow -- search --text CVE --cvss-min 7 --limit 10 ``` 分析师 DSL 查询: ``` dune exec threatflow -- query "FIND CVE WHERE cvss >= 8" ``` 解释 CVE 的优先级: ``` dune exec threatflow -- explain CVE-2024-0001 --format human dune exec threatflow -- explain CVE-2024-0001 --format json ``` 验证摄取有效负载: ``` dune exec threatflow -- ingest kev data/kev.json dune exec threatflow -- ingest attack data/techniques.json dune exec threatflow -- ingest actors data/actors.json dune exec threatflow -- ingest cves data/cves.json ``` 导出图形工件: ``` dune exec threatflow -- graph export --format json --out artifacts/graph.json dune exec threatflow -- graph export --format mermaid --out artifacts/graph.mmd ``` ## 本地工作站 ThreatFlow 是为在本地以最小依赖项运行而设计的: - 本地 JSON 数据文件,以确保确定性可重复性。 - 不需要外部数据库。 - 以 CLI 为首的工作流程,适用于分析师和工程使用。 这使得它适用于投资组合演示、离线分析和可审计的安全工作流程。 ## 验证 验证通过 Alcotest 套件构建到存储库中。 当前的测试覆盖率包括: - 摄取解析和验证行为 - 图插入/遍历/删除行为 - 解析器语法行为和错误处理 - 推理和推理准确性 - 可解释性输出 运行所有测试: ``` dune runtest ``` ## 基准测试 运行基线基准: ``` ./bench/run.sh --iterations 5 ``` 收集的指标: - `engine_build`:加载本地 JSON 并构建内存中的引擎 - `query_cvss_ge_8`:运行代表性的 DSL CVE 过滤器 - `explain_cve`:生成面向人类推荐解释 - `graph_to_json`:将当前图序列化为 JSON 捆绑数据集比较目标: - `engine_build` 应保持在 `5.0 ms` 以下 - `query_cvss_ge_8` 应保持在 `1.0 ms` 以下 - `explain_cve` 应保持在 `1.0 ms` 以下 - `graph_to_json` 应保持在 `2.0 ms` 以下 这些目标是针对样本数据集的轻量级回归护栏,旨在捕获核心路径中的明显减速,而不是代表大规模吞吐量声明。 示例输出: ``` ThreatFlow benchmark iterations: 5 dataset: cves=3 techniques=2 kevs=1 actors=2 metric avg_ms best_ms worst_ms target_ms status -------------------------------------------------------------------------- engine_build 0.046 0.044 0.048 5.000 pass query_cvss_ge_8 0.000 0.000 0.001 1.000 pass explain_cve 0.003 0.002 0.003 1.000 pass graph_to_json 0.014 0.012 0.016 2.000 pass ``` 要扩展基准测试套件,请向 `bench/benchmark.ml` 中添加另一个确定性的 `measure` 调用,并保持工作负载与捆绑数据集相关。有关其他说明,请参阅 `bench/README.md`。 ## 存储库布局 ``` ThreatFlow/ artifacts/ # Generated demo images and export outputs bench/ # Minimal benchmark harness and wrapper script bin/ # CLI entrypoint data/ # Sample/local intelligence inputs docs/ # Architecture, explainability, CLI UX, testing strategy examples/ # First-time user demo walkthrough LICENSE # MIT license lib/ # Core modules (ingest, graph, reasoning, DSL, engine) schemas/ # JSON Schema contracts for runtime datasets test/ # Test suites ``` ## 文档 - `docs/ARCHITECTURE.md` - `docs/EXPLAINABILITY_ARCHITECTURE.md` - `docs/CLI_UX.md` - `docs/DATA_CONTRACTS.md` - `docs/TESTING_STRATEGY.md` ## 限制 - 默认数据集是本地样本,不是实时数据源提取。 - 图形可视化导出是 Mermaid 源和渲染图像工件,而不是交互式 UI。 - 评分是确定性和基于规则的;它不是一个机器学习的模型。 ## 许可证 ThreatFlow 在 MIT 许可证下发布。请参阅 [LICENSE](LICENSE)。
标签:Homebrew安装, Web安全扫描, 漏洞数据库