安全连载——CSDN区块链大本营出品

安全连载——CSDN区块链大本营出品_第1张图片

史上杀伤力最大的溢出型漏洞到底是什么?看这一篇就够了 | 第1期

4月发生的BEC事件以及SMT事件已经沉淀一段时间了,具体的情况也被多方媒体所报道,相关的漏洞根源问题也有很多大神团队的分析和指正。近日,有安全团队将各种已经发生或可能发生的类似溢出漏洞原理进行整理,再次将全方位的原理分析与大家分享,让大家对溢出型漏洞有全面的认识。

“冰封”合约背后的老牌劲敌——拒绝服务漏洞 | 第2期

目前区块链发展的步伐越来越急促,似乎我们已无暇回首当初那些辉煌与挫败,只能低着头继续跟从与追赶。回首2016年的战场,似乎一切都已冰封,少有人记得这里发生过什么。我们将当时的「拒绝服务攻击事件」挖掘出来,并将原理分析和漏洞修复技巧与大家分享,提醒要时刻牢记过去的教训。

弯道超车老司机戏耍智能合约——竞态条件漏洞 | 第3期

区块链的“高速公路”在川流不息的同时,却也事故频发。究其缘由,大批投资者涌入这个似乎畅通无阻,通向明日辉煌的康庄大道,都跃跃欲试一场“速度与激情”,展开对成功的追逐赛。未曾想,挑战者中并非只有彼此,一袭黑衣,手段了得的选手大有人在,这些处心积虑的黑客总有办法让智能合约看似神通广大,实则百密一疏。这一回,我们将重点剖析竞态条件漏洞的两种形式:重入漏洞以及交易顺序依赖漏洞。

偷天换日合约易主,地址变脸移花接木——底层函数误用漏洞 | 第4期

时至今日,加密货币市场价值富可敌国,已达3000亿美元,是加拿大最大银行RBC两倍有余。行情较好的加密货币蕴含大量的资本,在数字交易所中这座“金库”中大放光彩,犹如璀璨夺目的宝石。但同时也吸引了众多行走江湖的黑客神偷。为此,合约的安全成为重中之重,迭代扩展后的新协议带来的不一定是严丝合缝的守护,也可能有意想不到的疏漏,无孔不入的黑客便试图寻找衔接处的缝隙。今天我们来说说关于底层函数调用时产生的隐患:可注入call漏洞和delegatecall误用漏洞。

确认过眼神,地址不是对的人—— 权限验证错误 | 第5期

智能合约作为以太坊上各种加密数字货币的基础,承载着巨大的经济利益。放眼以太坊的繁忙景象,日交易频率在50-75万次之间,而五月和二月更有两日交易次数高达100万次。合约的调用在整个以太坊生态系统犹如战场上穿梭的子弹,不计其数。可见其地位举足轻重,功能五花八门,但万变不离其宗的是,每个合约都有一个共性,会继承一个地址对象,也就是说合约的基础是地址。回顾前四期漏洞分析,我们了解攻击者使出了浑身解数从合约的各个部分试图不劳而获,而从合约的地址漏洞入手,釜底抽薪自然也会成为攻击手段之一。下面我们就来聊聊,与地址有关的tx.origin变量和ecrecover()函数相关漏洞。

游戏skr而止,漏洞周而复始 —— 游戏合约漏洞全面汇总 | 第6期

区块链行业日新月异,发展迅猛,各个公链及项目方奇思妙想层出不穷。俗话说,玩是人的天性,将数字货币与游戏结合,运用游戏的机制吸引投资者参与到互动中来的想法以标新立异、推陈出新的姿态引领了最近的潮流。各种区块链游戏聚集大量的虚拟货币,价值动辄上千万,承诺下的丰厚回抱吸引了越来越多的目光,投资者们跃跃欲试,人人都想充当“头号玩家”。但是,缺少一套完整的、经过验证的SDK库是当下区块链游戏的一个痛点。各游戏方大都自食其力,独立开发游戏智能合约。比代币合约更加复杂的开发过程使得安全隐患不可避免的出现,这些漏洞一旦被攻击者或者项目方本身利用,受害的总会是玩家。可谓是,兴,百姓苦,亡,百姓苦。成都链安科技对目前已经爆发的区块链游戏合约事件进行了归纳整理,分析目前游戏存在以下两个方面的问题。

智能合约中的“高铁座霸” | 存储器局部变量未初始化 | 第7期

最近新闻上的“座霸”事件,在社会中引起了强烈的反响,一个理应对号入座的乘车环境,在某些人不守规矩的情况下,导致买了票的乘客没有座位,以及车厢内的秩序混乱。于是我们联想到,没有对号入座而引起混乱的这个问题,其实在智能合约漏洞问题当中也有类似的情况。

“危机四伏”的以太转账操作|以太转账安全风险 | 第8期

直接与“钱”挂钩的游戏合约在对于以太币的转账相关的逻辑是否能做到真正意义上的牢不可破呢?答案是否定的,例如最近刚刚发生的Pandemica庞氏游戏资金被冻结事件[1],就属于“超出gas上限引发的DoS攻击”,这个类型我们在漏洞分析连载第二期重点分析过。这一期我们就来剖析其它直接涉及以太币转账的漏洞和陷阱。

合约变量的「皇帝新衣」| 外部读取状态变量 | 第9期

我们在前几回主要讨论的都是在合约内部构建函数和代码书写规范时产生的一些误区和安全隐患。但是对于智能合约这个崭新的概念,仅仅从合约层面本身考虑合约的安全可能并不足够。合约开发者在这个产业蓬勃发展的过程当中,为了赶上项目进度,不得以边学习边实践,即使在代码书写层面功底很扎实的情况下,仍然会因为区块链技术的特殊性埋藏一些不自知的安全隐患。所以,这一回我们将要阐述的安全隐患就是因为“合约中的一切都是公开可见”这一特性造成的。

让V神头疼的合约之熵究竟是什么? 小小的区块参数依赖竟能作大妖 | 第10期

游戏的机制都依据以太坊的特性来设计随机数的产生,但是设计理念却是在没有理解这些特性的基本原理来定制的。因此如火如荼短时间炒作后,在无法实现公平游戏的情况下“迅速降温”。本期,我们将重点分析游戏过于依赖区块参数设计而产生的两种漏洞 —— 时间戳依赖和区块哈希依赖。

继承变量覆盖及构造函数失配,竟然会导致这些漏洞 | 第11期

在区块链开发,合约的编写当中,我们给予不同函数、不同变量以不同的名字,程序才能按照编写的意愿调用和执行。正确书写名称、正确声明函数自然就成为智能合约安全开发的基础。然而,这样的问题在区块链发展到近期依然屡次出现,导致安全事件的发生,例如Morphtoken, B2X, DoubleOrNothinglmpl等多个合约中出现的Owned合约构造函数Owned大小写问题。

浮点与精度处理不当的那些事儿 | 第12期

经过十一期的讲解和学习,我们渐渐由常见的严重漏洞延申到了合约开发的细节和不易察觉的安全隐患,旨在倡导更加细致的安全开发过程和专注安全防范的“工匠精神”。在连载开启伊始,我们提及了臭名昭著的整型溢出漏洞,并强调使用SafeMath库对溢出进行检查来防范严重后果。深度阅读请移步:溢出漏洞类型全面分析。

你写的智能合约, 可能连1995年的程序员都比不上 | 第13期

在合约的数学运算中,除法属于比较特殊的一类,其结果只保留整数部分。如果使用小分子大分母的运算基数,将会造成精度上的误差。对于此类运算,应从精度设计、运算和表示三方面入手,采用“大分子”、“运算顺序调整”、“运算前精度转换”三种方式来提高运算结果的准确度。在处理反映经济决策的比例,保持智能合约的正确精确度非常重要,这同时也是以太坊官方的一个努力方向。了解了数据相关的知识,我们这期再回到逻辑与功能方面的安全问题。

你可能感兴趣的:(区块链)