在代码发布前发现安全漏洞是保障应用安全的关键环节。SAST(Static Application Security Testing,静态应用安全测试)通过静态分析源代码,在不运行程序的情况下识别代码缺陷和安全漏洞,帮助开发团队在开发早期修复问题、降低修复成本。
功能介绍
SAST 对上传或提交的源代码进行静态分析,扫描代码中的安全漏洞和编码缺陷。与 SCA(软件成分分析)关注第三方依赖不同,SAST 聚焦于自研代码逻辑,检测以下类型的安全问题:
SQL 注入、命令注入等注入类漏洞
跨站脚本(XSS)攻击
敏感信息硬编码(如密钥、密码明文存储)
不安全的加密算法使用
权限控制缺陷
其他 OWASP Top 10 安全风险
SAST 不需要运行代码或部署应用环境,直接分析源代码文本即可完成检测,适用于在开发阶段尽早发现并修复安全问题。
适用场景
场景 | 说明 |
代码提交前审查 | 在代码合入主分支前,通过 SAST 扫描发现安全漏洞,避免问题代码进入生产 |
定期安全巡检 | 对已有代码项目定期执行 SAST 扫描,持续监控代码安全状态 |
合规审计 | 满足安全合规要求,提供代码安全扫描报告作为审计依据 |
触发 SAST 扫描
SAST 扫描支持以下两种触发方式,根据项目的 CI/CD 环境选择:
手动创建项目:适用于未接入 GitLab CI 的项目。新建项目时在扫描类型中勾选 SAST,上传代码后手动触发扫描。详细操作步骤请参见手动上传扫描。
自动注册项目(GitLab CI):适用于已接入 GitLab CI 的项目。通过 GitLab CI Pipeline 自动触发,代码提交或创建 Merge Request 时自动执行 SAST 扫描。详细操作步骤请参见自动注册项目。
两种方式均在创建项目时选择扫描类型包含 SAST 即可启用静态安全分析能力。
查看 SAST 扫描结果
扫描完成后,按以下步骤查看 SAST 检测结果:
登录代码安全控制台。
在项目列表页面,找到目标项目,单击操作列的查看。
在项目的任务列表中,单击目标扫描任务操作列的查看,进入扫描结果页面。
单击 SAST 页签,查看静态应用安全测试的详细结果。
结果解读
SAST 页签展示本次扫描发现的代码安全问题列表,主要包含以下字段:
字段 | 说明 |
缺陷名称 | 安全问题的类型和具体说明,如"通过文件路径参数注入操作系统命令""SpEL 表达式注入导致远程代码执行"等 |
等级 | 漏洞的严重程度(严重、高危、中危、低危),帮助开发者优先处理高风险问题 |
CWE ID | 漏洞对应的通用缺陷枚举(Common Weakness Enumeration)编号,便于关联标准缺陷分类 |
文件路径 / 行号 | 存在安全问题的源代码文件路径和行号,便于开发者快速定位问题代码 |
状态 | 缺陷的处置状态,便于跟踪修复进度 |
单击具体缺陷条目可查看修复建议和安全编码规范,指导开发者正确修复问题。建议优先处理严重和高危等级的漏洞,确保代码在发布前消除关键安全隐患。
常见问题
SAST 和 SCA 有什么区别?
SAST 分析项目自身的源代码,发现代码逻辑中的安全漏洞(如注入、XSS);SCA 分析项目引用的第三方开源组件,发现已知的 CVE 漏洞。两者互补,建议同时启用以获得全面的安全检测覆盖。详细对比请参见软件成分分析 SCA。
SAST 扫描需要多长时间?
扫描时间取决于代码量大小和复杂度,系统会自动完成分析并在任务列表中更新扫描状态。