Smart contracts are executable programs that enable the building of a programmable trust mechanism between multiple entities without the need of a trusted third-party. Researchers have developed several security scanners in the past couple of years. However, many of these analyzers either do not scale well, or if they do, produce many false positives. This issue is exacerbated when bugs are triggered only after a series of interactions with the functions of the contract-under-test. A depth-n vulnerability, refers to a vulnerability that requires invoking a specific sequence of n functions to trigger. Depth-n vulnerabilities are time-consuming to detect by existing automated analyzers, because of the combinatorial explosion of sequences of functions that could be executed on smart contracts. In this paper, we present a technique to analyze depth-n vulnerabilities in an efficient and scalable way by combining symbolic execution and data dependency analysis. A significant advantage of combining symbolic with static analysis is that it scales much better than symbolic alone and does not have the problem of false positive that static analysis tools typically have. We have implemented our technique in a tool called MPro, a scalable and automated smart contract analyzer based on the existing symbolic analysis tool Mythril-Classic and the static analysis tool Slither. We analyzed 100 randomly chosen smart contracts on MPro and our evaluation shows that MPro is about n-times faster than Mythril-Classic for detecting depth-n vulnerabilities, while preserving all the detection capabilities of Mythril-Classic.
翻译:智能合同是可执行的程序,它使得多个实体之间无需信任第三方即可建立可编程的信任机制。 研究人员在过去几年里开发了几个安全扫描仪。 但是,许多分析师不是比例不高,或者如果比例不高,就会产生许多假阳性。 当错误仅在与受合同检验的功能进行一系列互动之后才触发时, 这一问题就更加恶化了。 深度脆弱性是指一种脆弱性, 需要援引特定的n函数序列来触发。 深度- 弱点对于由现有自动分析师来探测是耗费时间的, 因为可以用智能合同执行的功能序列的组合式爆炸。 然而, 许多这些分析师不是规模不高的, 或如果它们确实如此的话, 我们展示了一种技术, 通过将象征性执行和数据依赖性分析相结合, 将符号与静态分析结合起来, 其显著的优势在于它比象征性的要大得多, 并且不会出现所有静态分析工具通常都具有的错误的正值问题。 我们在一个名为 MProli、可缩和自动智能合同的精度- 分析工具上应用了我们现有的Smarlic- mlical- 工具的分析, 。