-
-
[原创]零时科技|2021年,你应该了解的区块链安全
-
发表于: 2021-3-3 17:28 3866
-
市面上关于区块链安全的资料比较少,零时科技所做的项目基于传统网络攻防技术但又高于传统技术,既要能做代码审计,又需要有渗透测试的基本功,还需要有二进制和内核驱动的技术功底。如果能将一些攻防和分析的实例写出来,以后市面上就多了一本闪光的读物,能让更多的从业者提升水平,更高质量地守卫区块链的安全。
做一件事之前,我们首先要想:为什么要做,做这件事的意义是什么?这两点一定要想清楚。写这本书的意义在于给这个行业的从业者多提供一个学习的途径,让爱好者多一个就业的通道。人就是这样,有时候给予比收获获得的快乐多得多。
记得四叶草公司年会的时候我对同事们说过一段话:“人就像一块石头。石头有大有小,把石头扔到湖里,漾起的涟漪一定是不同的,小石头漾起的涟漪圈小,大石头漾起的圈大。我们人就和这石头一样,能量大的辐射的范围就大,能量小的辐射的范围就小。我们要做的就是把‘石头’变大,让它能够漾起足够大的涟漪,影响到更多的人。”
这段话也是网络安全行业的一个缩影,网络安全行业看上去比传统行业的规模和量都要小,可是这个行业承载的使命却是一个“大石头” ,金融、电力、交通、通信、医疗等行业离不开它,云、大数据、物联网、区块链、人工智能等产业也离不开它。这些链条如果出了安全问题,那就都是大事,甚至有可能威胁生命。所以我们网络安全从业者要好好打磨和修炼自身,不断学习,自身强大了,才有力量给安全行业做更多贡献。
“蓄不久则著不盛,积不深则发不茂。”学习别人的长处,谦虚前行,不为当前微小的成就自喜,要明白山以高移,谷以卑安。
欲胜人必先胜己,要和自己较量才有资格和别人比,做好当下才能迎接未来。
—— 马坤,四叶草安全创始人
“零时科技”公众号在2019年发表了一系列区块链相关的安全文章。其中“交易所安全审计”系列文章在发表后反响不错,这在很大程度上归功于这种以实际渗透测试项目为基础,模块化成不同的测试方向,提炼出通用漏洞点,并辅以案例进行说明的形式。目前市面上的安全类书籍多是以漏洞类型为基础,对不同类型的漏洞进行分析利用,但鲜有此种形式,加之区块链又是近些年来的新兴技术,人们对该领域的安全问题关注度较低,又由于数字货币具有金融属性,其造成的影响广泛而深远。于是,本书的几位作者一拍即合,决定写一本全面介绍区块链安全的书。相信本书会提供一种系统而全面的视角,在漫无边际的区块链安全世界中,给读者提供指南。
《区块链安全入门与实战》
本书作为一本“指南”,旨在用简单明了的行文讲清楚区块链的安全问题,将一些复杂的理论和攻击手法简要概括出来。
阅读本书,最好了解一门编程语言,例如C、Python、Go,因为这些语言的语法与Solidity相近,对学习智能合约大有裨益。
目 录
对本书的赞誉
序
前言
第1章 区块链简介 1
1.1 区块链的诞生与演化 1
1.2 区块链的分类 2
1.3 区块链的生态 3
1.3.1 比特币 3
1.3.2 以太坊 4
1.3.3 联盟链 7
1.3.4 智能合约 8
1.4 本章小结 8
第2章 交易平台的安全 9
2.1 数字货币交易平台及安全 9
2.2 信息收集 11
2.2.1 测试列表 11
2.2.2 案例分析 12
2.2.3 安全建议 17
2.3 社会工程 18
2.3.1 测试列表 18
2.3.2 案例分析 19
2.3.3 安全建议 21
2.4 业务逻辑 22
2.4.1 测试列表 22
2.4.2 案例分析 23
2.4.3 安全建议 29
2.5 输入输出 29
2.5.1 测试列表 30
2.5.2 案例分析 30
2.5.3 安全建议 36
2.6 安全配置 36
2.6.1 测试列表 37
2.6.2 案例分析 37
2.6.3 安全建议 41
2.7 信息泄露 41
2.7.1 测试列表 41
2.7.2 案例分析 42
2.7.3 安全建议 48
2.8 接口安全 48
2.8.1 测试列表 48
2.8.2 案例分析 49
2.8.3 安全建议 52
2.9 用户认证安全 52
2.9.1 测试列表 52
2.9.2 案例分析 53
2.9.3 安全建议 55
2.10 App安全 56
2.10.1 测试列表 56
2.10.2 案例分析 57
2.10.3 安全建议 67
2.11 本章小结 68
第3章 智能合约的安全 69
3.1 以太坊智能合约的安全问题 69
3.2 整数溢出漏洞 70
3.3 重入漏洞 84
3.4 假充值漏洞 92
3.5 短地址漏洞 96
3.6 tx.orgin身份认证漏洞 100
3.7 默认可见性 103
3.8 代码执行漏洞 109
3.9 条件竞争漏洞 118
3.10 未验证返回值漏洞 121
3.11 浮点数及精度安全漏洞 124
3.12 拒绝服务漏洞 126
3.13 不安全的随机数 133
3.14 错误的构造函数 139
3.15 时间戳依赖漏洞 145
3.16 意外的Ether漏洞 147
3.17 未初始化指针漏洞 150
3.18 本章小结 155
第4章 EOS智能合约的安全 156
4.1 EOS简介 156
4.1.1 共识机制 157
4.1.2 智能合约 157
4.2 EOS智能合约的漏洞及预防方法 157
4.2.1 转账通知伪造 157
4.2.2 内联交易回滚 163
4.2.3 黑名单交易回滚 165
4.2.4 弱随机数 167
4.2.5 整型溢出 178
4.2.6 hard_fail状态 181
4.3 本章小结 183
第5章 钱包的安全 184
5.1 数字货币钱包简介 184
5.1.1 软件钱包 185
5.1.2 硬件钱包 186
5.1.3 纸质钱包 187
5.1.4 钱包的安全问题 187
5.2 软件钱包的安全审计 188
5.2.1 App客户端安全 188
5.2.2 服务端安全 194
5.2.3 钱包节点安全 195
5.2.4 第三方钱包安全 198
5.2.5 会话与认证安全 201
5.2.6 业务逻辑安全 205
5.2.7 传输安全 206
5.3 硬件钱包的安全审计 208
5.3.1 软件攻击 208
5.3.2 供应链攻击 208
5.3.3 边信道攻击 209
5.3.4 设备数据存储安全 211
5.4 本章小结 211
第6章 公链的安全 212
6.1 比特币的基本概念和相关技术 212
6.1.1 比特币钱包 212
6.1.2 私钥和公钥 213
6.1.3 传统银行的交易过程 214
6.1.4 比特币的交易过程 214
6.1.5 如何防止重复支付 219
6.1.6 区块 220
6.2 联盟链 221
6.3 共识机制的安全 223
6.3.1 PoW共识机制及安全问题 223
6.3.2 PoS共识机制及安全问题 231
6.3.3 DPoS共识机制及安全问题 233
6.3.4 PBFT共识机制及安全问题 234
6.4 静态源码安全 236
6.4.1 比特币的校验机制—默克尔树 236
6.4.2 比特币DoS漏洞分析一 238
6.4.3 比特币任意盗币漏洞分析 239
6.4.4 比特币DoS漏洞分析二 246
6.4.5 小结 247
6.5 RPC安全 248
6.5.1 以太坊中RPC接口的调用 249
6.5.2 keystore 252
6.5.3 以太坊的交易流程 254
6.5.4 RPC存在的安全问题 257
6.5.5 小结 260
6.6 P2P安全 261
6.6.1 比特币中的P2P协议 261
6.6.2 P2P存在的安全问题 264
6.6.3 小结 270
6.7 本章小结 271
第7章 矿机与矿池的安全 272
7.1 矿机安全 272
7.1.1 矿机分类 272
7.1.2 矿机相关的安全问题 274
7.2 矿池安全 281
7.2.1 矿池分类 281
7.2.2 矿池相关的安全问题 283
7.2.3 小结 292
7.3 本章小结 293
第8章 区块链DeFi安全 294
8.1 简介 294
8.1.1 DeFi与传统金融的区别 295
8.1.2 区块链DeFi的组成 296
8.1.3 DeFi的未来发展 300
8.2 区块链DeFi安全问题及应对方案 301
8.2.1 DeFi安全问题 301
8.2.2 DeFi安全事件案例分析 303
8.2.3 DeFi安全防御 319
8.3 本章小结 320
第9章 区块链安全案例分析 321
9.1 数字货币交易平台的渗透测试 321
9.1.1 Web平台测试 321
9.1.2 钓鱼网站搭建 322
9.1.3 文件上传 324
9.2 智能合约实战环境搭建 325
9.2.1 JavaScript VM 326
9.2.2 Injected Web3 327
9.2.3 Web3 Provider 332
9.3 以太坊智能合约整数溢出漏洞实战 335
附录A 区块链安全大事件纪年表 344
附录B 数字货币交易平台安全速查表 347
###### 谁适合阅读?
区块链相关应用的开发人员
对区块链有兴趣的安全测试人员
对区块链和安全有兴趣的学生
主要内容
第1章对区块链的诞生、演化、分类以及区块链生态中的比特币(Bitcoin,BTC)、以太坊、智能合约和联盟链进行介绍。
第2章介绍对数字货币交易平台的安全问题进行模块化后,如何进行全面、细致的分析,包括渗透测试的步骤,如信息收集、社会工程等,还介绍了各种攻击面,如业务逻辑、输入输出、安全配置、信息泄露、接口方面、用户认证安全、App安全等。
第3章对Solidity编写的以太坊智能合约的常见安全漏洞进行全面、系统的分析,通过案例介绍相关漏洞形成的原理和实际危害,并学习相应的修复方式。
第4章介绍公链的EOS、EOS智能合约的原理和安全问题,并详细分析针对EOS的攻击事件及这些安全缺陷的修复方式。
第5章介绍数字货币钱包的工作原理,并对其存在的安全问题进行深入剖析。
第6章介绍公链自身的安全,包括共识安全、源码安全、RPC接口安全和P2P网络安全。
第7章介绍矿机与矿池的常见类型,并针对其安全问题进行详细分析,包括攻击利用手法、防御修复措施等。
第8章对区块链DeFi进行详细介绍,针对已发生的经典DeFi安全事件进行详细分析并提出修复策略。
第9章介绍数字货币交易平台和智能合约的实战案例。
附录A为区块链安全大事件纪年表,记录了自2012年至本书出版前区块链生态发生的安全大事件。
附录B为数字货币交易平台安全速查表,对平台安全审计点进行了总结,以便广大安全从业者和开发人员查阅并迅速定位安全问题。
为了更好地理解区块链安全部分的内容,本书部分章节录制了视频课程,大家可以在本书GitHub库中Video目录下获取,链接:https://github.com/BlockchainSecBook/The-Hitchhiker-s-Guide-to-the-Blockchain-Sec/tree/master/Video。
由于书中部分代码过于冗长,部分代码上传至本书GitHub库中的SourceCode目录下供大家查阅,地址为https://github.com/BlockchainSecBook。
专家推荐
区块链技术已无形地渗透到互联网的基础领域,区块链应用的安全也显得尤为重要。
这本书从合约到钱包,再到矿池的维度,覆盖了区块链的各个应用场景,并引用真实的线上案例来分析,是不可多得的区块链安全权威书籍,感谢四叶草安全和零时科技对这个行业所做的巨大贡献 !
—陈振国,发明者量化 CEO
这个时代,每天都会有新事物产生,一个新的名词,一项新的技术,甚至一个全新的产业。每当有新事物出现时,大多数人会忙不迭地蜂拥而至,了解一下概念,对其有一个大致的认知,之后便将其转成茶余饭后的浅浅谈资,聊聊也就罢了。但也总有人在匆匆涌来又退去的人群里逆向而行,他们会耐着性子把问题的本质看透,远离浮躁,到更深处寻找答案。
据我所知,这本书是国内少有的系统归纳和总结区块链及其安全问题的书籍,从区块链的诞生、演化入手,全面汇总了区块链中相关安全问题的发生与发展,同时在应用层面,在重要的章节之后都附上了精准、生动的案例分析,最大限度地帮助读者更加具象而深刻地理解书中的内容。在这本书里,我看到了理论与应用在现实场景中的紧密交织,更让我欣喜的是看到了当下年轻人对技术的专注与热爱。
这本书让我对区块链,尤其是区块链中的安全问题和应用实战有了全新的思考,相信不论你是初入链圈的初学者还是对区块链已经有了一定研究的老玩家,这本书都将是你深入研究区块链安全的重要参考资料,也将给你带来全新的收获!
*—王英键(呆神),XCon创始人、未来安全CEO *
区块链是一项伟大的发明,除了用于之前的数字货币、智能合约等场景外,还在不断拓展新的应用场景。但近几年,关于区块链与区块链应用的安全事故有很多,邓永凯与安全圈的一群小伙伴是区块链安全领域的探索者,在区块链安全测试方面有大量实践经验。本书全面地介绍了区块链与区块链应用安全的知识,并结合案例分析给出测试列表,是难得的区块链安全学习材料。
—谭晓生,北京赛博英杰科技有限公司创始人,正奇学院创办人,
360集团前技术总裁、首席安全官
科技日渐发达,区块链的出现对人类来说无疑是应景的,之前还从来没有看到过像这本书一样全面的区块链安全书籍,书里有大量的实际案例和事件分析,比较适合从业者阅读。希望通过本书能让更多的人来保卫区块链产业安全,一起对抗黑客,守卫我们的产业。
—杜均,火币联合创始人
我自己也有2年的区块链领域创业经历,对区块链与网络安全都有比较深入的了解。最近几年,与区块链相关的攻击事件和安全问题频发,大家都渐渐明白了,安全是保障区块链领域稳定发展的根本要求。
本书内容非常全面,涉及区块链交易平台安全、智能合约安全、钱包安全、公链及算法安全、矿池安全等区块链产业链中的整套安全体系的建设与案例分析,可谓面面俱到,不可多得,可作为区块链行业从业人员的安全指南。
—lion,红客联盟(HUC)创始人
区块链已经开始改变社会,人们对区块链和智能合约安全也有了深入的了解,业内对待区块链安全的态度也从最初的盲信变成了今天的如履薄冰。随着区块链产业影响面不断扩大,保障区块链安全也越来越重要。这本书涉及了区块链安全的方方面面,将理论与实战相结合,是非常好的学习和参考资料。希望在这本书的帮助下,区块链从业者能一起打造更加安全的区块链生态。
—韦韬,蚂蚁集团副总裁
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课