DigiCurrency 板


LINE

這兩篇寫得還不錯,可以讓局外人稍微了解一下 https://www.bikeji.com/t/4027#reply3 DAO 提現bug 簡述 惡意用戶通過一個合約地址而不是普通的用戶地址(不含智能合約)參與DAO,之後通過 Split(DAO概念裡的退出、提現),利用這個合約地址反複調用DAO的提現方法,在餘額 減少N的情況下提現k*N的提現。 攻擊表現 [DAO項目]的合約地址0xbb9bc244d798123fde783fcc1c72d3bb8c189413上可以看到大量到 地址[0x304a554a310c7e546dfe434669c62820b7d83490]的內部交易[ https://etherscan.io/txsInternal?a=0xbb9bc244d798123fde783fcc1c72d3bb8c189413&p=3 ] (內部交易:Internal transaction是指合約執行過程中產生的交易,比如在合約內給用 戶轉賬) 目前DAO還有餘額7,930,715.340858306 Ether ($137,915,139.78),黑客地址 3,641,694.241898506 Ether ($63,583,981.46) 原理 DAO合約記錄著用戶的餘額,提現時候的偽代碼如下: // msg.sender為交易發送方的地址,這裡就是提現的用戶 if (balance[msg.sender]>=withdrawRequest) { //檢查是否有足夠的錢 msg.sender.send(withdrawRequest); //給用戶轉賬 balance[msg.sender] -= withdrawRequest; //在記錄中扣除相應的數額 } 合約在執行這裡的msg.sender.send(withdrawRequest)時會產生一個內部交易,這個交易 很簡單,就是從這個合約轉賬withdrawRequest給提現用戶地址。但是以太坊所有交易在 轉賬的同時會執行交易接收方地址的合約。通常提現的地址是個普通用戶,所在的地址沒 有智能合約,而這裡,黑客從一個自己寫的合約發送提現申請,當這個地址收到錢時就會 執行黑客合約裡定義的默認操作。 //黑客合約的默認操作 function defaultAction() { //設定DAO合約的地址 address DAO = 0xbb9bc244d798123fde783fcc1c72d3bb8c189413; if (attackMode) { //是否開啟了攻擊模式 DAO.withdraw(200); //遞歸調用DAO的提現操作 } } 這樣當黑客發起提現時,以太坊的執行過程如下: 執行到msg.sender.send這行,觸發黑 客合約執行,繼續調用DAO的提現,再次執行到msg.sender.send,注意這裡的代碼是在 msg.sender.send執行後完才扣除用戶在DAO裡記錄的餘額,因此再次執行時用戶的餘額還 是不變的...... 只要DAO合約還有錢,黑客給定的手續費足夠,黑客不終止,這個過程可 以一直進行下去。 這個問題可以在寫合約的時候解決。 -先扣除用戶餘額,再轉賬 -在轉賬給用戶時只給足夠小的手續費(Gas),即使遞歸調用也因為Gas耗盡而結束 -一旦開始提現,鎖定合約的狀態,不允許其他提現操作進行 DAO的開發人員已經考慮了這個問題,但是沒有修復所有有這個漏洞的地方,被黑客所利 用。 目前的解決方案 DAO不能暫停,因此黑客的攻擊還可以繼續下去。黑客地址已經偷取了近三分之一DAO合約 裡的以太幣。目前開發人員號召DAO的用戶否決黑客所用的Split申請,以及廣播大量垃圾 交易阻塞以太坊的網絡,不讓黑客的交易被打包。終極的解決方案是以太坊回滾,會嚴重 影響以太坊的聲望。 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.237.84.197
※ 文章網址: https://webptt.com/m.aspx?n=bbs/DigiCurrency/M.1466281216.A.E21.html
1F:推 koucc: 這漏洞尚未補上,雖然理論上任何人現在都能發起這個代碼攻擊 06/19 11:10
2F:→ koucc: 盜走DAO的eth,但過程需要split出一個子DAO則需要獲得投票 06/19 11:11
3F:→ koucc: 同意,在DAO剛運作這幾天我進去看投票項目,充斥著一堆和DAO 06/19 11:12
4F:→ koucc: 無關的表決項目,大家都在亂玩投票,才造成駭客能趁亂通過 06/19 11:13
6F:推 koucc: 最下方那個musical performance的split proposal就是駭客 06/19 11:49
7F:→ koucc: 使用的標的,投贊成票的人只有24個,提案並未通過 06/19 11:50
8F:→ koucc: 所以我不懂的地方是為何一個沒通過的提案也能分出子DAO 06/19 11:51
9F:→ koucc: 駭客是投贊成票的其中一人,他在2天前上傳了#225號合約 06/19 11:54
10F:→ koucc: 雖然上面把原理解釋得很容易,合約代碼卻有1155行 06/19 11:56
11F:→ koucc: 懂了~ https://s31.postimg.org/lx6ovkr3f/dao_voting2.jpg 06/19 12:19
12F:→ koucc: 因為駭客提的FUN-SPLT-42 Congo Split都獲得同意通過 06/19 12:20
13F:推 Rasin: 如果那駭客提出控告 ETH會歸誰還不好說 真是越演越精彩... 06/19 15:16







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Boy-Girl站內搜尋

TOP