大模型应用
在已有知识库架构与实体定义基础上生成威胁模型(信任边界…
基于知识库中的架构与实体定义,合成信任边界、攻击面和攻击者画像,生成并维护 THREAT_MODEL.md。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
在已有知识库架构与实体定义基础上生成威胁特定
解决思路
- 确认本阶段为 FINDINGS-ONLY / KB-ONLY:绝不读取目标源码,所有输入(architecture.md、entities/*.md、先前的 THREAT_MODEL.md、.mantis_state.json)均为 STATE-RELATIVE,在 state_root/workspace 下读取,绝不加 CODE_ROOT 前缀;跳过 Block A 步骤 2–6,但仍从 state 读取 active_snapshot 用于溯源,绝不因代码根未设置或未 pin 而停止。
- 解析快照溯源:若传入 --snapshot_id 则 CUR 取该值;否则若 state 中 active_snapshot.snapshot_pinned 为 true 则 CUR = active_snapshot.snapshot_id;否则 CUR = 字面量 UNPINNED(降级模式)。
- 计算 PREV_TM:读取现有 workspace/kb/THREAT_MODEL.md 中第一行匹配 ^KB_SNAPSHOT: 的值(trim 后);若文件不存在、无该行或值为空则 PREV_TM = 空字符串。
- 做 SYNC-DELTA 判定(机械式精确字符串相等,不做模糊比较):CUR == "UNPINNED" → SYNC_OCCURRED = true;否则 PREV_TM == "" → true;否则 PREV_TM != CUR → true;否则 PREV_TM == CUR → false。
- 归档旧模型(按 pass):从 workspace/.mantis_state.json 读取 pass_number 作为 N;若缺失或非法,扫描 workspace/archive/ 中匹配 findings_pass_N 或 loopN_findings 的目录并设 N = max_found + 1,无归档则默认 1。若 workspace/kb/THREAT_MODEL.md 存在,先 mkdir -p workspace/archive/kb/,再 COPY(不要 move)到 workspace/archive/kb/THREAT_MODEL_pass_${N}.md;文件不存在则跳过。所有路径为 STATE-RELATIVE。
- 读取合成后的知识库:读 workspace/kb/architecture.md 了解数据流与高层设计;读 workspace/kb/entities/ 下的文件了解各组件及 /mantis-architecture 阶段映射的历史约束或漏洞模式。
- 分析信任边界:评估各实体以确定信任边界位置——不可信数据在哪里跨入可信上下文?哪些组件暴露于外部输入?
- 合成威胁模型并直接写入 workspace/kb/THREAT_MODEL.md(覆盖旧文件);使用文件写入工具直接落盘,不要在聊天响应中输出威胁模型文本。
- 写入 System Overview Summary:从 architecture.md 提炼的简明摘要。
- 写入 Deployment Intent:只能写 Intent: PRODUCTION 或 Intent: SAMPLE_OR_TEST_ONLY 之一。SAMPLE_OR_TEST_ONLY 是 FAIL-CLOSED 的,仅当以下五项检查全部为 TRUE 时才可写:1) entities/*.md 中无任何实体被归类为 CRITICAL 或 STANDARD 可用性;2) architecture.md 未提及任何外部可达的服务、守护进程、服务器、API 或网络端点,也未提及任何部署/打包描述符(systemd、Dockerfile/docker、kubernetes/k8s/helm、负载均衡、cloud/VPC/IaC、CI/CD 发布或 release);3) KB 未描述任何可安装/可发布的包或运行时入口点(如 console_scripts/entry_points、main()/服务二进制、已发布的库或包清单);4) KB 中引用的每个组件/路径都完全位于 test/sample 目录下(路径含 test、tests、example、examples、sample、samples、tutorial、demo、docs、fixtures 之一),且无一位于 src、lib、pkg、internal、cmd、app、server、core 等生产源码根下;5) 无任何实体记录真实的(非 mock、非测试)不可信外部输入跨信任边界进入特权/生产逻辑。任一为 FALSE,或 KB 未提及/不确定,必须写 Intent: PRODUCTION。同步后(SYNC_OCCURRED == true)必须基于当前 KB 从头重跑该清单,不得继承先前的 Intent 判定。
- 写入 Trust Boundaries:清晰严谨地定义不可信输入与内部可信状态相遇之处,引用具体实体(如 [Auth Module](entities/auth_module.md))。
- 写入 Threat Actors & Vectors:定义潜在攻击者画像(如 Unauthenticated Network Attacker、Malicious Local User)及其可触及的具体边界。
- 写入 High-Risk Assets:攻击者想破坏的数据、执行权限或可用性目标;对可用性目标按 KB 分类为 CRITICAL(中断即 24/7 即时运营影响)、STANDARD(重要运营,短暂停机可容忍)、LOW_CRITICALITY(非阻塞工具,中断仅轻微烦扰)。
- 打上溯源戳并保存:workspace/kb/THREAT_MODEL.md 的第一行必须是 KB_SNAPSHOT: 加 CUR(如 KB_SNAPSHOT: <CUR>,降级模式为 KB_SNAPSHOT: UNPINNED)。
- 若 SYNC_OCCURRED == false(快照自上次模型未变):可复用先前模型实质内容,但必须在 KB_SNAPSHOT: 行的紧下一行插入 STALE 横幅:> STALE: Threat model NOT re-evaluated this pass; carried unchanged from snapshot <CUR>.;若 SYNC_OCCURRED == true:不得输出 STALE 横幅,本 pass 需重新推导每个章节(含 Deployment-Intent 清单)。
- 直接保存到 workspace/kb/THREAT_MODEL.md(STATE-RELATIVE;旧文件已在步骤 0d 复制到 pass 归档);使用文件写入工具,不要将模型打印到聊天;完成后通知用户。
适用边界 · 注意事项
- 不要用于分析源代码或从 JSONL 文件中提取原始学习内容。
- 本阶段绝不读取目标源码,也不使用 --snapshot_root(仅为接口统一而接受,实际不使用)。
- 当 snapshot_pinned 为 true 时,绝不在 CODE_ROOT 下写入;任何编译、生成或写入产物的命令必须在私有影子副本(mktemp -d)中运行,不得以 cwd=CODE_ROOT 运行。