對話 PeckShield 創始人:智慧合約安全面臨的挑戰及應對措施 | Unitimes AMA

買賣虛擬貨幣

Unitimes AMA(Ask Me Anything)是 Unitimes 重點打造的微信群線上問答系列活動,每週舉辦一期。我們邀請發展較成熟的區塊鏈專案的創始人、CEO、CTO或核心開發者等嘉賓做客社群,與群成員就該專案的突出技術亮點以及用例等進行高質量互動問答,旨在學習交流區塊鏈最新技術和應用。

期數:第30期

特邀專案:PeckShield(派盾)

特邀嘉賓:蔣旭憲,創始人

主題:智慧合約安全面臨的挑戰及應對措施

AMA分為固定問答和自由問答兩個環節。

固定問答

1

Unitimes:蔣教授您好,歡迎參加 Unitimes AMA。請先介紹一下您自己以及 PeckShield 吧!

答:大家好,我是PeckShield創始人蔣旭憲,在此之前曾擔任奇虎360首席科學家。PeckShield「派盾」成⽴於2018年,定位於做區塊鏈資料與安全服務,核心團隊有全球視野,主要由安全頂尖研究人員及頂級學府博士組成, 曾服務於360、Google、Microsoft、Intel、Juniper、Alibaba等全球知名廠商,團隊成員也多次因為安全漏洞方面的研究和發現獲得廠商官方致謝。

經過一年多的成長,PeckShield與全球多家交易所、數字錢包、公鏈、礦池、智慧合約、DApp開發者等生態合作伙伴達成了戰略合作,服務體系包括: 安全審計,防禦部署,應急響應,安全顧問,漏洞賞⾦,DApp安全,實時風控等方向。基於我們在程式碼分析、作業系統、⼤資料等安全業務領域積累的多年經驗,PeckShield旗下成立了DAppTotal、DAppShield等多個獨⽴安全服務品牌,致力於提升區塊鏈生態整體的安全性、隱私性以及可用性,併為生態使用者提供切實有效的安全解決方案和服務。 公司自2018年成立以來,連續發現並命名了包括美鏈BEC在內的多個智慧合約重大安全漏洞,還多次發現了以太坊、EOS等多條知名公鏈的重大安全漏洞,例如以太坊“致命報文”漏洞、EOS內聯反射 (inlineReflex) 漏洞、交易阻塞漏洞、知名DeFi專案MakerDAO治理合約中的投票機制缺陷等,並獲官方致謝。PeckShield還被Etherscan.io 納入智慧合約安全審計推薦名單,同時躋身“以太坊賞金獵人”全球排名Top 3。

2

Unitimes:PeckShield 審計過了這麼多智慧合約,最常見的安全漏洞有哪幾個?

答:最早是圍繞以太坊ERC20的安全漏洞,包括溢位和許可權設定方面的問題:batchOverflow, transferMint, proxyOverflow, transferFlaw, evilReflex, ownerAnyone等,此後在DApp生態起來之後,又圍繞隨機數問題和公鏈特性出現了很多攻擊方式,比如:假EOS攻擊,偽造轉賬攻擊、假通知攻擊、交易回滾攻擊、交易阻塞攻擊等等。

3

Unitimes:安全漏洞的原理是什麼?可以給我們舉兩個例子說明一下嗎?

答:安全漏洞的概念比較廣,也通常泛指硬體裝置,軟體實現,通訊協議在具體設計,實現,或運營上存在的缺陷或不足,使攻擊者在未授權的情況下訪問受限資訊和服務,甚至直接破壞系統正常工作。漏洞的利用並不一定會給攻擊者帶來直接的經濟利益,但肯定會給相關係統的正常運營和服務帶來負面影響

區塊鏈領域的安全漏洞有其特殊性,除了常規的程式語言相關的安全問題(比如整數溢位),還有區塊鏈自身的分散式執行環境帶來的安全挑戰,以及區塊打包順序和算力相關的安全問題。當然,鏈上執行的DApp有各自的業務邏輯,業務邏輯設計和實現上的不完備也可能帶來安全隱患。

下面以一個典型的EOS上面的DApp隨機數漏洞攻擊為例。

EOS.WIN主要是由猜數字和21點兩個遊戲組成,猜數字遊戲玩法,使用者可以任意選取一個數字,系統會根據使用者所選大小給出相應賠率,然後系統會隨機給出一個數字,如果結果和使用者的大小選擇匹配則視為中獎,獲得金額為投入金額乘以賠率。該遊戲的開獎過程為:遊戲合約收到玩家的交易請求,延遲1.5秒後執行開獎方法(resolved 函式),並在開獎方法中使用開獎序號參與隨機數生成,同時透過內聯呼叫方式將開獎結果資訊通知給玩家(receipt 函式),再將開獎序號加1並儲存。開獎流程如下圖所示:

PeckShield 安全人員分析發現,該合約的隨機數是透過 get_random 函式獲得,影響該隨機數生成的因素有:txid 為交易雜湊 ID, tapos_block_num成交塊高度, tapos_block_prefix 區塊 ID 字首, bet_id 全域性開獎序號等。攻擊者利用了開獎序號( bet_id)參與隨機數生成和內聯呼叫失敗可導致狀態資訊回滾的特性,在同一時間控制多個合約帳號同時傳送交易請求,來儘量保證最後請求的帳號能夠獲得期望的開獎序號參與生成隨機數,以贏得獎勵。

具體攻擊過程如下(如下圖):

一、攻擊者部署了6個攻擊合約,呼叫攻擊方法時,在攻擊合約中同時讓這6個帳號傳送交易請求,這樣這些請求將會在同一個塊中開獎,由於過程一致,開獎交易中的 tapos_block_num 和 tapos_block_prefix 是一樣的,只有bet_id可能不同。

二、攻擊者的前5個攻擊合約,在收到開獎通知時,能夠獲取到當前的 bet_id,並判斷此 id 能否讓最後的帳號中獎。

1)如果計算得知最後的帳號不能中獎,則該帳號的開獎通知正常執行,使得後面的帳號使用新的開獎序號來計算隨機數;

2)如果計算得知最後的帳號能中獎,則使該帳號的開獎通知失敗,那麼這個開獎序號被保留下來,直到最後的帳號中獎;

更多的安全漏洞和攻擊案例,可以參考PeckShield公司官網的blog文章(https://blog.peckshield.com/)。

4

Unitimes:近年來發生了不少交易所駭客被攻擊的時間。請問去中心化交易所是一個更安全的選擇嗎?去中心化交易所本身有哪些潛在安全風險?

中心化交易所一直是駭客攻擊的目標。自從2019年以來,大家知道的被攻擊的中心化交易所至少有4家:Cryptopia, DragonEx,Bithumb 和 Binance,攻擊者都是追求利益回報的。大家知道,中心化交易所持有幣的數量和價值都遠遠大於去中心化交易所。攻擊者在選取攻擊目標的時候,理所當然的會選擇價值更大的一方。另一方面,去中心化交易所的資產是由合約掌管,而且大多數還是開源,但是完全開源的智慧合約也有助於全世界的程式設計師幫你稽覈專案有沒有漏洞,另外整個交易流程的公開透明,其出問題的概率也就更低。所以相對而言,去中心化交易所是一個更安全的選擇。不過需要注意的是,去中心化交易所在使用者體驗、交易深度、和使用門檻上還不如中心化交易所。

從2018年1月至2019年5月,交易所共發生23起安全事件,造成損失達10.19億美元。

同時,去中心化交易所的資產完全由智慧合約管理。如果該智慧合約存在安全漏洞,那麼智慧合約上的資產也自然存在安全風險。我們之前報導過的假充值問題也曾經在去中心化交易所出現過。同時,因為去中心化交易所缺乏監管、稽覈,不需要KYC等,也可能會給駭客提供了洗錢的便利性。

5

Unitimes:區塊鏈的各個環節——交易所、礦池、錢包、智慧合約,哪一個最容易出現安全問題?安全漏洞對哪一個來說影響最大?

從團隊的技術實力來講,通常是交易所> 礦池>錢包> 智慧合約,所以最容易出現問題的是技術投入偏弱/入門門檻較低的智慧合約,從DAppp頻發的安全事件可以看出,有時甚至會一天連續發生幾次針對dapp合約的攻擊事件。 但從危害程度來說,當然還是交易所的影響最大,由於交易所掌管著大量的數字資產,最容易被駭客盯上實施攻擊,一旦有攻擊事件發生損失也非常慘重,此前全球知名交易所幣安就因駭客一系列網路釣魚和病毒等攻擊方式,被盜損失7074枚BTC。我們數字資產護航系統(AML)全程追蹤了駭客轉移資產的全過程,如下圖:

6

Unitimes:我瞭解到 PeckShield 除了提供安全研究和安全服務外,還提供資料服務。作為一個安全服務公司,你們為什麼還會關注資料這一方面(而不只是專注程式碼)?

此前我在接受媒體採訪時說過,很多人以為安全就只是程式碼層面,這其實是一個誤區。安全能力的搭建離不開資料,異常資料是安全問題的突破口,資料追蹤是實施應急安全響應的必然路徑,安全最終是基於大資料的安全。所以我們定位為區塊鏈資料和安全服務,也是基於這樣的安全理念,尤其是在理解程式碼和業務的基礎上,配合資料的異常預警和分析追蹤,有效連線各個維度,把安全發現和預警及時通知生態中的各個環節。

目前,我們在各大DApp公鏈都布控了各類安全預警,一旦執行資料上出現異常行為(包括大額轉賬或獲利),我們肯定會第一時間捕獲,從而可以做到安全事件的實時預警。再結合我們深厚的程式碼逆向分析和強大的溯源能力,可以讓我們面臨各種突然襲來的駭客攻擊事件能夠從容應對。

7

Unitimes:對於智慧合約安全的防範機制,您有什麼建議?

目前各公鏈上對於智慧合約開發都有相關的模板或安全模組可供開發者參考使用,例如以太坊 / 波場上的 SafeMath 庫, EOS 亦有熱心人士整理出常見的攻擊手段與防護。建議開發者在寫合約時一定要養成使用安全庫的習慣, 並事先閱讀過相關文件, 瞭解駭客攻擊手法以避免不必要的損失, 若有需要使用到隨機數, 也千萬不要單純的使用鏈上資料來產出隨機數在合約上線前亦最好交由專業的安全公司進行審計, 並擬好安全應急響應SRC計劃。

8

Unitimes: 聽說您 6 月底會去參加在北京舉行的以太坊技術及應用大會。可否給我們透露一下您的演講主題?以及您對此次大會的期待?

非常感謝CSDN的邀請, 也非常感謝你們這次的採訪活動!今年6月底的以太坊技術應用大會又可以和大家見面了。去年參加大會的時候正處於以太坊智慧合約安全漏洞的頻發高峰期,分享的是智慧合約存在的安全威脅。過去一年,我們縱深關注了各大公鏈DApp生態的發展,也親身經歷和見證了DApp生態的演變趨勢(包括經歷的100多起安全事情)。

這次大會我的分享主題是《從遊戲到DeFi,DApp生態面臨的安全挑戰》。去中心化金融DeFi目前是一個熱點。根據DAppTotal整理的DeFi榜單,以Maker等為代表的DeFi專案總鎖倉資金已經達到了11.3億美元。隨著越來越多的DeFi專案出現,一些安全問題也隨即而來。由於DeFi類合約管理著大量的金融資產,其合約直接關係到每一個使用者和鎖倉資產,安全問題不容忽視。

自由問答

固定問答環節結束後,參與此次AMA的成員可以自由提問。以下為 Unitimes 從群成員的提問中精選的幾個問答:

1

Unitimes 社羣成員:在區塊鏈1.0到2.0的發展過程中,區塊鏈的安全問題有什麼變化?

主要是增加了合約方面的安全問題。不過區塊鏈1.0上面就有的共識問題,還會一直有。由於合約的圖靈完備性,基於合約的DApp也自然豐富起來,安全問題也是隨之而來。

2

Unitimes 社羣成員:未來智慧合約有哪些潛在安全威脅?

以前已知的安全問題還會持續有,未來智慧合約的安全問題預計會有更多業務的考量。剛才提到的Maker治理合約安全問題,就是業務層面上面的安全問題,和已知的編碼漏洞無關

3

Unitimes 社羣成員:您創立PeckShield的初衷和願景是什麼?

一是自己從360出來之後,確實想創業。二是區塊鏈的安全問題,比移動端更加重要。我們是看好區塊鏈技術的發展和落地,希望也參與進去,能夠make difference。

4

Unitimes 社羣成員:安全問題發生之後,如何追回被盜資產?

這是個複雜的問題。我們也是有不少這樣的案例。我的建議聯絡安全公司,實時知道資金的流向,一旦進入交易所,馬上聯絡交易所凍結相關賬戶。同時準備好所需的材料,方便和交易所交涉。如果資產沒有交易所,目前還沒太好的辦法。

這個是一起我們目前手上的案例,被盜資金的流向會越來越複雜。

這個是另外一例:

社羣成員:是的,很多時候是直接存在了個人地址,並沒有在交易所。

這個時候,我們需要等。很大的可能是攻擊者遲早會去交易所套現的。

以上是本次 AMA 的全部內容,非常感謝社群成員對 Unitimes 的大力支援,感謝蔣教授!

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;