科普 | 智能合约安全审计入门篇 —— 自毁函数_区块链:Ethersocial

By:小白@慢雾安全团队

背景概述

上次我们了解了什么是溢出漏洞和如何预防和发现它。这次我们要了解的是solidity中自带的函数——?selfdestruct自毁函数。

前置知识

我们先来了解solidity中能够转账的操作都有哪些:

欧科云链集团正式启动区块链科普行动“星途计划”:欧科云链集团于4月26日,正式宣布启动了区块链科普行动——“星途计划”,行动包括将在全国范围展开系列沙龙,加大力度推进区块链科普进机关、进国企、进校园等,联合政府部门、行业协会等共同构建起更加完善和有效的区块链科普教育生态,与此同时,直击区块链科普现存痛点,推出简单易懂的“秒懂区块链”公益短视频课。

该计划旨在全维度推动社会建立对产业更清晰的认知,与“鲲鹏计划”一道助力数字经济及区块链产业本身健康发展夯实“人才”和“产业认知”两大基础。[2021/4/26 20:59:37]

1

动态 | 人民日报官方微博科普区块链 强调区块链不等于比特币:人民日报官方微博今早发表9图科普区块链。其中涉及区块链的特点有:1、安全;2、不可篡改;3、可访问;4、无第三方。区块链对未来的影响:1、不需繁琐个人证明;2、看病避免反复检查;3、旅行消费更加便捷;4、交易无需第三方。同时强调,区块链不等于比特币。比特币只是区块链技术的一种应用,区块链还有医疗卫生、食品安全、版权保护等诸多应用领域。[2019/10/28]

}functionclaimReward()public{require(msg

动态 | 区块链技术入选科普杂志《科学美国人》2019十大突破性技术榜单:据新浪网今日新闻报道,美国科普杂志《科学美国人》公布 2019 十大突破性技术榜单。区块链技术因在保障食品安全中的作用而上榜。 入选榜单具体原因:区块链技术的发展应用将显著改善食品污染源数据追踪的困境。利用区块链云端系统,食品制造商可以依次在计算机储存各类过程的信息。[2019/9/29]

}漏洞分析

EtherGame合约实现的功能是一个游戏,我们这里可以称它为“幸运七”。玩家每次向EtherGame合约中打入一个以太,第七个成功打入以太的玩家将成为winner。winner可以提取合约中的7个以太。

玩家每次玩游戏时都会调用EtherGame

functionattack()publicpayable{addresspayableaddr=payable(address(etherGame));selfdestruct(addr);}这里我们还是引用三个角色来讲解攻击合约的攻击过程

玩家一:Alice

玩家二:Bob

攻击者:Eve

1.开发者部署EtherGame合约;

2.玩家Alice决定玩游戏,她这辈子玩游戏从来没赢过,她觉得这个游戏可以让她体验一次当winner的快感,所以她决定连续调用EtherGame

}functionclaimReward()public{require(msg

}作为审计者

作为审计者我们需要结合真实的业务逻辑来查看address(this).balance的使用是否会影响合约的正常逻辑,如果会影响那我们就可以初步认为这个合约存在被攻击者强制打入非预期的资金从而影响正常业务逻辑的可能。在审计过程中还需要结合实际的代码逻辑来进行分析。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金宝趣谈

[0:0ms0-8:57ms