# 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**: 15 - **Forks**: 2 - **Created**: 2025-04-13 - **Last Updated**: 2026-01-05 ## Categories & Tags **Categories**: security-dev **Tags**: None ## README # 莲花Lian “莲花”Lian是一个支持多语言的统一指针级程序分析框架。它旨在提供指针分析,上下文敏感的数据流分析,以及基于污点的安全分析。 ## 概述 近年来,语言生态发生重大变革。许多语言变得越来越流行,尤其是动态类型语言。例如,Python在人工智能与数据工程领域占据主导地位,JavaScript和TypeScript支撑着Web与跨平台应用及框架,Go和Rust在云服务与系统编程中发挥重要作用。这些语言显著提升了开发效率,但也带来了许多高度动态的运行时语义,这些语义打破了传统程序分析技术所依赖的假设。 在许多情况下,类型信息往往不可用的或是不稳定的,对象布局会在运行时演化,控制流依赖于动态分派、高阶函数和反射式属性访问。因此,传统的静态分析最初为静态类型和单语言系统设计,它们在真实高度动态的代码库上往往难以同时保持精度和可扩展性,要么过度近似而损失精度,要么在分析上变得不可行。 ### 核心思想 一个核心观察是,现有方法的根本局限不在于语言特定建模的不足,而在于缺乏一个在动态行为和语言边界上都保持有效的**统一**语义。 因此,Lian不在假设和依赖于稳定对象模型和可靠类型约束的传统分析,而是采取了不同的路径。Lian将程序行为抽象为一组与语言无关的语义原语,并直接在这个层面上进行同一的分析,而不是将分析逻辑锚定在表层语法或类型系统上。 ### 设计理念 Lian采用与语言无关的设计,将程序行为归约为基本的语义操作,如对象创建、引用传播、属性访问和动态调用解析。 用不同语言编写的程序被翻译成一个通用中间表示GIR(Generic Intermediate Representation),使语义操作变得显式。这样以来,将分析核心仅在GIR上运行,确保指针级推理和数据流语义在多种语言上具有一致的分析粒度和解释。 语言特定的复杂性被隔离在前端翻译中,而分析引擎本身保持统一。这种分离使得Lian可以随着新语言、执行模型和安全分析的加入而演进,而无需重新设计分析核心。 ### Lian 与现有框架的区别 大多数现有的程序分析框架都是与语言绑定的。它们的分析逻辑与语言类型、类或声明字段等构造紧密耦合,这在单一语言生态系统中运作良好,但限制了其在多语言中复用,并在高度动态的环境中彻底失效。 Lian转移抽象边界,它不将语言语法视为分析的基础,而是将运行时语义作为共同基础。语言构造成为前端翻译的产物,而不是分析本身的基本元素。 Lian并不是要彻底取代传统框架。相反,在多语言系统、动态执行环境、语言中心化工具达到极限的安全推理场景,Lian提供了一个开放的、公共的、无差别的分析基础设施。 ## 安装与使用 ### 系统要求 Lian目前面向Linux环境,需要Python 3.10或更高版本。 ### 安装 克隆Lian仓库的最新版本: ```shell $ git clone https://github.com/yang-guangliang/lian.git $ cd lian ``` 或者,可以从Releases页面获取稳定版本。 安装所需的Python依赖: ```shell $ pip install -r requirements.txt ``` ### 运行 Lian Lian可以通过可视化界面或命令行使用。 启动可视化工具: ```shell $ ./scripts/lian-ui.sh ``` 通过命令行直接分析: ```shell $ ./scripts/lian.sh -l ``` ## 文档与支持 ## 文档和支持 更多技术细节,请参考[中文文档](https://yang-guangliang.github.io/lian/cn),或者[Gitee-Wiki](https://gitee.com/fdu-ssr/lian/wikis/pages)。 欢迎通过[Issues](https://gitee.com/fdu-ssr/lian/issues)提交反馈和建议! ## 项目状态 Lian是一个活跃的、研究驱动项目,由复旦大学[SSR(系统安全与可靠性)研究组](https://yang-guangliang.github.io/)独立开发。我们致力于构建一个通用、可扩展、高精度的程序安全分析基础设施。