描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121367847丛书名: 安全技术大系
1.1 区块链简介 1
1.2 区块链1.0 ——比特币,一种点对点的现金支付系统 1
1.2.1 比特币的产生 1
1.2.2 深入分析比特币的工作机制 5
1.2.3 结合《比特币白皮书》理解比特币 9
1.2.4 比特币的回顾与剖析 13
1.2.5 比特币的不足 16
1.3 区块链2.0 ——以太坊 18
1.3.1 以太坊的产生 18
1.3.2 深入理解以太坊 18
1.4 区块链3.0 ——DApp 25
1.5 基于以太坊的智能合约入门 25
1.5.1 智能合约的结构 26
1.5.2 EOS上的智能合约及其与以太坊的对比 27
第2章 智能合约开发实战
2.1 以太坊网络 29
2.2 私有链的搭建 30
2.2.1 geth简介 30
2.2.2 geth的安装与配置 31
2.2.3 geth的操作及相关说明 33
2.2.4 以太坊中的账户与密钥 39
2.2.5 查看以太坊网络的状态 40
2.3 Mist和Ethereum Wallet的安装、配置与操作 42
2.3.1 下载与安装 42
2.3.2 通过Ethereum Wallet连接本地私有库 42
2.3.3 用Mist实现多重签名 45
2.4 以太坊智能合约开发实战 52
2.4.1 开发环境 52
2.4.2 编写第一个智能合约 54
2.5 ERC-20 Token合约 58
2.5.1 Token合约概述 58
2.5.2 ERC-20 Token合约详解 60
2.5.3 对ERC-20 Token合约的进一步说明 61
2.6 本章小结 63
第3章 智能合约语法实战
3.1 造就骨架——建立合约框架 64
3.2 初添血肉——添加状态变量 66
3.2.1 数据类型简介 66
3.2.2 添加uint类型的变量 67
3.2.3 添加结构体 67
3.2.4 添加数组 68
3.3 再添经脉——添加函数 70
3.3.1 添加一个简单的函数 70
3.3.2 添加一个复杂的函数 72
3.3.3 特别的函数——回退函数 75
3.4 与外界交互——添加事件 80
3.5 大脑的沟通——多用户拓展 82
3.5.1 神经的连接——映射和地址 82
3.5.2 神经的传输——msg.sender 85
3.5.3 神经兴奋的判别——require()方法 87
3.5.4 生命的传承——Inheritance 87
3.5.5 血液里的本能——“猎食”和“繁殖” 90
3.5.6 DNA的融合 91
3.5.7 各司其职的隐私——关于函数可见性的更多内容 92
3.5.8 同化作用——合约交互 93
3.5.9 同化作用的结果——获得奖励 98
3.6 高级Solidity理论 100
3.6.1 外部依赖关系 100
3.6.2 权限的产生——Ownable Contracts 101
3.6.3 权限的确认——函数修饰符onlyOwner 105
3.6.4 运转的动力——gas 107
3.7 Truffle的介绍与安装 108
3.8 创建、部署、使用Token合约 110
3.8.1 Truffle的box和OpenZeppelin 110
3.8.2 安装tutorialtoken box和OpenZeppelin 111
3.8.3 创建TutorialToken合约 112
3.8.4 合约的编译与部署 114
3.8.5 合约操作与实践 116
3.9 创建、部署、使用ICO合约 121
3.9.1 ICO简介 121
3.9.2 创建ICO合约 122
3.9.3 ICO合约的编译与部署 125
3.9.4 ICO合约的操作实践 130
3.10 本章小结 131
第4章 智能合约常见漏洞
4.1 智能合约审计指南 132
4.1.1 智能合约审计概述 132
4.1.2 智能合约审计报告的结构 132
4.2 整型溢出漏洞 133
4.2.1 漏洞概述 133
4.2.2 代码片段 133
4.2.3 漏洞分析与调试 134
4.2.4 相关案例 139
4.2.5 规避整型溢出的神器——SafeMath库 140
4.3 重入漏洞 141
4.3.1 漏洞概述 141
4.3.2 代码片段 148
4.3.3 漏洞分析、调试与防范 149
4.3.4 相关案例 155
4.4 访问控制缺陷 155
4.4.1 漏洞概述 155
4.4.2 代码片段 156
4.4.3 漏洞分析、调试与防范 157
4.4.4 相关案例 162
4.5 特权功能暴露 162
4.5.1 漏洞概述 162
4.5.2 代码片段 163
4.5.3 漏洞分析、调试与防范 163
4.5.4 相关案例 170
4.6 跨合约调用漏洞 170
4.6.1 漏洞概述 170
4.6.2 代码片段 172
4.6.3 漏洞分析、调试与防范 173
4.6.4 相关案例 176
4.7 拒绝服务漏洞 177
4.7.1 漏洞概述 177
4.7.2 代码片段 177
4.7.3 漏洞分析、调试与防范 178
4.7.4 相关案例 185
4.8 矿工特权隐患 185
4.8.1 漏洞概述 185
4.8.2 代码片段 185
4.8.3 漏洞分析与防范 186
4.8.4 相关案例 187
4.9 短地址攻击 187
4.9.1 漏洞概述 187
4.9.2 代码片段 189
4.9.3 漏洞分析、调试与防范 190
4.10 tx.origin漏洞 195
4.10.1 漏洞概述 195
4.10.2 代码片段 195
4.10.3 漏洞分析、调试与防范 195
4.11 本章小结 199
第5章 智能合约蜜罐
5.1 智能合约蜜罐概述 201
5.2 WhaleGiveaway1 201
5.2.1 蜜罐分析 201
5.2.2 代码复现 203
5.3 Gift_1_ETH 207
5.3.1 蜜罐分析 207
5.3.2 代码复现 210
5.4 MultiplicatorX3 213
5.4.1 蜜罐分析 213
5.4.2 代码复现 215
5.5 TestBank 217
5.5.1 蜜罐分析 217
5.5.2 代码复现 221
5.6 CryptoRoulette 223
5.6.1 蜜罐分析 223
5.6.2 代码复现 225
5.7 OpenAddressLottery 226
5.7.1 蜜罐分析 226
5.7.2 代码复现 229
5.8 KingOfTheHill 231
5.8.1 蜜罐分析 231
5.8.2 代码复现 233
5.9 RACEFORETH 235
5.10 For_Test 237
5.10.1 蜜罐分析 237
5.10.2 代码复现 239
5.11 DividendDistributor 240
5.11.1 蜜罐分析 240
5.11.2 代码复现 244
5.12 与智能合约蜜罐相关的安全建议 246
5.13 本章小结 246
第6章 常见智能合约分析与审计工具
6.1 智能合约分析工具——Solgraph 247
6.1.1 Solgraph简介 247
6.1.2 Solgraph的安装与使用 248
6.2 智能合约审计工具——mythril 250
6.2.1 mythril的安装 251
6.2.2 mythril的使用与功能说明 252
6.3 智能合约审计平台——SECURIFY 257
6.3.1 SECURIFY概述 257
6.3.2 SECURIFY系统探究 259
6.3.3 SECURIFY的使用 261
第7章 智能合约审计实战
7.1 智能合约审计清单 264
7.2 博彩游戏合约审计 265
7.2.1 合约代码与合约功能浏览 265
7.2.2 审计报告 268
7.3 CryptoKitties合约审计 274
7.4 本章小结 277
第8章 智能合约字节码解构
8.1 打开引擎盖——智能合约下的字节码 278
8.2 解构第一步——creation 282
8.3 解构第二步——runtime 291
8.3.1 函数选择器 292
8.3.2 函数包装器 295
8.3.3 函数主体 301
8.3.4 元数据散列 305
8.4 本章小结 309
参考文献 310
比特币作为一种新型加密货币,其出现使得区块链去中心化的概念成为密码学研究的热点方向。去中心化本身,则是金融领域现有机制的有益补充,甚至是一大突破。以以太坊为代表的区块链2.0,作为可编程的区块链去中心化平台,其EVM及智能合约的创举,为去中心化在金融、日常生活等领域创造了无限可能。在一个良好的生态环境中,区块链正在茁壮成长。
尽管可编程的区块链为去中心化的概念在现实生活中的应用创造了无限可能,但区块链项目的大规模落地与推广仍面临一系列挑战。除了容量、延迟、拓展性等性能方面的问题,一大制约因素就是区块链的安全问题。一方面,区块链本身的共识机制需要从安全性的角度加以证明;另一方面,自区块链2.0出现以来,由于区块链部署的不可更改性,智能合约本身的安全受到了密切关注,DAO等由于智能合约漏洞造成巨大损失乃至以太坊硬分叉的安全事件,更是将智能合约的安全问题提到了新的高度。
区块链作为当下的热点领域,应用日趋广泛,未来的发展需要安全人才保驾护航。看雪学院(kanxue.com)专注安全领域20年,一直致力于培养安全人才、促进产业发展。对于区块链领域,看雪学院也为众多研究者提供了交流、研讨的平台。本书针对区块链2.0——以太坊,着眼于智能合约安全,进行了深入的分析与探讨,相信对于区块链设计、开发人员,以及未来有志从事区块链领域工作的人士,都会有很大的帮助。
段 钢
看雪学院创始人
2019年5月9日
前言
区块链作为一种去中心化的分布式数据存储结构,以数字加密货币为源头发展至今,在商业、金融、信息等多个领域发挥着重要的作用并受到了普遍的认可,在学术界和产业界掀起了潮流。据相关报道,2019年5月,区块链的总市值达到2300亿美元。
以太坊是仅次于比特币的第二大区块链系统。以太坊智能合约的链上编程语言使其不仅仅是一种加密货币,还是一个基于智能合约的去中心化应用程序(DApp)平台。2018年年底,以太坊已经托管了超过100万份智能合约。截至2019年5月,在全球范围内2667个成熟且活跃的分布式应用中,约有92% 来自以太坊平台。
与比特币的脚本相比,以太坊智能合约作为图灵完备的语言,在拥有功能更为强大、更具拓展性等优势的同时,也因其复杂性产生了诸多安全问题。一方面,由于智能合约编程语言Solidity本身缺乏大整数等特性,需要开发人员在编写过程中注重代码的安全性、完整性;另一方面,由于区块链本身的不可更改性,存在漏洞的合约一旦部署上链,就会造成不可逆的损失。以著名的DAO攻击事件为例,黑客利用智能合约中的重入漏洞转移了价值约6000万美元的以太币,导致以太币的市值一度下跌了40%。因此,如何保障智能合约的安全性成了区块链落地的关键。
在本书的写作过程中,我们秉承由浅入深、理论与实践相结合的思想,在阐述理论的同时,对实际操作进行了详细说明。
第1章对区块链的发展历程进行了由浅入深的介绍。借助一个故事,结合经典的《比特币白皮书》,梳理了区块链1.0~区块链3.0的框架,并对以太坊及其智能合约进行了简单的探讨。
第2章旨在将区块链和以太坊的概念与实现对应起来。结合实践,对常用的以太坊客户端geth、钱包、浏览器等应用的操作进行讲解,既提供了命令行环境,也展示了图形界面。
第3章将智能合约的语法、操作、应用融为一体,不仅介绍了智能合约的语法特性,还详细讲解了如何利用Truffle实现代币合约和众筹合约。
第4章对智能合约的常见漏洞及其原理进行了分析,在Remix IDE中对漏洞的代码进行了调试,并针对每一个漏洞给出了相应的防范建议。
第5章介绍了常见的智能合约蜜罐,结合原理讲解和复现操作,提供了相应的安全建议。
第6章对现有智能合约分析与审计工具的使用进行了说明。
第7章介绍了智能合约的审计流程,并提供了审计案例。
第8章深入以太坊虚拟机的运行机制,介绍了智能合约是如何部署和执行的。
相信读者在阅读完本书后,会对以太坊智能合约有较为完整的了解,更重要的是,会对以太坊智能合约的安全问题有更加充分的认识,能够在开发和审计过程中发现并识别常见的漏洞和蜜罐。本书覆盖面虽广,但内容由浅入深、通俗易懂,同时不乏深度的思考。例如,智能合约审计工具的研发是研究的热点,智能合约字节码的解构能力是在以太坊上进行开发的敲门砖。
在本书的编写过程中,我们得到了来自家人、同事、朋友及看雪区块链研究社区的支持和鼓励,在此表示感谢!
最后,希望本书能为推动区块链的落地和技术的进步作出微薄的贡献。
作 者
2019年6月于上海
——付东亮 降维安全CEO
我们在逆向分析安卓App的时候,一般从解包开始,使用工具梳理逻辑,尝试自动化分析,针对细节进行研究,甚至会以字节码单步执行的方式进行调试。从这个角度看,本书对智能合约逆向分析和解构方面的知识有比较全面的覆盖,能为读者提供良好的指导。
——丰生强 《Android软件安全权威指南》作者
近年来,与区块链相关的题目在CTF比赛中层出不穷,尤其是智能合约相关漏洞的理解和利用,已经成为选手们必须要掌握的内容。大家可以通过这本书,从整体上掌握区块链、智能合约及相关漏洞的原理与分析方法。
——肖子彤 上海交通大学0ops战队队长
评论
还没有评论。