Skip to main content
QUICK REVIEW

[论文解读] HCC: A Language-Independent Hardening Contract Compiler for Smart Contracts

Jens-Rene Giesen, Sébastien Andreina|arXiv (Cornell University)|Mar 1, 2022
Security and Verification in Computing被引用 7
一句话总结

本论文提出 hcc,这是首个实用的、与语言无关的智能合约编译器,通过使用代码属性图(CPG)建模控制流和数据流,自动在源代码级别插入安全加固检查。hcc 在 10,000 个真实世界的 Solidity 合约中以 99.99% 的成功率有效防止了所有已知的重入攻击和整数溢出漏洞,且运行时开销极低,其在覆盖范围和实用性方面优于现有工具。

ABSTRACT

Developing secure smart contracts remains a challenging task. Existing approaches are either impractical or leave the burden to developers for fixing bugs. In this paper, we propose the first practical smart contract compiler, called HCC, which automatically inserts security hardening checks at the source-code level based on a novel and language-independent code property graph (CPG) notation. The high expressiveness of our developed CPG allows us to mitigate all of the most common smart contract vulnerabilities, namely reentrancy, integer bugs, suicidal smart contracts, improper use of tx.origin, untrusted delegate-calls, and unchecked low-level call bugs. Our large-scale evaluation on 10k real-world contracts and several sets of vulnerable contracts from related work demonstrates that HCC is highly practical, outperforms state-of-the-art contract hardening techniques, and effectively prevents all verified attack transactions without hampering functional correctness.

研究动机与目标

  • 为解决缺乏实用、自动化的源码级智能合约加固工具的问题,避免给开发者带来负担。
  • 克服现有解决方案依赖手动修复、存在误报/漏报问题,或与现代区块链平台不兼容的局限性。
  • 设计一种支持跨过程与跨合约分析的编译器,能准确识别加固点,并可扩展至多种智能合约语言和平台。
  • 在真实合约(包括高价值和复杂合约)上展示其有效性,同时保持极低的性能开销。
  • 通过通用且可扩展的基于 CPG 的表示方法,实现与以太坊和 Hyperledger Fabric 等多样化区块链系统的集成。

提出的方法

  • hcc 使用代码属性图(CPG)对智能合约中的控制流和数据流关系进行建模,从而实现对漏洞的精确静态分析。
  • CPG 模式被专门设计用于建模智能合约语义,包括函数调用、状态变量以及跨合约的数据依赖关系。
  • hcc 查询 CPG 以检测重入和整数溢出模式,识别安全加固检查的最佳插入位置。
  • 插入基于字段和偏移的锁机制以防止重入攻击,避免因过度约束锁导致的误报。
  • 该编译器支持源码到源码的转换,在保留原始逻辑的同时插入可被开发者检查和验证的防御性检查。
  • hcc 已实现于以太坊上的 Solidity,并扩展支持 Hyperledger Fabric,证明了其在不同平台间的可移植性。

实验结果

研究问题

  • RQ1是否能够通过源码级智能合约编译器自动且有效地防止已知的重入和整数溢出漏洞,同时最大限度减少开发者工作量?
  • RQ2与符号执行或字节码重写相比,hcc 基于 CPG 的分析在可扩展性、准确性和实用性方面表现如何?
  • RQ3hcc 在不破坏功能的前提下,能够多大程度地处理真实世界中复杂且高价值的智能合约?
  • RQ4与先前工具中使用的全局锁机制相比,hcc 的字段和偏移敏感锁策略是否能减少误报?
  • RQ5是否能够通过通用的代码表示,将 hcc 有效扩展至多种区块链平台和编程语言?

主要发现

  • hcc 在 60 秒超时内成功处理了 7,174 份合约(占总数的 71.74%),显著优于 sGuard 仅处理 3,286 份合约(占总数的 32.86%)。
  • 在 12 小时超时下,sGuard 仅成功编译了 40 份漏洞合约中的 17 份,而 hcc 成功编译了 36 份,包括全部 25 个高价值 ERC20 合约。
  • hcc 在 EEG 数据集中对所有已确认的重入攻击交易实现了 100% 的修复有效性,且在良性交易上无任何误报。
  • hcc 成功阻止了两起新发现的重入交易(0x85d2…ea0b 和 0x516d…29a9),证实其检测能力超越了已知基准。
  • hcc 所引入的安全加固平均运行时气体开销仅为 11.95%,表明其性能影响极低。
  • hcc 的字段和偏移敏感锁策略避免了因合法并发访问模式导致的误报,而此类误报在 sGuard 等工具的全局锁机制中普遍存在。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。