药物与性健德堂“冰封”合约背后的老牌劲敌拒绝服务漏洞 | 漏洞解析连载之二


药物与性健德堂“冰封”合约背后的老牌劲敌拒绝服务漏洞 | 漏洞解析连载之二

安全,区块链领域举足轻重的话题,为什么一行代码能瞬间蒸发几十亿市值?合约底层函数的使用不当会引起哪些漏洞?在合约中发送以太币存在哪些风险?服务攻击DOS有哪些类型?

中山市小榄镇锋电五金厂「区块链大本营」携手「链安科技」团队重磅推出「合约安全漏洞解析连载」,以讲故事的方式,带你回顾区块链安全走过的历程;分析漏洞背后的玄机。让开发者在趣味中学习,写出更加牢固的合约,且防患于未然。

中山市小榄镇锋电五金厂当然,这些文章并不是专为开发者而作的,即使你不是开发者,当你读完本连载,相信再有安全问题爆出时,你会有全新的理解。

中山市小榄镇锋电五金厂引子:秦人不暇自哀,而后人哀之;后人哀之而不鉴之,亦使后人而复哀后人也。

——《阿房宫赋》

DoS攻击重现区块链江湖 缜密防范助阵安全区阵营 

中山市小榄镇锋电五金厂眼观目前区块链发展的步伐越来越急促,似乎我们已无暇回首当初那些辉煌与挫败,只能低着头继续跟从与追赶。

中山市小榄镇锋电五金厂回首2016年的战场,似乎一切都已冰封,少有人记得这里发生过什么。

中山市小榄镇锋电五金厂我们将当时的「拒绝服务攻击事件」挖掘出来,并将原理分析和漏洞修复技巧与大家分享,提醒要时刻牢记过去的教训。

事件回顾

2016年2月6日至8日The King of the Ether Throne(以下简称KotET)“纷争时代”(Turbulent Age)期间,许多游戏中的退位君王的补偿和未接受款项无法退回用户玩家的钱包[1] 。

具有讽刺意味的是同年6月,连庞氏骗局GovernMental的合约也遭遇DoS攻击,当时1100以太币是通过使用250万gas交易获得[2],这笔交易超出了合约能负荷的gas上限,带来交易活动的暂停。


药物与性健德堂“冰封”合约背后的老牌劲敌拒绝服务漏洞 | 漏洞解析连载之二

无论是蓄意破坏交易正常流程还是阻塞交易通道,都用到了一个互联网时代已经盛行已久的攻击方式——DoS,也就是我们所说的拒绝服务攻击。

这种攻击方式可以让合约执行的正常的交易操作被扰乱,中止,冻结,更严重的是让合约本身的逻辑无法运行。

何为DoS

DoS 是DenialOfService,拒绝服务的缩写[3],从字面上来理解,就是用户所需要的服务请求无法被系统处理。


药物与性健德堂“冰封”合约背后的老牌劲敌拒绝服务漏洞 | 漏洞解析连载之二

中山市小榄镇锋电五金厂打个比方来形容DoS,火车站是为大家提供乘车服务的,如果想要DoS火车站的话,方法有很多,可以占用过道不上车,堵住售票点不付钱,阻挠列车员或者司机不让开车,甚至用破坏铁轨等更加极端的手段来影响车站服务的正常运营。

中山市小榄镇锋电五金厂过去针对互联网的DoS有很多种方法,但基本分为三大类:利用软件实现的缺陷,利用协议的漏洞,利用资源压制[3]。

此外,还有DDoS,称为分布式DoS,其区别就是攻击者利用远程操控的计算机同时向目标发起进攻,在上面的比喻中可以理解为雇佣了几百个地痞流氓来做同样的事影响车站的运作。


药物与性健德堂“冰封”合约背后的老牌劲敌拒绝服务漏洞 | 漏洞解析连载之二

智能合约DoS攻击原理分析及其漏洞修复

无处不在的DoS当然也会对基于Solidity语言的以太坊合约产生威胁。

针对智能合约的DoS攻击属于利用协议漏洞进行的手段,具体的攻击方法有三种[4],其目的是使合约在一段时间或者永久无法正常运行。通过DoS攻击,可以使合约中的Ether永远无法提取出来,区块成为“冰冻废土”。


药物与性健德堂“冰封”合约背后的老牌劲敌拒绝服务漏洞 | 漏洞解析连载之二

中山市小榄镇锋电五金厂在对原始代码进行分析后,我们发现KotET事件中对君王称号进行锁定的DoS攻击属于以下三种范畴。

中山市小榄镇锋电五金厂1. 通过(Unexpected) Revert发动DoS

如果智能合约的状态改变依赖于外部函数执行的结果,又未对执行一直失败的情况做出防护,那么该智能合约就可能遭受DOS攻击[5]。

中山市小榄镇锋电五金厂我们使用案例合约还原KotET的竞拍机制,进行模拟分析:


药物与性健德堂“冰封”合约背后的老牌劲敌拒绝服务漏洞 | 漏洞解析连载之二

以上案列合约是一个简化版的KotET的竞拍争夺王位的合约,如果当前交易的携带的Ether大于目前highestBid,那么highestBid所对应的Ether就退回给currentLeader,然后设置当前竞拍者为currentLeader,currentLeader改为msg.value。

中山市小榄镇锋电五金厂但是,当恶意攻击者部署如下图所示的合约,并通过合约来竞拍,就会出现问题。


药物与性健德堂“冰封”合约背后的老牌劲敌拒绝服务漏洞 | 漏洞解析连载之二

中山市小榄镇锋电五金厂攻击者先通过攻击合约向案例合约转账成为currentLeader,然后新的bider竞标的时候,执行到

require(currentLeader.send(highestBid))

中山市小榄镇锋电五金厂会因为攻击合约的fallback()函数

(这里指function()external payable函数)

无法接收Ether而一直为false,最后攻击合约以较低的Ether赢得竞标。

漏洞修复

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

 深圳市韬越电子科技有限公司 湖南省衡东少年军校 北京中宇智慧城市信息技术有限公司 海外就业人才库 上海逸恣信息技术有限公司 杭州智旅文化创意有限公司 广州市丰伟饼业有限公司 宜兴市物业管理中心 Sasha沙沙婚礼策划 北京古轩家具厂 建始县二龙藏香猪生态养殖专业合作社 河北天宾自行车制造有限公司 杭州展鸿电子有限公司 汕头市凯典贸易有限公司 长春市宽城区迦铭培训中心 娄底市风景园林管理处 车管家全国客服网 温州市仰义中学 深圳市大国贸易有限公司 石家庄金美保温建材厂 上海慧众工业皮带有限公司 东莞市林昌制冷机电设备有限公司 青岛中升智通汽车销售服务有限公司 成都海天彩印 德州市英豪太阳能有限公司 三和休闲食品机械设备 郑州市现代粮油机械有限公司 马蹄车友网 东莞市明阳光电有限公司 青岛广辰国际旅行社有限公司 扬州金声古筝有限公司 北京中谷惠尔科技发展有限公司 重庆恒沃机械设备有限公司 上海吉锦泵阀制造有限公司 广西桂林天鹅旅行社 包头市路泽汽车销售服务有限公司 烟台博朗帝尔酒业有限公司 江苏好丽友食品科技有限公司 双鸭山乐卡商贸有限公司 普洛菲国际婚礼定制中心 ppnba直播吧飞飞CMS官网论道网洋创支付吧