← 返回首页

实验 00:立项与威胁建模

实验 00:立项与威胁建模

本实验即综合实践项目(capstone)M0。你将从零立项,并对派生的种子工程完成第一份威胁建模 + 风险登记表。这是整学期工程的「地基」,后续 M1-M7 都在它之上演进。

1. 实验目标

完成本实验后,在里程碑报告中对照能力框架自评:点亮 簇①·L1(认知)+ 簇①·L2(实践)

2. 环境准备

种子应用 app.py 故意预留了攻击面(弱口令、SQL 拼接、智能体(Agent)端点),它们就是本次威胁建模的真实素材

3. 任务清单

任务 A:技术选型 + 仓库骨架

  1. 派生种子工程到课程 GitLab,克隆到本地,确认 python app.py 可启动并访问 /login
  2. 在仓库根创建 docs/ 目录,本实验的所有产物提交到 docs/m0/ 下。
  3. docs/m0/tech-stack.md 记录技术选型:
  4. 建立里程碑节奏:在仓库根 README.md 追加一节「里程碑进度」,列出 M0-M7 及计划截止日期。

交付物:可运行的仓库 + docs/m0/tech-stack.md + 更新后的 README.md

任务 B:资产清单 + CIA 标注

阅读 app.py 全文,识别系统中的信息资产,为每个资产标注其最受关注的 CIA 属性。

docs/m0/assets.md 产出下表(至少覆盖以下资产,可补充):

资产 类型 位置 C I A 说明(为何该属性最重要)
用户口令(明文存储) 凭证 USERS 字典 H M L 泄露即等于账户沦陷 → 机密性优先
会话 cookie 状态 session H H M 劫持 = 身份冒充
订单数据 业务数据 orders M H M 篡改/越权读取
应用密钥 secret_key 配置 app.secret_key H H L 泄露可伪造会话
智能体查询输入 不可信输入 /api/agent body M H M 注入入口
审计日志 取证依据 AUDIT L H M 被篡改则无法追责

提示:结合种子代码中的 USERSsessionorderssecret_key/api/agentAUDIT 逐一对照。

任务 C:STRIDE 威胁建模

对种子工程的关键组件/数据流逐一过 STRIDE 六类,不漏威胁。建议建模对象至少包含:

docs/m0/stride.md 产出下表(每个对象至少识别 2-3 条真实威胁):

对象 STRIDE 类别 威胁描述 触发条件/代码位置 对应破坏的属性
/login S 假冒 弱口令(admin/admin123)可被字典爆破 USERS 明文弱口令 认证
/login I 信息泄露 登录失败/成功响应可枚举有效用户名 login.fail vs login.success 机密性
/orders T 篡改 user 参数字符串拼接 → SQL 注入可改/删数据 q = f"... WHERE user = '{user}'" 完整性
/orders E 提权 注入可读取/篡改他人订单,越权访问 同上,无行级授权 授权
/api/agent T 篡改 间接提示词注入让 LLM 调用非白名单工具 body.get("tool") 直传 完整性/授权
call_tool R 否认 审计仅记 info/warning,缺用户/tool 完整链路 AUDIT.info 字段不全 不可抵赖
app.db I 信息泄露 SQLite 文件可直接下载/读取 部署时未隔离文件 机密性

严格要求:威胁必须对应到 app.py 的具体代码或部署事实,禁止泛泛而谈。每条至少给出「代码位置」或「触发条件」。

任务 D:风险登记表(含 CVSS 评分)

为任务 C 识别出的高优先级威胁(建议至少 5 条)打 CVSS 3.1 Base 分,产出 docs/m0/risk-register.md

ID 威胁(来自任务 C) CVSS 向量 Base 分 等级 缓解措施(留给后续 M) 责任里程碑
R1 弱口令爆破 /login AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H 9.8 严重 口令哈希 + 失败计数 + 锁定 M1
R2 /orders SQL 注入 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H 8.8 参数化查询 + 输入校验 M3
R3 智能体间接注入调用高危工具 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N 8.1 强化白名单 + 人在回路 + 输出过滤 M6
R4 会话密钥泄露致伪造 AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:N 8.6 安全随机密钥 + 密钥轮换 M1
R5 审计日志可被篡改 AV:L/AC:L/PR:H/UI:N/S:U/C:N/I:H/A:N 4.5 集中日志 + 只读追加 + 时间戳签名 M5

评分工具:NVD CVSS 3.1 计算器。等级划分:0.1-3.9 低 / 4.0-6.9 中 / 7.0-8.9 高 / 9.0-10.0 严重。 CVSS 完整推导见 https://github.com/c4pr1c3/cuc-ns-ppt/blob/master/chap0x02.md。 R5 是贯穿范式「可观测与可验证的安全」的 M0 伏笔:审计日志若不可信,一切防御有效性都无从证明(M5 闭环处置)。

AI 助教适配注意事项

本里程碑由 AI 助教(ns4ai-review)按 §4 量规做确定性证据采集 + LLM 档位裁定。提交时注意:

4. 交付与量规

在仓库 docs/m0/ 下提交以下文件——在 milestone/m0 分支上完成、push、开 MR @ 助教(详见 Git 操作指南):

docs/m0/
├── tech-stack.md        # 任务 A:技术选型 + 里程碑节奏
├── assets.md            # 任务 B:资产清单 + CIA 标注
├── stride.md            # 任务 C:STRIDE 威胁建模
└── risk-register.md     # 任务 D:风险登记表(含 CVSS)

里程碑报告(docs/m0/report.md)需包含:做了什么 / 点亮哪些能力簇×级 / 踩到什么坑 / 对后续 M 的建议。

评分量规(绑定簇①·L2,满分 100)

维度 权重 优秀 [90,100] 合格 [60,90) 不合格 [0,60)
完成度 0.30 资产识别完整;仓库可运行 + 分支/MR 规范 + 报告完整 覆盖主要资产;基本规范 关键资产缺失;无法运行/未开 MR
深度 0.25 STRIDE 六类穷举且每条挂代码位置;CVSS 向量与分数自洽、等级合理 威胁覆盖多但精度一般;能打分但依据弱 仅泛泛列举;分数随意
AI 双向 0.05 技术选型明确写出 M6 计划接入的 LLM 提供方与方式 仅在 README 提及 AI 无任何 AI 铺垫
安全严谨 0.25 威胁建模严格对应 app.py 代码位置/部署事实,CIA 标注有依据 大部分威胁可对应代码 威胁与代码脱节,空泛
自评 0.15 report.md 能力自评与作品一致 有自评勾选 无自评

5. 能力自评

完成本实验后,在 docs/m0/report.md 末尾填写能力自评(对照 capability-framework.md):

簇 × 级 能力描述 是否点亮 证据
①·L1 复述 CIA/STRIDE/CVSS,识别资产与威胁 课堂快问快答 + 本实验资产/威胁识别
①·L2 对一个系统做威胁建模 + CVSS 评分 M0 的 stride.md + risk-register.md

自评须与作品一致;M7 综合收口时会回看这份自评矩阵。下一单元 U1(M1 安全基线)将把这里识别出的认证/会话/口令风险落到代码