Voted Coins
follow us on twitter . like us on facebook . follow us on instagram . subscribe to our youtube channel . announcements on telegram channel . ask urgent question ONLY . Subscribe to our reddit . Altcoins Talks Shop Shop


This is an Ad. Advertised sites are not endorsement by our Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction. Advertise Here

Author Topic: 弯道超车老司机戏耍智能合约——竞态条件漏洞  (Read 1019 times)

Offline billy.ryoko

  • Legendary
  • *
  • Activity: 1506
  • points:
    6024
  • Karma: 2
  • Trade Count: (0)
  • Referrals: 1
  • Last Active: April 06, 2021, 04:53:54 PM
    • View Profile

  • Total Badges: 19
    Badges: (View All)
    10 Posts First Post Fifth year Anniversary
针对区块链安全问题,成都链安科技团队每一周都将出智能合约安全漏洞解析连载,希望能帮助程序员写出更加安全牢固的合约,防患于未然。

 

引子:至道问学之有知无行,分温故为存心,知新为致知,而敦厚为存心,崇礼为致知,此皆百密一疏。

—— 清·魏源《庸易通义》

却说“DoS攻击重现区块链江湖,缜密防范助阵安全阵营”,例外判定合力数据结构的加固,亦使老牌劲敌DoS节节败退。

此回:“重入”“竞态”里应外合币穷财尽,“交互”“限制”强强联手链泰民安

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

这一回,我们将重点剖析竞态条件漏洞的两种形式,重入漏洞以及交易顺序依赖漏洞。

 

事件回顾
2016年4月,完全自治,去中心化的项目DAO启动,立刻成为最受欢迎的以太坊项目,然而在其发布之后,有开发者警告DAO的发起者,在splitDAO函数中潜伏着递归调用漏洞[1]。 2016年6月14日,DAO的项目方声称漏洞已被定位,资金和合约安全已受到保障。

然而就在3天之后,6月17日,黑客却利用上述漏洞向DAO发起攻击,360万以太币岌岌可危,超过6百万美元的资金被源源不断地被黑客暗度陈仓,着实来了一场“无间DAO”。

事件发生后,DAO负责人采取措施减缓了资金流失的速度,以太坊也在7月修改源码帮助DAO转移资金,尝试夺回失窃资金,却导致了以太坊的硬分叉[2]。

想要分析黑客如何对DAO的资金探囊取物,就不得不提到竞态条件这个术语。

 

什么是竞态条件
竞态条件的官方定义是如果程序的执行顺序改变会影响结果,它就属于一个竞态条件 [3]。

在智能合约中,竞态条件漏洞被攻击者利用后,攻击者利用一个与存在漏洞合约平起平坐的外部合约竞争夺取控制权,改变该智能合约的行为。

用一个形象的比喻来说明,将智能合约理解成一条高速公路,所有函数和功能理解为车辆,原本的执行顺序规定了车辆经过的顺序,此时一名熟练的老司机,驾驶着GTR在弯道超车加塞,扰乱了整个道路的秩序,抢占了在道路中的领先地位,进而为所欲为,戏耍合约规则。

以太坊智能合约的特点之一是能够调用和利用其它外部合约的代码,调用外部合约主要存在的危险就是外部合约可以接管控制流,并对调用函数不期望的数据进行更改。这类漏洞有多种形式,我们在这里深度解析重入和交易顺序依赖两种。

http://www.8btc.com/lianan-series-03

Altcoins Talks - Cryptocurrency Forum


This is an Ad. Advertised sites are not endorsement by our Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction. Advertise Here


 

ETH & ERC20 Tokens Donations: 0x2143F7146F0AadC0F9d85ea98F23273Da0e002Ab
BNB & BEP20 Tokens Donations: 0xcbDAB774B5659cB905d4db5487F9e2057b96147F
BTC Donations: bc1qjf99wr3dz9jn9fr43q28x0r50zeyxewcq8swng
BTC Tips for Moderators: 1Pz1S3d4Aiq7QE4m3MmuoUPEvKaAYbZRoG
Powered by SMFPacks Social Login Mod