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)參與隨機數生成和內聯呼叫失敗可導致狀態資訊回滾的特性,在同一時間控制多個合約帳號同時傳送交易請求,來儘量保證最後請求的帳號能夠獲得期望的開獎序號參與生成隨機數,以贏得獎勵。
具體攻擊過程如下(如下圖):
4
Unitimes:近年來發生了不少交易所駭客被攻擊的時間。請問去中心化交易所是一個更安全的選擇嗎?去中心化交易所本身有哪些潛在安全風險?
同時,去中心化交易所的資產完全由智慧合約管理。如果該智慧合約存在安全漏洞,那麼智慧合約上的資產也自然存在安全風險。我們之前報導過的假充值問題也曾經在去中心化交易所出現過。同時,因為去中心化交易所缺乏監管、稽覈,不需要KYC等,也可能會給駭客提供了洗錢的便利性。
5
Unitimes:區塊鏈的各個環節——交易所、礦池、錢包、智慧合約,哪一個最容易出現安全問題?安全漏洞對哪一個來說影響最大?
6
Unitimes:我瞭解到 PeckShield 除了提供安全研究和安全服務外,還提供資料服務。作為一個安全服務公司,你們為什麼還會關注資料這一方面(而不只是專注程式碼)?
此前我在接受媒體採訪時說過,很多人以為安全就只是程式碼層面,這其實是一個誤區。安全能力的搭建離不開資料,異常資料是安全問題的突破口,資料追蹤是實施應急安全響應的必然路徑,安全最終是基於大資料的安全。所以我們定位為區塊鏈資料和安全服務,也是基於這樣的安全理念,尤其是在理解程式碼和業務的基礎上,配合資料的異常預警和分析追蹤,有效連線各個維度,把安全發現和預警及時通知生態中的各個環節。
7
Unitimes:對於智慧合約安全的防範機制,您有什麼建議?
8
Unitimes: 聽說您 6 月底會去參加在北京舉行的以太坊技術及應用大會。可否給我們透露一下您的演講主題?以及您對此次大會的期待?
自由問答
固定問答環節結束後,參與此次AMA的成員可以自由提問。以下為 Unitimes 從群成員的提問中精選的幾個問答:
1
Unitimes 社羣成員:在區塊鏈1.0到2.0的發展過程中,區塊鏈的安全問題有什麼變化?
2
Unitimes 社羣成員:未來智慧合約有哪些潛在安全威脅?
剛才提到的Maker治理合約安全問題,就是業務層面上面的安全問題,和已知的編碼漏洞無關
3
Unitimes 社羣成員:您創立PeckShield的初衷和願景是什麼?
4
Unitimes 社羣成員:安全問題發生之後,如何追回被盜資產?
以上是本次 AMA 的全部內容,非常感謝社群成員對 Unitimes 的大力支援,感謝蔣教授!