静态安全测试SAST Skill
适用场景
研发阶段前置防控,静态扫描源码中的安全漏洞。
执行步骤
- 确定扫描范围:本次变更代码优先 + 全量基线。
- 选手段:优先现有工具(SonarQube/Semgrep/CodeQL/Fortify),无工具时按漏洞模式人工走查。
- 按漏洞模式逐类扫描(见下表)。
- 验证:每条疑似漏洞构造攻击场景确认可利用性,排除误报。
- 分级输出:高危(可致数据泄露/命令执行/权限绕过)中危/低危。
漏洞模式清单
| 模式 | 排查要点 |
|---|---|
| SQL 注入 | 字符串拼接 SQL;ORM 原生 SQL 未参数化 |
| XSS | 用户输入未编码输出;innerHTML;富文本过滤绕过 |
| SSRF | 用户可控 URL 直接请求内网;无协议/域名白名单 |
| 越权 | 接口只校验登录不校验数据归属(IDOR) |
| 命令注入 | 用户输入拼进命令执行/脚本 |
| 路径穿越 | 文件操作路径未过滤 ../ |
| 反序列化 | 不可信数据反序列化;fastjson/jackson 危险配置 |
| 文件上传 | 类型/内容/大小未校验;可执行文件落盘 |
| CSRF | 状态变更接口无 CSRF 防护(Token 缺失) |
| 敏感信息 | 日志打印密钥/密码/身份证;异常栈回显客户端 |
规范要点
- 每条漏洞给「攻击场景 + 修复方案」,修复方案要具体(参数化/白名单/编码函数)。
- 误报也要有依据(为什么不可利用),不凭空标注。
- 漏洞清单与代码行号绑定,整改后可复核。
输出模板
| # | 漏洞类型 | 位置 | 攻击场景 | 级别 | 修复方案 |
自检清单
- 扫描范围明确
- 每条漏洞有攻击场景
- 修复方案具体可执行
- 结论分级有依据