Towards Secure Program Partitioning for Smart Contracts with LLM's In-Context Learning
作者: Ye Liu, Yuqing Niu, Chengyan Ma, Ruidong Han, Wei Ma, Yi Li, Debin Gao, David Lo
分类: cs.SE, cs.AI
发布日期: 2025-02-20
💡 一句话要点
PartitionGPT:利用LLM上下文学习实现智能合约安全程序划分
🎯 匹配领域: 支柱一:机器人控制 (Robot Control) 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 智能合约安全 程序划分 大型语言模型 上下文学习 静态分析 信息泄露 操纵攻击
📋 核心要点
- 智能合约易受攻击,根本原因是数据保密性问题,而非简单的代码错误,现有方法难以有效解决。
- PartitionGPT利用LLM的上下文学习能力,结合静态分析,将智能合约划分为特权和普通代码库,从而防止敏感信息泄露。
- 实验表明,PartitionGPT能成功划分78%的敏感函数,代码量减少30%,并有效防御了8/9的真实操纵攻击。
📝 摘要(中文)
智能合约由于敏感信息泄露,极易受到操纵攻击。解决操纵漏洞极具挑战性,因为它们源于固有的数据保密性问题,而非直接的实现错误。为了通过防止敏感信息泄露来解决这个问题,我们提出了PartitionGPT,这是第一个由LLM驱动的方法,它结合了静态分析和大型语言模型(LLM)的上下文学习能力,在少量带注释的敏感数据变量的指导下,将智能合约划分为特权代码库和普通代码库。我们在包含99个敏感函数的18个带注释的智能合约上评估了PartitionGPT。结果表明,PartitionGPT成功地为78%的敏感函数生成了可编译和验证的分区,同时与函数级分区方法相比,减少了大约30%的代码。此外,我们评估了PartitionGPT在9个导致总计2500万美元损失的真实操纵攻击上的表现,PartitionGPT有效地阻止了8个案例,突显了其广泛适用性和智能合约开发期间安全程序划分以减少操纵漏洞的必要性。
🔬 方法详解
问题定义:智能合约中敏感信息泄露导致的操纵攻击是一个严重的安全问题。现有的解决方案,例如函数级别的划分,粒度过粗,导致过多的代码被划分到特权代码库中,降低了效率。此外,手动分析和划分代码既耗时又容易出错。
核心思路:利用大型语言模型(LLM)的上下文学习能力,通过少量带注释的敏感数据变量作为指导,自动将智能合约划分为特权代码库和普通代码库。这种方法旨在更精确地识别和隔离敏感代码,从而减少特权代码库的大小,提高效率,并降低手动分析的负担。
技术框架:PartitionGPT的整体框架包括以下几个主要阶段:1) 静态分析:对智能合约进行静态分析,提取代码结构和数据流信息。2) 敏感数据标注:人工或自动标注智能合约中的敏感数据变量。3) LLM上下文学习:将静态分析结果和敏感数据标注作为上下文输入到LLM中,指导LLM进行代码划分。4) 代码划分:LLM根据上下文学习的结果,将智能合约划分为特权代码库和普通代码库。5) 验证:验证划分后的代码是否可编译,以及是否能够防止敏感信息泄露。
关键创新:PartitionGPT的关键创新在于利用LLM的上下文学习能力进行智能合约的安全程序划分。与传统的静态分析方法相比,LLM能够更好地理解代码的语义和上下文,从而更精确地识别和隔离敏感代码。此外,PartitionGPT通过少量带注释的敏感数据变量作为指导,降低了人工标注的成本。
关键设计:PartitionGPT的关键设计包括:1) 上下文输入的设计:将静态分析结果和敏感数据标注以特定的格式输入到LLM中,以便LLM能够理解代码的结构和数据流信息。2) LLM的选择和微调:选择合适的LLM,并根据智能合约的特点进行微调,以提高代码划分的准确性。3) 代码划分策略:设计合适的代码划分策略,例如基于函数、语句或变量的划分,以满足不同的安全需求。
🖼️ 关键图片
📊 实验亮点
PartitionGPT在18个智能合约上的评估结果显示,它成功地为78%的敏感函数生成了可编译和验证的分区,并且与函数级分区方法相比,减少了大约30%的代码量。在9个真实操纵攻击案例中,PartitionGPT有效阻止了8个,证明了其在实际应用中的有效性。
🎯 应用场景
PartitionGPT可应用于智能合约开发的安全增强环节,降低因信息泄露导致的操纵攻击风险。它能帮助开发者自动识别并隔离敏感代码,减少人工分析成本,提高智能合约的安全性。未来,该技术可扩展到其他类型的安全攸关软件的开发中。
📄 摘要(原文)
Smart contracts are highly susceptible to manipulation attacks due to the leakage of sensitive information. Addressing manipulation vulnerabilities is particularly challenging because they stem from inherent data confidentiality issues rather than straightforward implementation bugs. To tackle this by preventing sensitive information leakage, we present PartitionGPT, the first LLM-driven approach that combines static analysis with the in-context learning capabilities of large language models (LLMs) to partition smart contracts into privileged and normal codebases, guided by a few annotated sensitive data variables. We evaluated PartitionGPT on 18 annotated smart contracts containing 99 sensitive functions. The results demonstrate that PartitionGPT successfully generates compilable, and verified partitions for 78% of the sensitive functions while reducing approximately 30% code compared to function-level partitioning approach. Furthermore, we evaluated PartitionGPT on nine real-world manipulation attacks that lead to a total loss of 25 million dollars, PartitionGPT effectively prevents eight cases, highlighting its potential for broad applicability and the necessity for secure program partitioning during smart contract development to diminish manipulation vulnerabilities.