Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 1086

SAST(静态应用安全测试)

审核人Cybersecurity entrepreneur & security researcher

SAST(静态应用安全测试) 是什么?

SAST(静态应用安全测试)在不执行代码的前提下,对源代码、字节码或二进制进行自动化分析,以发现注入、不安全 API 或弱加密等安全缺陷。


SAST 将代码解析为中间表示——抽象语法树(AST)、控制流图(CFG)和数据流图(DFG)——然后应用模式规则或污点分析,来检测映射到 CWE 标识符的不安全构造。污点分析是其核心引擎:它标记不可信的(一个 HTTP 参数、一次文件读取),追踪这些数据如何在变量与函数调用之间传播,并在其未经过公认的净化器(sanitiser)而抵达危险的汇点(sink)(一条 SQL 查询、exec、一个 HTML 响应)时给出检测结果。由于全程不执行任何代码,SAST 可以运行在 IDE、pre-commit 钩子和 CI 中,远在代码交付之前就完成扫描。

它的盲区也早有记载。SAST 在确定性缺陷(SQL 注入、XSS 汇点、硬编码密钥、弱加密)上表现出色,但在运行时不可达的路径上会产生误报,并且会遗漏配置类、认证逻辑类以及仅在运行时才显现的缺陷——因此成熟的项目会将其与 SCA 和 DAST 搭配使用。调优规则集和分诊噪声才是真正的运营成本。OWASP ASVS 和 NIST SSDF 等标准都将静态分析列为一项验证控制。常见引擎包括 Semgrep、GitHub CodeQL(它将代码作为数据库进行查询)、SonarQube、Checkmarx、Fortify 与 Snyk Code。

flowchart LR
  SRC[源代码 / 字节码] --> P[解析为 AST + CFG + DFG]
  P --> T[污点分析 + 规则]
  SO[不可信源] -. 追踪数据流 .-> T
  T --> SK{"是否未经净化器<br/>即抵达汇点?"}
  SK -->|是| F[映射到 CWE 的检测结果]
  SK -->|否| OK[无告警]
  F --> TR[分诊:修复或标记为误报]

示例

  1. 01

    在每个拉取请求上使用 Semgrep 配合 OWASP Top 10 规则集进行扫描。

  2. 02

    使用 GitHub CodeQL 在合并前检测某 Java 服务中的路径遍历漏洞。

常见问题

SAST(静态应用安全测试) 是什么?

在不执行代码的前提下,对源代码、字节码或二进制进行自动化分析,以发现注入、不安全 API 或弱加密等安全缺陷。 它属于网络安全的 应用安全 分类。

SAST(静态应用安全测试) 是什么意思?

在不执行代码的前提下,对源代码、字节码或二进制进行自动化分析,以发现注入、不安全 API 或弱加密等安全缺陷。

如何防御 SAST(静态应用安全测试)?

针对 SAST(静态应用安全测试) 的防御通常结合技术控制与运营实践,详见上方完整定义。

SAST(静态应用安全测试) 还有哪些其他名称?

常见的别称包括: 静态分析, 白盒测试。

相关术语

另见