用途
该技能用于对代码变更集进行对抗性安全审计。其核心理念是:威胁建模是为攻击者生成假设——像攻击者一样走查变更,找出不可信输入从何处进入、跨越了哪条信任边界、在另一侧获得了什么。每一条未被审计的路径都是攻击者的免费一步。
适用与不适用场景
适用:新增外部暴露面(HTTP 路由、RPC 方法、文件上传);认证/授权变更;对不可信输入的反序列化或解析;新增依赖或大版本升级;加密相关变更;面向公众服务的发布前审查;事故复盘。
不适用:无信任边界变化的内部重构;纯性能优化;仅文档变更;仅内部使用的实验性代码。
主要能力
STRIDE 威胁模型
对变更涉及的每个组件应用以下提问模板:
- Spoofing(仿冒):主体是谁?身份如何证明?凭证能否被伪造、重放或窃取?是否强制 MFA/双向认证?
- Tampering(篡改):哪些输入跨越信任边界?是否按显式 schema(Zod/Pydantic/serde)校验?消息是否受完整性保护(HMAC/签名/TLS)?
- Repudiation(抵赖):安全相关操作是否记录操作者、时间戳与结果?日志是否仅追加/防篡改?
- Information Disclosure(信息泄露):错误路径、日志、遥测中返回哪些数据?PII/密钥是否被序列化?是否处理时序侧信道(常量时间比较)?
- Denial of Service(拒绝服务):输入是否有界(大小、数量、深度)?解析是否限制资源(zip 炸弹、billion-laughs、ReDoS)?外部调用是否限流?
- Elevation of Privilege(权限提升):新代码以何种权限执行?是否遵循最小权限?输入能否改变权限(路径穿越、SQL 注入、反序列化 gadget)?
对每个“是”或“不明确”的回答,记录一条带严重级别与修复责任人的发现。
OWASP Top 10(2021)走查
- 失效的访问控制:用 git grep 定位授权相关代码并追踪策略。
- 加密失败:用 git grep -E 查找弱原语(MD5、SHA1、DES、Random() 等),并补充各生态模式(Math.random、secrets.choice、Mersenne 常量)。
- 注入:用 ast-grep 模式查找未参数化查询、shell 拼接、模板求值。
- 不安全设计:威胁模型走查,交叉核对 STRIDE。
- 安全配置错误:TLS/CORS/CSP/cookie 标志/调试开关。
- 易受攻击与过时组件:按语言族使用 CVE 扫描器。
- 身份识别与认证失败:token TTL、刷新、会话固定、MFA。
- 软件与数据完整性失败:lockfile 固定、签名验证产物、CI 溯源。
- 安全日志与监控失败:审计日志覆盖;认证失败/权限提升告警。
- 服务端请求伪造:出站允许列表;URL 输入的 SSRF 防护。
并行依赖审计工具
按语言族提供 CVE 扫描、密钥/历史扫描与 SBOM 生成工具:
- Rust:cargo audit、cargo deny check advisories;gitleaks、trufflehog;cargo cyclonedx、syft
- Python:pip-audit、safety check;gitleaks、detect-secrets;cyclonedx-py、syft
- JavaScript/TypeScript:npm audit、pnpm audit、bun audit;gitleaks、trufflehog;cyclonedx-bom、syft
- Go:govulncheck、nancy;gitleaks、trufflehog;cyclonedx-gomod、syft
- Java/Kotlin:OWASP Dependency-Check、gradle dependencyCheckAnalyze;gitleaks、trufflehog;CycloneDX Gradle/Maven、syft
- OCaml:opam audit、opam-repository advisory feed;gitleaks、detect-secrets;syft(文件系统)
工具使用约定:用 fd -e <ext>(而非 find);用 git grep -n -F 'literal'(而非 grep);用 bat -P -p -n(而非 cat)。
使用方式
将本技能应用于代码变更集,按上述 STRIDE 模板与 OWASP 清单逐项走查,结合对应语言族的依赖审计工具执行 CVE 扫描、密钥扫描与 SBOM 生成,并对每个发现记录严重级别与修复责任人。
反模式(应避免)
- 遗漏式允许列表:把“没有明显问题”当作“安全”。
- 加密即兴创作:手写加密原语。
- 信任客户端:仅在客户端校验。
- 记录密钥:日志中出现 token、PII、会话 cookie。
- 默认放行 ACL:授权检查按需开启。
- 魔法字符串配置:密钥写在源码/环境文件中。
- 过时 SBOM:依赖快照陈旧。
- 跳过威胁模型:未命名资产/参与者/边界就直接套清单。
约束规则
- 默认拒绝。
- 在信任边界校验——对每个输入做 schema 校验。
- 绝不自行实现加密。
- 源码中无密钥——仅用 vault;通过 gitleaks 强制执行。
- 固定并验证——lockfile 入库,强制完整性哈希。
- 记录安全事件——每次认证/授权结果。
- 严重级别是契约——Critical/High 阻止合并。
限制
资料未提供该技能的具体安装命令、运行环境要求、支持的平台版本、收费方式或性能指标,这些信息暂未提供。