静态应用安全测试
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/static-application-security-testing-skillhub。
技能介绍
为什么需要它
安全漏洞通常不是集成阶段突然出现的,而是代码在提交、合并、依赖引入和配置演进中逐渐积累的。等到运行时告警、渗透测试或生产事故时,定位成本已经很高。这个技能面向的是在不执行应用的前提下审查源码:它不是跑一遍功能测试,而是扫描仓库中的安全模式、数据流和常见反模式,帮助开发者在 PR 阶段就看到 SQL 注入、跨站脚本、硬编码密钥、不安全反序列化、密码滥用等问题。
它如何工作
技能先检测仓库的主要语言、框架与既有分析配置,例如 .semgrep.yml、CodeQL 查询包或 .bandit 文件;这决定后续使用哪些规则集。然后按技术栈选择工具:Semgrep 做多语言模式匹配,CodeQL 做深度语义分析,Bandit 专注 Python,ESLint 安全插件处理 JavaScript/TypeScript。扫描时保留漏洞类型、文件、行号、严重程度、CWE 和描述;多工具可并行,结果再合并、去重,并按真正阳性、假阳性和需人工复核分类。
报告按严重性与类别分组,给出易受攻击片段、风险解释、修正代码、CWE 与 OWASP 映射。最后可把扫描接入 GitHub Actions、GitLab CI、Jenkins 或 Azure DevOps,在受保护分支设置质量门禁,并用 SARIF、JSON、JUnit XML 或 Markdown 输出。
适用边界与注意点
- 自动生成代码、
vendor目录、迁移文件常产生噪音,可用.semgrepignore或 CodeQL 路径过滤排除。 - Jinja2、ERB、JSX 等模板语言解析能力有限,可能需插件或补充扫描器。
- 测试代码常包含故意不安全写法,建议为测试目录单独设规则或阈值。
- 大型 monorepo 的完整 CodeQL 可能较慢,PR 可只扫变更文件,夜间再全量扫描。
- 该技能主要看当前工作树;Git 历史中的密钥需配合
Gitleaks或TruffleHog等工具。
使用场景
- 为 Python Flask 仓库接入 Semgrep,扫描 SQL 注入与硬编码密钥并生成修复建议。
- 用 CodeQL 对 Java 服务执行不安全反序列化查询,把结果输出为 SARIF 供 GitHub Code Scanning 使用。
- 多语言 monorepo 需要并行运行 Semgrep 与 CodeQL,合并去重发现后按严重程度分组汇报。
- 在 GitLab CI 的合并请求阶段增加质量门禁,阻断引入关键或高严重性漏洞的代码。
适合人员
- 需要在代码审查阶段拦截安全漏洞的研发工程师,希望先发现 SQL 注入、XSS 和硬编码密钥。
- 负责 CI 流水线的 DevOps 工程师,想把 SAST 扫描接入 PR 门禁并统一输出 SARIF。
- 维护多语言代码库的安全负责人,希望用 Semgrep 与 CodeQL 分层分析并减少假阳性。