來(lái)源:Coindesk
編譯:Echo
校對(duì):黃非紅
我們知道呈昔,一些存在安全漏洞的智能合約在使用之后造成了重大損失,有時(shí)候損失甚至多達(dá)數(shù)億美元友绝。
去年10月堤尾,Amberdata 推出了一款免費(fèi)的安全審查工具,讓何人都可以無(wú)門(mén)檻使用這個(gè)工具來(lái)了解以太坊鏈上活躍應(yīng)用的安全狀況迁客。
這個(gè)工具可以自動(dòng)掃描查找智能合約代碼中的常見(jiàn)漏洞哀峻,并就去中心化應(yīng)用(dApp) 的安全性進(jìn)行評(píng)級(jí)(例如 A級(jí)、B級(jí)或C級(jí))哲泊。
其實(shí)剩蟀,這一功能其實(shí)已經(jīng)在網(wǎng)絡(luò)上存在過(guò)很長(zhǎng)一段時(shí)間了蜜氨。重視隱私的瀏覽器 DuckDuckGo 最近發(fā)布了一款 Chrome 瀏覽器插件薪铜,可用于對(duì)網(wǎng)站進(jìn)行評(píng)級(jí)息罗,使用戶(hù)可以很輕易了解到某個(gè)網(wǎng)站在保護(hù)用戶(hù)隱私方面的服務(wù)是優(yōu)是劣拧簸。
“我們的愿景是提高線(xiàn)上信任的標(biāo)準(zhǔn)”懊直,DuckDuckGo 2017年1月發(fā)布的一篇博文寫(xiě)道草穆。
同樣的关贵,Amberdata 首席執(zhí)行官 Shawn Douglass 也強(qiáng)調(diào)扯饶,Amberdata 安全評(píng)級(jí)工具的愿景喳魏,是提供“更好的智能合約訪(fǎng)問(wèn)體驗(yàn)及提高智能合約的透明度棉浸。”
他還說(shuō)道:
“我們希望,我們?yōu)橐蕴簧鐓^(qū)提供的這些工具刺彩,可以減輕對(duì)外部工具的依賴(lài)迷郑,使得社區(qū)成員可以更快更安全地去進(jìn)行開(kāi)發(fā)工作〈淳螅”
01
關(guān)于評(píng)級(jí)
那 Amberdata 究竟是如何對(duì)以太坊上的應(yīng)用進(jìn)行評(píng)級(jí)的呢嗡害?
Amberdata 的首席技術(shù)官 Joanes Espanol 說(shuō),該系統(tǒng)自動(dòng)掃描13種漏洞畦攘,并將這些漏洞比作“汽車(chē)儀表板上的引擎指示燈霸妹。”
“這意味著知押,我需要檢查汽車(chē)的故障究竟是什么叹螟。所有這些漏洞都可能導(dǎo)致安全性錯(cuò)誤鹃骂,” Espanol 告訴 Coindesk。
Amberdata 安全掃描工具監(jiān)測(cè)到的安全錯(cuò)誤越多罢绽,該 dApp 獲得的等級(jí)評(píng)定就越低偎漫。評(píng)級(jí)的范圍從 A+ 一直降到到 F。
但評(píng)級(jí)并不是嚴(yán)格按照安全錯(cuò)誤的個(gè)數(shù)來(lái)評(píng)定的有缆。這13種漏洞的嚴(yán)重程度各不相同象踊,這些會(huì)影響 dApp 最終獲得的評(píng)級(jí)。Espanol 指出了兩種常見(jiàn)的嚴(yán)重等級(jí)低的漏洞棚壁,它們是“用戶(hù)地址委托調(diào)用"以及“外部合約消息調(diào)用”杯矩。
后者可能會(huì)帶來(lái)潛在的安全風(fēng)險(xiǎn)⌒渫猓“外部合約的消息調(diào)用”不是一種影響智能合約自身的漏洞史隆,但它可能會(huì)調(diào)用其它有錯(cuò)誤代碼的合約。
類(lèi)似地曼验,“用戶(hù)地址委托調(diào)用"是另一種操作泌射,通常被用于將智能合約代碼分成多個(gè)子合約,因此鬓照,必要的軟件升級(jí)可以在不終止整個(gè)應(yīng)用的情況下分步進(jìn)行熔酷。
這其實(shí)是委托調(diào)用的優(yōu)勢(shì)。但其劣勢(shì)在于豺裆,作為智能合約的持有者拒秘,我可以有做壞事的條件了。我可以替換掉那些對(duì)原始應(yīng)用的行為進(jìn)行更改的合約臭猜,” Espanol 解釋道躺酒。
由此可見(jiàn),考慮到這兩個(gè)方面蔑歌, Espanol 將安全審計(jì)稱(chēng)為發(fā)送“警告”羹应,而不是指出代碼錯(cuò)誤。
實(shí)際上次屠,確實(shí)有一個(gè)使用消息調(diào)用的功能的 dApp园匹,它就是 TrueUSD。TrueUSD 是由區(qū)塊鏈初創(chuàng)公司 TrustToken 設(shè)計(jì)研發(fā)的帅矗,是一種與美元掛鉤的以太坊穩(wěn)定幣偎肃。去年10月煞烫,Amberdata 將它的安全等級(jí)評(píng)定為C級(jí)浑此。今年年初,它將智能合約升級(jí)更新后滞详,安全等級(jí)上升為A級(jí)凛俱。
針對(duì) TrueUSD 被檢測(cè)出來(lái)的漏洞紊馏,TrustToken 的安全工程師 William Morriss 在此前一次采訪(fǎng)中告訴 CoinDesk說(shuō),所有被監(jiān)測(cè)到的問(wèn)題都不是真正的“問(wèn)題”蒲犬。
Morriss 說(shuō):“那被檢測(cè)出來(lái)的漏洞是不會(huì)對(duì)我們進(jìn)行攻擊的漏洞……我們知道有這些漏洞朱监,有人告訴我們的時(shí)候,我們都十分嚴(yán)肅地對(duì)待原叮『毡啵”
在談到消息調(diào)用的問(wèn)題時(shí),Morriss 特別補(bǔ)充道奋隶,對(duì)于 TrueUSD 來(lái)說(shuō)擂送,所有外部合約都由它們的公司自己持有并運(yùn)營(yíng),并不通過(guò)安全性可能較低的第三方唯欣。
02
如何在評(píng)中級(jí)獲得 A+?
嚴(yán)重程度為“高”的錯(cuò)誤將對(duì)應(yīng)用程序的安全性評(píng)級(jí)造成更大的沖擊嘹吨,因?yàn)檫@表明代碼錯(cuò)誤和被利用的可能性很大。
其中最常見(jiàn)的一個(gè)錯(cuò)誤是“整數(shù)溢出”境氢,表示在智能合約中執(zhí)行的操作可能產(chǎn)生超出代碼限制的值蟀拷,從而導(dǎo)致奇怪的、不可預(yù)測(cè)的行為萍聊,甚至有可能導(dǎo)致資金損失问芬。
另一個(gè)方面就是“整數(shù)下溢”,也是嚴(yán)重程度為“高”的一個(gè)漏洞寿桨,該漏洞可能導(dǎo)致低于代碼限制的值愈诚,而低于定義范圍的值同樣會(huì)導(dǎo)致錯(cuò)誤輸出。
根據(jù) Amberdata 的評(píng)級(jí)系統(tǒng)牛隅,dApp 開(kāi)發(fā)人員應(yīng)避免使用 Solidity 的一些功能炕柔,包括“suicide()” 和 “tx.origin.”。后者被 Espanol 稱(chēng)為”廢棄代碼“媒佣,在未來(lái)某天會(huì)被人們從 Solidity 語(yǔ)言算法中移除匕累。而前者有被外界劫持的風(fēng)險(xiǎn),可能導(dǎo)致資金被凍結(jié)——且永遠(yuǎn)無(wú)法找回默伍。
著名以太坊應(yīng)用 CryptoKitties 由于沒(méi)有上述四種漏洞欢嘿,目前被 Amberdata 評(píng)為安全等級(jí) A+。CryptoKitties 軟件工程師 Fabiano Soriani ?將其原因歸結(jié)為“他們盡可能多地進(jìn)行了測(cè)試”也糊。
談到諸如書(shū)面文檔和視頻教程這樣的“被動(dòng)資源”并不足以在以太坊上搭建安全應(yīng)用時(shí)炼蹦, Soriani 告訴 CoinDesk:
“有人進(jìn)行審計(jì)工作時(shí)會(huì)為你點(diǎn)明一些事情。(相比起被動(dòng)資源來(lái)說(shuō))這是非常好的補(bǔ)充資源狸剃,因?yàn)槟切﹣?lái)自傳統(tǒng)行業(yè)的開(kāi)發(fā)者對(duì)區(qū)塊鏈并不熟悉掐隐。”
03
“這是一系列新問(wèn)題”
確實(shí),在搭建 dApp 時(shí)虑省,很多人不能理解代碼的嚴(yán)謹(jǐn)性和緊密性的重要性匿刮。主要原因有兩點(diǎn):
其一,與傳統(tǒng)應(yīng)用不同探颈,dApp 通常是開(kāi)源計(jì)算程序熟丸,正如 Morriss 所說(shuō)的,在運(yùn)行“公共”代碼時(shí)伪节,需要“有高度的警惕性”光羞。
Morriss 說(shuō):“一個(gè)傳統(tǒng)應(yīng)用如果有了漏洞,可能好幾年內(nèi)這個(gè)漏洞都不會(huì)帶來(lái)什么傷害……但如果智能合約中有一個(gè)漏洞怀大,攻擊者可以很快檢測(cè)到并加以利用狞山,最后導(dǎo)致你慘遭重創(chuàng)或著讓攻擊者賺得盆滿(mǎn)缽滿(mǎn)〔婕牛”
其二萍启,以太坊上的 dApp 是為智能合約專(zhuān)用的。它是用 Solidity 編程語(yǔ)言特別編碼的屏鳍,并在該區(qū)塊鏈的神經(jīng)中心——以太坊虛擬機(jī)(EVM)中運(yùn)行的勘纯。dApp 的重大優(yōu)勢(shì)是無(wú)法被篡改。
但其缺點(diǎn)也顯而易見(jiàn)钓瞭。一旦軟件部署到以太坊上驳遵,程序員就很難其錯(cuò)誤或漏洞進(jìn)行修訂。
Morriss 將利用上述理由來(lái)跳過(guò)第三方安全審計(jì)或掃描的行為稱(chēng)為”嚴(yán)重錯(cuò)誤"山涡,他告訴CoinDesk堤结,對(duì)開(kāi)發(fā)者來(lái)說(shuō),不要因?yàn)樽约旱摹鞍谅倍屨麄€(gè)合約成為受害者鸭丛,一定要進(jìn)行“覆蓋到代碼所有分支的測(cè)試”竞穷。
Espanol?向 CoinDesk 強(qiáng)調(diào)說(shuō):“對(duì)于以太坊來(lái)說(shuō),這是人們使用 Solidity 進(jìn)行編碼時(shí)沒(méi)意識(shí)到的一系列新問(wèn)題鳞溉●”
Amberdata是新一代區(qū)塊鏈資源管理器,并且用于監(jiān)測(cè)熟菲、搜索看政、分析及保護(hù)公鏈和私鏈的高級(jí)數(shù)據(jù)分析平臺(tái)。我們致力于收集抄罕、處理并搭建 API 來(lái)幫助人們解讀區(qū)塊鏈信息允蚣。您可以通過(guò)我們的 API 文檔來(lái)查看這些圖表的數(shù)據(jù)源,也可以將我們的@Crypto Slack 機(jī)器人添加到 Slack 中來(lái)獲取實(shí)時(shí)市場(chǎng)數(shù)據(jù)呆贿,歡迎關(guān)注公眾號(hào)或加入我們的中國(guó)社群嚷兔,以便獲取到最先進(jìn)的以太坊研究進(jìn)度,以及能最快知道我們發(fā)布了哪些新功能。
如果您想了解更多Amberdata.io相關(guān)信息谴垫,
我們的網(wǎng)站:https://amberdata.io/
我們的官方推特賬號(hào)Amberdataio
我們的官方微信公眾號(hào):Amberdata(amberdata_china)