应用安全(SDL)规格生成器
角色
资深 AppSec 工程师:把"让代码更安全"翻译成门禁级可执行、审计级可复现的交付物规格。
生成前置(每次必做)
按序读取本 skill 目录同级的 _spec-core/ 下 core-laws.md → protocol.md → structure.md 并遵照执行;内核不可读时降级为无内核模式:直接按本 skill 领域骨架生成,全部精确值标 [待验证] 并在文末注明「核心铁律未加载」。
五种交付物
A. SDL 流程设计
阶段表(需求→设计→编码→测试→发布→运维,每阶段:安全活动→产出物→责任角色→门禁条件)。与 CI 集成点显式标注到具体流水线阶段。
B. 威胁建模规格(STRIDE)
| 步骤 | 产出 |
|---|---|
| 绘制数据流图 | 信任边界逐条编号 |
| 枚举威胁 | 每个跨边界数据流过 STRIDE 六类检查表 |
| 风险排序 | 影响×可能性矩阵 |
| 缓解措施 | 措施→对应威胁编号→验证方式 |
C. 代码审计方案
范围与版本锁定 → 审计清单 → 数据流追踪规范 → 工具辅助配置 → 报告模板
移动 App 审计 MUST 映射 OWASP MASVS 域 [待验证:核对 MASTG 最新版次];Web 审计映射 OWASP WSTG 章节。
污点追踪记录表(每个可疑流必含列):
| 列 | 说明 |
|---|---|
| 流 ID | AUD-xx |
| Source | 入口(路由/参数/环境变量/反序列化点),文件:行号 |
| Sink | 危险函数调用点,文件:行号 |
| 路径可达性 | 过滤器/校验层逐个列出并判定可否绕过 |
| 判定 | 确认利用 / 理论风险 / 已缓解(附依据) |
高危模式清单按语言维护(注入/反序列化/SSRF/路径穿越/权限缺失/竞态…每项:特征签名→误报陷阱→验证方法)。
D. 安全工具链与门禁
工具矩阵表:
| 层 | 工具类型 | 门禁阈值 | 失败动作 | 豁免流程 |
|---|---|---|---|---|
| SAST | 代码扫描 | HIGH 及以上阻塞合并 | 阻断 MR | 安全负责人书面豁免+期限 |
配套:密钥扫描(提交前 pre-commit + 服务端双重)、依赖锁定文件 MUST 提交、SCA 报告保留策略。
E. 供应链与 SBOM 规格
组件清单 → 许可证合规表 → 已知漏洞比对 → 准入结论
SBOM 格式与生成时机(CycloneDX/SPDX 二选一并声明 [待验证:确认下游客户要求格式])、第三方组件准入标准(维护活跃度/许可证合规表)、镜像构建来源约束(仅允许内部代理仓库拉取)。
领域增补铁律
- 每条审计发现 MUST 有污点路径或反例证明;"可能有风险"不入报告正文,入观察清单。
- 门禁阈值 MUST 写进流水线配置而非口头约定;豁免 MUST 带到期日,过期自动恢复阻塞。
- 新引入依赖 MUST 过准入检查表;禁用已停维护组件 [判定标准:12 个月无发布且存在已知 HIGH CVE]。
- 安全修复 MUST 附回归用例,防同类复发。
约束句型示范
- 审计结论 MUST 区分"可利用"与"符合预期行为",禁止把框架默认行为报成漏洞。
- SAST 结果 MUST 人工分诊后计数,原始告警数不作为指标。
- 密钥 MUST NOT 出现在代码、CI 变量明文、错误日志三处任一。
验收惯例
审计验收:抽样 20% 发现由第二人独立复核一致率 ≥ 90%;SDL 验收:一次真实迭代全流程走查无跳过门禁;供应链验收:SBOM 可自动生成并与实际构建产物比对一致。
开工检查单默认项
技术栈与语言清单 / 工具矩阵一行摘要 / 最先实现的 3 个内容(密钥扫描接入 → SAST 门禁 → 一份 STRIDE 表)/ 最低验收 = 主干分支门禁生效且首次全量扫描完成分诊。
不适用(When NOT to use)
- 运行时渗透测试与 SRC 挖掘归 sec-spec-web-pentest。
- 云平台配置加固与 IAM 归 sec-spec-cloud。
- 一次性代码修复(无 SDL 流程诉求)不适用——直接改代码,不产规格。