Page 365 - 《软件学报》2026年第1期
P. 365
362 软件学报 2026 年第 37 卷第 1 期
报告的异常结果或异常情况来识别漏洞, 包括基于生成和基于突变的方法. 基于深度学习的方法通常是将智能合
约进行特征提取, 然后构建深度神经网络作为检测模型, 包括单模态和多模态检测两类.
表 3 传统智能合约层漏洞检测方法
方法类别 方法名称 相关文献 方法概述 会议/期刊 发表年份
基于静态程序切片框架, 通过逻辑编码和约束霍恩子句定
[41] CSF 2023
义安全性模式, 以验证合约的安全属性
将智能合约转换为LLVM bitcode的中间表示, 结合抽象解
[103] 释和符号模型检测技术进行验证 NDSS 2018
形式化验证
通过所有官方测试套件的EVM可执行规范, 构建了完整
[104] CSF 2018
的EVM形式化语义
开发了Solidity到F*的翻译工具和 EVM 字节码的反编译
[102] PLAS 2016
器, 以确保合约在不同级别的形式化验证
利用混合分析方法, 在探索阶段识别漏洞, 并在精炼阶段
[55] SP 2022
通过符号求解和值摘要分析验证漏洞真实性
[68] 基于符号抽象的轻量级、可扩展智能合约分析工具 CCS 2018
符号执行 通过逆向工程智能合约的字节码, 构建其控制流图, 使用 USENIX
[77] 2018
符号执行技术分析合约的执行路径 Security
构造控制流图, 执行符号状态, 通过约束进行可达性检验
[5] 以降低误报率 CCS 2016
静态分析
利用识别出的访问控制状态变量, 执行跨过程的上下文敏
[78] ICSE 2023
感污点分析
利用局部抽象技术, 有效地捕捉潜在的漏洞路径, 提高合
[109] VMCAI 2022
污点分析 约验证的效率和精度
建模合约中的数据清理机制, 追踪未清理的数据在合约中
[108] PLDI 2020
的传播路径, 识别绕过守卫机制的漏洞
[107] 使用污点分析追踪未经验证输入如何在合约中传播 ACSAC 2018
从字节码和历史交易中提取状态依赖关系, 基于状态依赖
[48] ISSTA 2023
图进行分析
将合约转换为中间表示SlithIR, 以便于分析合约的语义信
[82] WETSEB 2019
基于中间 息, 识别合约漏洞
表示 通过对Solidity源代码进行词法和语法分析, 生成XML解
[47] WETSEB 2018
析树作为中间表示
通过将低级字节码表示转换为高层次规则化表示, 极大地
[110] ATVA 2018
扩展了字节码分析的能力
在生成函数调用序列时, 明确考虑函数之间的数据依赖关
[38] TIFS 2023
系以促进探索更丰富的状态
通过改变事务序列, 并使用数据流和控制流引导输入生
[52] TDSE 2022
基于生成 成, 以发现安全漏洞
[112] 基于元启发式搜索算法, 自动生成测试用例 ICSE 2022
从现实世界智能合约的交易记录中学习, 为测试智能合约
[37] ICSME 2021
生成实际输入
设计了序列感知突变和种子掩码引导策略, 动态自适应能
模糊测试 [40] 量调整范式, 以平衡模糊活动的资源分配 ICDE 2024
一种结合两种新技术的引导突变策略, 结合动态依赖学习
[39] ICSME 2023
和动态变量分析
通过将智能合约字节码编译为原生C++代码, 使用结构感
基于突变 [53] EuroS&P 2023
知突变引擎, 生成有效的事务输入
具有自适应调整突变算子的概率分布以选择突变算子的
[45] ESWA 2022
能力, 动态地对种子进行不同的切片
将突变应用于ESCs中整数溢出漏洞测试, 提出了5个专门 Tsinghua Sci
[79] 2022
用于整数溢出漏洞的突变操作符 Technol

