antgroup/YASA-Engine
GitHub: antgroup/YASA-Engine
YASA 是一个基于 UAST 统一中间表示的多语言静态分析引擎,提供高精度的代码安全漏洞检测和程序分析能力。
Stars: 250 | Forks: 23
#### [简体中文](README_ZH.md) / [English](README.md)
**YASA** (**Y**et **A**nother **S**tatic **A**nalyzer,发音为“**YA-sa**”)是一个开源的静态程序分析项目。其核心创新在于一种称为**统一抽象语法树**(UAST)的统一中间表示,旨在支持多种编程语言。YASA 构建在 UAST 之上,提供了一个高精度的静态分析框架。用户可以通过编写自定义检查器来扩展其功能,以执行各种程序分析任务——例如 AST 查询、数据流分析和函数调用图分析——并通过 SDK、声明式查询语言 (QL) 或 MCP 暴露功能。
作为一个最初在安全团队内部开发的项目,YASA 还内置了污点分析能力,作为检查器实现,用于检测安全漏洞。
## 组件
### YASA-UAST:统一抽象语法树
[YASA-UAST](https://github.com/antgroup/YASA-UAST) 是一种用于多语言程序分析的中间表示结构。UAST-Parser 将来自不同编程语言的代码解析为统一的抽象语法格式。通过 UAST,不同语言的源代码可以转换为标准化的树结构,从而实现跨多语言的统一分析和处理。
### YASA-Engine:统一多语言分析引擎
统一多语言分析引擎是现代程序分析平台的核心组件。它旨在通过统一的分析框架和方法,实现对多种编程语言的高效、精准分析。同时,借助 AI 能力,它解决了传统程序分析中的链条断裂以及新场景适配成本高等问题。(AI 部分尚未开源。)
### YASA-UQL:统一声明式规则查询语言
支持面向多语言的声明式统一查询规则编写,兼容 CodeQL 语法,在统一跨语言规则集的同时降低了规则编写的门槛。
### YASA-MCP:统一多语言程序分析 MCP
为 LLM 提供原子分析 API,提供对 LLM 友好的程序分析服务。
### YASA-SDK:统一多语言程序分析 SDK
为传统应用提供支持多种编程语言的 SDK 包。它提供了多种粒度的程序分析 API,使集成更加容易,并能在应用内实现高效且易用的程序分析服务。
### xAST
[xAST](https://github.com/alipay/ant-application-security-testing-benchmark) 是一个用于评估 SAST/IAST/DAST 工具能力的开源评估系统。在 YASA-Engine 中,它作为变更后测试的回归目标;在多语言适配过程中,它为语言语法支持提供正向指导。
## 技术优势
### 新语言支持成本低
- YASA 直接基于 UAST 进行建模和分析。在适配新语言时,一旦将其解析为 UAST,即可使用通用层分析器的能力。在支持新语言的包结构之后,即已完成对新语言分析的支持。
### 分析精度高、可度量且多语言统一
- YASA 基于统一的多语言符号执行能力,在静态代码分析中提供了高精度和可扩展性。它天然支持静态分析领域的字段敏感、上下文敏感、对象敏感、路径敏感和流敏感特性。
- 在 YASA 的开发过程中,我们使用 [xAST](https://github.com/alipay/ant-application-security-testing-benchmark) 来评估和验证我们的能力,实现了“能力可度量”。我们在 xAST 评估系统下将 YASA 的性能与其他开源程序分析工具进行了对比:
### 开放且友好
- 引入了统一声明式规则查询语言 YASA-UQL,兼容 CodeQL 语法,首创面向多语言的统一 QL 规则库,使程序分析对工程师更加友好。
- 推出了 YASA MCP(对 LLM 友好)和 SDK(对应用开发友好)。
## 快速开始
[入门指南](https://www.yuque.com/u22090306/bebf6g/evyf4chw26deq8xq)
[安装与部署](https://www.yuque.com/u22090306/bebf6g/gm7b32tcn9vosgll)
## 加入我们
如果您在使用中遇到任何问题,欢迎提交 issue!
关于代码贡献,请参阅 [CONTRIBUTION](CONTRIBUTION.md)
## 资源链接
[官方文档](https://www.yuque.com/u22090306/bebf6g)
[学习资源](https://www.yuque.com/u22090306/bebf6g/sr0y5fqg0kcua5nf)
[社区活动](https://www.yuque.com/u22090306/bebf6g/fn1rauxwtp7z0l1u)
## 开源许可证
Apache License 2.0 - 详见 LICENSE Apache-2.0。
## 致谢
感谢所有为 YASA 项目做出贡献的开发者!特别感谢开源社区的支持与反馈,使我们能够共同推动程序分析技术的发展。
YASA - 让代码分析更精准、更简单、更智能。
## 联系我们
[官方网站](https://cybersec.antgroup.com/station)
标签:DNS重绑定攻击, JS文件枚举, odt, QL, UAST (统一抽象语法树), 中间代码表示, 代码安全审计, 代码扫描器, 函数调用图, 声明式查询语言, 多语言分析, 开源安全工具, 抽象语法树, 控制流分析, 程序分析引擎, 编译器技术, 自动化攻击, 自动化攻击, 自定义规则检查器, 软件供应链安全, 远程方法调用, 逆向工程平台, 静态应用程序安全测试 (SAST), 静态程序分析