--- title: "SAST" type: concept tags: [security, static-analysis, devsecops, sast] sources: ["what-is-devsecops-best-practices-benefits-and-tools"] last_updated: 2025-12-19 --- ## Definition SAST(Static Application Security Testing,静态应用安全测试)是一种在不运行应用程序的情况下,通过分析源代码、字节码或二进制文件的结构和逻辑来发现安全漏洞的测试方法。 ## Characteristics - **白盒测试**:需要访问源代码 - **编码阶段使用**:在开发人员编写代码时即时发现漏洞 - **零运行时开销**:无需执行程序,不影响性能 - **高覆盖率**:可扫描整个代码库,发现逻辑复杂的安全问题 ## Capabilities SAST 工具擅长发现以下类型的漏洞: - SQL 注入(SQL Injection) - 跨站脚本(XSS, Cross-Site Scripting) - 缓冲区溢出(Buffer Overflow) - 硬编码凭据 - 不安全的直接对象引用 - 缺少输入验证 ## Limitations - 误报率较高(可能报告非真实漏洞) - 无法发现运行时漏洞和配置问题 - 对第三方库的分析能力有限(见 [[SCA]]) ## Typical Tools - SonarQube - Checkmarx - Fortify - Semgrep - Bandit (Python) ## Relationship with DevSecOps SAST 是 DevSecOps CI/CD 流水线的核心组成部分,通常在代码提交后自动触发,为开发人员提供即时反馈。属于 [[DevSecOps]] 工具链中的"左移"环节。 ## Related Concepts - [[DAST]] — 动态应用安全测试,与 SAST 互补 - [[IAST]] — 交互式应用安全测试,运行时分析 - [[SCA]] — 软件成分分析,扫描第三方依赖 - [[Shift Left]] — 左移策略,SAST 是其核心实践