工研院資通所工程師高靖鈞分析駭客攻擊The DAO的手法,駭客透過智能合約的漏洞,發動遞迴攻擊母DAO來盜領以太幣。

圖片來源: 

工研院

震驚金融新創圈的The DAO以太幣竊案有最新進展,The DAO成員投票決定,透過砍掉重鏈的硬分支方式,沒收現值約臺幣14億元的370萬個遭竊以太幣。這也是區塊鏈技術問世後,第一次大規模回收虛擬貨幣的事件。

The DAO(the Decentralized Autonomous Organization)是一個利用公共區塊鏈Ethereum(以太坊)技術,來打造智慧契約平臺的網路組織。一個多月前,6月17日時遭到駭客入侵,盜走了約370萬個以太幣(Ether)。

Ethereum共同創辦人Vitalik Buterin表示,The DAO遭竊事件不會影響Ethereum組織的運作,事件發生後,已先啟動緊急軟分叉來降低對原有以太坊區塊鏈的影響。後來,持有The DAO以太幣Token的所有投資人,投票決議採取硬分叉(Hard Fork)作法,從遭竊前一刻的區塊,重新分出另一條獨立的分支區塊鏈,讓The DAO的區塊鏈回復到被盜前的狀態,讓遭竊的以太幣的該段區塊鏈失效作廢。這是第一個變更區塊鏈來沒收貨幣的例子。The DAO在7月20日正式進行硬分叉,並開放投資人提領以太幣,至目前為止投資者已領走過半資金。

Ethereum公共區塊鏈技術實做出了世界第二大規模的加密貨幣以太幣,僅次於比特幣,同樣使用區塊鏈技術來做出完整的虛擬貨幣基礎架構,其最大特點在可提供智能合約(Smart Contract),可以確保交易各方的共享資訊與狀態。

而The DAO創投組織就是採用了Ethereum技術,來建立一個萬用的智能合約平臺,想要打造出一個分散式自治組織。The DAO在4月時啟動「以太幣」募資專案後,短短27天內就募得1,200萬個以太幣。投資人用以太幣購買DAO Token,就可以具有參與The DAO組織運作的投票權。不過,該組織問世不久,即有資安專家警告其投票機制有漏洞,呼籲DAO進行修補,孰料,過了不久,在6月17日就有駭客攻擊DAO,盜領了約370萬個以太幣。

在發生駭客盜領母DAO專案中的以太幣後,Ethereum決議採取硬分叉的方式,將以太幣區塊鏈的狀態,回復到駭客攻擊前,編號1,920,000的區塊重新開始計算。(圖片來源/Ethereum)

智能合約漏洞,駭客採遞迴攻擊重複提領

工研院中長期投入區塊鏈技術研發的工研院資訊與通訊研究所工程師高靖鈞,在7月15日的ITRI ICR Tech Day上分析了駭客攻擊The DAO的手法。他表示,駭客找出了DAO平臺運作核心:智能合約的漏洞來盜領以太幣。在攻擊前一周,駭客先提出一項研究專案,向The DAO平臺(母DAO專案)申請研究經費,專案通過後,因此分出一個DAO子專案,並在一周後執行智能合約分割功能splitDAO來建立新專案。

接著母DAO專案會透過Token建立程序,先撥款(以太幣)給子DAO專案,之後才進行扣款動作,來刪減母DAO帳目的以太幣數目。不過,當母DAO執行withdrawRewardFor程式,要撥款給子DAO時,駭客透過自訂智能合約的功能,再次呼叫splitDAO功能,趕在扣款指令還未進行之前,再次執行專案建立功能進行再次撥款,因扣款完成前,用戶以太幣餘額仍是正值,在母DAO來不及更新平衡帳目前,這項新建專案和撥款的動作,可以不斷地重複執行。

高靖鈞說,透過遞迴的攻擊,駭客讓母DAO不斷撥款,最後一共盜領了約370萬個以太幣,以當時以太幣市價每個約20美元來計算,遭竊了價值約7,200萬美元的以太幣。

所幸,The DAO平臺為了提高投資人撤出資金的難度,沒有開放投資人直接提領資金,得先將資金轉到子DAO專案,經過27天後才能提領,因此駭客盜走的以太幣並沒有真正被取走。

採硬分叉,從舊區塊1,920,000重建新分支

在攻擊發生後,各方紛紛猜測The DAO或Ethereum將如何解決此事件,主要作法有兩種,第一是採取軟分叉(Soft Folk)方式,以便可以繼續使用和現有以太坊區塊鏈的規則上進行後續更新,第二種則是採取硬分叉(Hard Folk)方式,忽略那些違規產生的新區塊,將DAO所用區塊鏈分支,回復到駭客攻擊前的狀態。但不管採取哪一種,都會對投資人與加密貨幣的生態系造成重大影響。

最終,Ethereum採取硬分叉的方法,將以太幣區塊鏈的狀態,回復到駭客攻擊前,編號1,920,000的區塊,將原本在此編號後被盜的區塊作廢,並重新配置新的智能合約來存放The DAO的資金。

這份新的智能合約可以讓以太幣持有人以原有的1:100匯率,將DAO專案中的以太幣提取出來,不像過去那樣得等上一段時間。不過,如此一來,那些與盜領事件無關的其他子DAO專案,也會受到波及,必須要重新再執行新的智能合約,影響了約34,000個以太幣。

自7月20日進行硬分叉以後,投資人大量提領The DAO的以太幣,截至目前為止已領走571萬個以太幣(原本的DAO智能合約裡有1,158萬個以太幣)。

硬分叉執行成功後,Ethereum共同創辦人Vitalik Buterin出面安撫民心,他表示,Ethereum新分支的運作很順利,有大約85%的礦工正在新的分支開挖。他鼓勵打算參與分支的人更新他們的版本到相容的1.4.10版。就算,礦工們想要留在舊有未分支的主鏈上(Classic Chain),他提醒,仍然要更新軟體版本,並留意遞迴攻擊,採取適當的防禦措施。目前,Ethereum新分支與原本主鏈會同時並存運行,待時間決定哪個分支勝出。

打破區塊鏈不可逆的理念

這次Ethereum採取硬分叉解決的作法,也是加密貨幣發展上的一大轉捩點,在社群引發極大的辯論,同時Ethereum的未來受到矚目,接下來新舊分支的運作情況,更是影響長期發展的關鍵。硬分叉作法面臨不少反彈的原因在於,這違反一般認為區塊鏈不可逆的理念。這也使得許多大型金融機構、新創公司在基於Ethereum平臺上的建設,開始存疑。

Capital Wave Forecast編輯Shah Gilani分析這次結果,會對金融科技與區塊鏈技術造成長遠的影響。「區塊鏈應該要是不可竄改的。」他說,這凸顯了智能合約可攻陷的缺失,也導致不可逆的區塊鏈因此可逆,不免替未來的區塊鏈之路添上一絲疑慮。

不過,高靖鈞仍舊看好Ethereum,他說:「在以太幣剛起步階段,就遇到這件事是好事。」他表示,就短期而言,此次漏洞攻擊事件也許是件傷害,但長期來看,則是發展區塊鏈技術的必要經驗。

 快速認識Ethereum 

目前世界第二大加密貨幣的Ethereum(以太坊),基於區塊鏈技術,具備完整的底層協議。為一種共享式資料庫,採分散式技術,資料散布於各區塊資料,無法被單一實體掌控,並且採分散式共識演算法,解決同步問題,且交易資料安全、透明,可永久記錄無法被竄改。其最大的特點在於智能合約(Smart Contract),可以確保交易各方的共享資訊與狀態。2015年11月微軟宣布使用Ethereum作為其區塊鏈即服務(EBaaS),部署在微軟的雲端平臺Azure上。

熱門新聞

Advertisement