# LIAN莲花系统 **Repository Path**: fdu-ssr/lian ## Basic Information - **Project Name**: LIAN莲花系统 - **Description**: 莲花系统是复旦大学自主研发的多语言、高精度程序安全分析框架 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 16 - **Forks**: 2 - **Created**: 2025-04-13 - **Last Updated**: 2026-03-29 ## Categories & Tags **Categories**: security-dev **Tags**: None ## README # 莲花Lian程序分析框架 莲花Lian系统是新一代面向多语言场景的高精度程序分析框架,旨在为多种语言提供统一的、强大的程序分析能力,包括指针分析、数据流分析、污点分析等。 ## 背景 程序分析是安全领域基石性技术。针对主流静态语言(如 C/C++ 和 Java)的程序分析工具已经非常的成熟和强大。但是面向当前多样化的编程语言生态,程序分析的能力依然非常缺乏,严重影响软件安全性和可靠性的分析和加强。 很多编程语言已经非常流行。例如,Python在人工智能与数据工程领域占据主导地位;TypeScript在2025年已跃居GitHub语言流行度第一,它和JavaScript支撑着Web与跨平台应用开发;Go和Rust在云服务和系统编程中发挥重要作用。但是,到目前为止,传统工具在适配支持这些语言时往往存在以下问题: - **语言绑定严重**:分析逻辑与特定语言(如 C/C++ 和 Java)的语法、类型系统深度耦合,支持新语言需推倒重来 - **动态行为失效**:分析算法非常依赖稳定的对象布局和类型声明,在处理无类型、动态对象演化时,要么过度近似,要么计算爆炸 ## 统一程序分析 尽管语言语法千差万别,但在底层执行逻辑上,程序行为都可以规约为通用的语义操作,并进行统一的程序分析。 - **通用中间语言GIR (Generic IR)**:简洁、通用,既可支持静态类型语言,也可支持动态类型语言;仅需~1600行代码,即可将任一门语言翻译为GIR; - **统一程序分析**:在GIR层上,实现高精度指针分析、数据流分析、污点分析; - **兼顾语言差异性**:通过插件机制,支持自定义插件,为语言特性提供支持。 ## 特点 * **源码输入**:支持源代码分析,无需编译器参与; * **多语言支持**:支持Python、JavaScript、Java、TypeScript、Go等静态和动态语言; * **指针级高精度**:实现流敏感(Flow-sensitive)和上下文敏感(Context-sensitive)的指针分析; * **动态语义建模**:支持对原型链、高阶函数、动态属性解析的分析; * **安全导向**:提供强大的污点分析引擎,方便快速构建漏洞挖掘工具。 ## 使用 ### 系统要求 * Linux 环境 * Python 3.10+ ### 安装 克隆仓库: ```shell $ git clone https://github.com/yang-guangliang/lian.git $ cd lian ``` 安装依赖: ```shell $ pip install -r requirements.txt ``` ### 运行 Lian 支持可视化界面与命令行两种模式: **1. 启动可视化工具:** ```shell $ ./scripts/lian-ui.sh ``` ![](docs/cn/img/lian-ui.png) **2. 命令行直接分析:** ```shell $ ./scripts/lian.sh -l ``` ## 文档与支持 ## 文档和支持 更多技术细节,请参考[中文文档](https://yian-lang.net/lian/cn/)。我们也提供了[程序分析讲义](https://yian-lang.net/lian/cn/02.background/2-1.basics/)(共四章,包括基础、数据流、指针分析、污点分析),供参考。 欢迎通过[Issues](https://gitee.com/fdu-ssr/lian/issues)提交反馈和建议! ## 项目状态 Lian是一个活跃的、研究驱动项目,由[复旦大学SSR(系统安全与可靠性)研究组](https://yian-lang.net/guangliang)独立开发。我们致力于构建一个通用、可扩展、高精度的程序安全分析基础设施。 如有问题,也欢迎直接联系作者杨广亮: yanggl at fudan.edu.cn