SigRec:智能合约中函数签名的自动恢复
密码学与安全
2023-05-15 v1 软件工程
摘要
数以百万计的智能合约已部署到以太坊上提供各类服务,其函数可被调用。为此,调用者需知晓被调用者的函数签名,包括函数id与参数类型。此类签名对许多聚焦智能合约的应用至关重要,例如逆向工程、模糊测试、攻击检测与性能分析。遗憾的是,从合约字节码恢复函数签名颇具挑战,因字节码中既无调试信息也无类型信息。为此,已有方法依赖源代码或不完整数据库及启发式规则收集已知签名,但远不充分且无法应对新合约的快速增长。本文提出一种利用以太坊虚拟机(EVM)处理函数方式自动恢复函数签名的新方案。具体而言,我们借助智能合约确定待调用函数的机制定位并提取函数id,并提出一种称为类型感知符号执行(TASE)的新方法,利用EVM对参数的操作语义识别参数数量与类型。此外,我们开发了SigRec,一种无需源代码与函数签名数据库即可从合约字节码恢复函数签名的工具。大量实验表明,SigRec优于所有现有工具,以0.074秒达成前所未有的98.7%准确率。我们进一步证明所恢复函数签名可用于EVM字节码的攻击检测、模糊测试与逆向工程。
引用
@article{arxiv.2305.07067,
title = {SigRec: Automatic Recovery of Function Signatures in Smart Contracts},
author = {Ting Chen and Zihao Li and Xiapu Luo and Xiaofeng Wang and Ting Wang and Zheyuan He and Kezhao Fang and Yufei Zhang and Hang Zhu and Hongwei Li and Yan Cheng and Xiaosong Zhang},
journal= {arXiv preprint arXiv:2305.07067},
year = {2023}
}