跳到主要内容
PROGRAM SEMANTICS & SECURITYSSA IR · SYNTAXFLOW

理解程序的语义,
发现代码的风险。

以编译器级静态单赋值中间表示,深入程序的结构与行为;以 SyntaxFlow 规则,将安全分析的思考转化为可检索、可阅读的知识。

if (flag)truex₁ = 1false / elsex₂ = 2x₃ = φ(x₁, x₂)return x₃ → 1
FIG. 01 · PHI

来自 true 分支,Phi 选择 x₁ = 1。

面向程序语义的静态安全分析Java · Go · PHP · JavaScript · …
I. THE RULE CATALOG

SyntaxFlow 规则库

一个持续演进的程序分析规则集。检索规则,阅读源码,理解分析背后的逻辑。

学习编写规则
规则总数—SYNTAXFLOW RULES
语言分类—MULTI-LANGUAGE
库规则—REUSABLE LOGIC
规则库版本加载中与 Yak 引擎规则源同步
SyntaxFlow规则浏览器
JSON

正在加载规则库

获取 Yak 引擎的最新规则数据…

数据来自官方规则源
1 / 1
II. FOUNDATIONS

从语法结构,走向程序语义。

分析的深度,来自对程序本身的理解。

01

统一的中间表示

将不同语言的程序编译为 SSA IR。在统一的语义结构上理解赋值、分支与循环,消解语法表象的差异。

静态单赋值形式
02

可追溯的数据流

连接数据流与控制流,跨越文件与过程边界。沿着值的传播路径,研究输入如何影响程序的行为。

过程间分析
03

可阅读的分析规则

用 SyntaxFlow 表达查询、过滤与路径约束。将审计思路写成可执行、可复用的规则,并检视其中的推理逻辑。

SyntaxFlow 规则
AN EXAMPLE IN SYNTAXFLOW

让分析过程可以被阅读。

定位一个调用,追踪它的输入,再检视上游的数据来源。简洁的查询,连接起代码中分散的语义。

理解数据流查询
例 1 · 向上追踪调用参数的数据流
// 定位调用并追踪输入来源
Runtime.getRuntime().exec(* #-> * as $source)

alert $source
CALL → ARGUMENT → DATA SOURCE
IV. TOOLS FOR PRACTICE

以工具,展开实践。

IRify 将代码扫描与规则分析带入图形工作环境。

获取最新版本…

macOS

Apple Silicon

macOS

Intel

Windows

x64

Linux

x64 · AppImage

Linux

ARM64 · AppImage

需要兼容版本?
安装与使用指南

SyntaxFlow 技术目前仅供技术交流使用。IRify 商业使用及授权二次开发,请联系 Yak Project。