智能合约中的漏洞分类-强化学习总结报告

上传者: 26763955 | 上传时间: 2021-11-24 16:14:30 | 文件大小: 1.98MB | 文件类型: -
第四章 智能合约的安全问题 目前,以太坊中总计约有一亿以太币,按市场价(1以太价值 150美元), 总市值约为 150亿美元。广泛的应用也暴露了以太坊的一些漏洞,并被一些攻击 者利用,出现了 TheDao Bug(损失 6000万美元)、Parity Bug(300万以太币无 法取出)等严重的漏洞。这些漏洞使人们对以太坊的安全性产生了怀疑。由于其 他智能合约平台大多都参考了以太坊的底层架构,这些平台同样会受到这些攻击 的威胁。智能合约的安全机制与漏洞涉及到整个以太坊架构的各个层次。目前, 智能合约的安全已经成为智能合约开发者必须考虑且重视的问题[5]。 4.1 智能合约中的漏洞分类 在本节中,我们先对以太坊智能合约的安全漏洞进行归纳。此外,我们通过 一个代码片段说明每个在 Solidity层级的漏洞。所有这些漏洞可以被利用(实际 上,大多数漏洞)来进行攻击,例如从合约中盗取以太币。 Call to the unknown. Solidity中用于调用函数和转移以太币的某些语法可能 具有调用被调用者/接收者的 fallback函数的副作用[3]。我们在下面说明它们。 -call调用一个函数(另一个合约的或本身的函数),并将以太币转移给被调 用者。 例如,可以按以下方式调用合约 c的函数 ping: c.call.value(amount)(bytes4(sha3("ping(uint256)")),n); 其中,被调用函数由其哈希签名的前 4个字节标识,amount决定必须将多 少 wei传递给合约 c,而 n是 ping函数的实际参数。值得注意的是,如果在地址 c处不存在具有给定签名的函数,则执行合约 c的 fallback函数作为替代。 -send用于将以太币从运行中的合约转移到某个接收者 r,如 r.send(amount) 所示。以太币被转移后,send执行接受者的 fallback函数。与 send相关的其他 漏洞在“exception disorders”和“gasless send”中进行了详细说明。 -delegatecall与 call非常相似,区别在于被调用函数的调用在调用者环境中 运行。 例如,执行 c.delegatecall(bytes4(sha3(“ping(uint256)”)),n), 如果 ping包含变量 this,它将引用调用者的地址而不是合约 c的,并且在以太 币转移到某个接收者 d的情况下-通过 d.send(amount)-从调用者 balance中提 取以太币。

文件下载

评论信息

免责申明

【只为小站】的资源来自网友分享,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,【只为小站】 无法对用户传输的作品、信息、内容的权属或合法性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论 【只为小站】 经营者是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。
本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二条之规定,若资源存在侵权或相关问题请联系本站客服人员,zhiweidada#qq.com,请把#换成@,本站将给予最大的支持与配合,做到及时反馈和处理。关于更多版权及免责申明参见 版权及免责申明