如何確保自身項(xiàng)目代碼不受漏洞影響
如何確保自身項(xiàng)目代碼不受漏洞影響
隨著行業(yè)130的發(fā)9370展,項(xiàng)6165目如雨后春筍般應(yīng)運(yùn)而生,但是在大力開拓新項(xiàng)目的同時(shí),很多人沒有注意到代碼審計(jì)這一塊,那么什么是代碼審計(jì)呢?所謂代碼審計(jì),就是檢查源代碼的安全缺陷,檢查程序源代碼是否存在安全隱患,或者編碼不規(guī)范的地方。那么代碼審計(jì)有什么作用呢?
據(jù)統(tǒng)計(jì),2018年全球領(lǐng)域發(fā)生近百起安全事件,損失超20億美元,相較于2017年增長(zhǎng)了538的底層技術(shù)“”面臨著來自數(shù)據(jù)層、網(wǎng)絡(luò)層、共識(shí)層、激勵(lì)層、合約層、應(yīng)用層的安全風(fēng)險(xiǎn),安全攻擊方式層出不窮,防不勝防。安全攻擊主要發(fā)生在應(yīng)用層,其中智能合約是安全的重。
而且還發(fā)生了很多的安全事件,影響較大的例如mtgox事件,mtgox是當(dāng)時(shí),處理的交易占全球70%。2014年,mtgox遭遇了嚴(yán)重的攻擊,隨后mtgox宣布暫停交易,理由是其安全軟件存在漏洞。兩周后,網(wǎng)站突然關(guān)閉,mtgox申請(qǐng)產(chǎn)。
據(jù)mtgox估計(jì),公司的投資損失約合4.8億美元,其中包括客戶的75萬單位和公司自己持有的10萬單位,合計(jì)約占全球發(fā)行量的7%。此次事件導(dǎo)致投資者信心受挫直接暴跌36%。
還有非常多別的項(xiàng)目同樣受到巨大的損失,仔細(xì)研究不難發(fā)現(xiàn):在的安全事件中,大多都是由于源代碼存在漏洞而使趁虛而入。智能合約受到本身保護(hù),所以智能合約代碼可以的開源和讓人閱讀。但是代碼的公開性使得容易掌握代碼的缺陷,進(jìn)一步利用代碼缺陷觸發(fā)條件改變智能合約執(zhí)行結(jié)果,使得項(xiàng)目存在巨大的經(jīng)濟(jì)隱患。所以智能合約代碼的開源性需要代碼的高可靠性,這種可靠性要求100%的正確。
但是,對(duì)于程序員來說,寫一個(gè)完全沒有漏洞的代碼實(shí)在是太難了,即使采取了所有可能的措施,在復(fù)雜的軟件中也總會(huì)出現(xiàn)沒有預(yù)料到的漏洞。所以,代碼審計(jì)的性不言而喻。
通過代碼審計(jì),檢查源代碼中的安全缺陷,檢查程序源代碼是否存在安全隱患,或者有編碼不規(guī)范的地方,通過自動(dòng)化工具或者人工審查的方式,對(duì)程序源代碼逐條進(jìn)行檢查和分析,發(fā)現(xiàn)這些源代碼缺陷引發(fā)的安全漏洞,并提供代碼修訂措施和建議。
目前已經(jīng)服務(wù)的有錢包、公鏈和智能合約等代碼審計(jì),為行業(yè)保駕護(hù)航,合作的慢霧科技,certik等全球?qū)徲?jì)公司,我們有著的服務(wù)滿足客戶的需求,歡迎合作伙伴合作交流,共同探討!
發(fā)生過的案例:
一代碼審計(jì)可以解決哪些問題:讓無孔可入
隨著btc、eth、eos等項(xiàng)目的迅速發(fā)展項(xiàng)目已經(jīng)進(jìn)入了智能合約時(shí)代,但是智能合約自身的正確性和安全性卻面臨著巨大的問題。
也就是說任何一個(gè)項(xiàng)目在使用時(shí)都有可能走向歧途,不能完全保證代碼的準(zhǔn)確性。就像每個(gè)人在電腦打字時(shí)都會(huì)打錯(cuò)字一樣,程序員在輸入代碼時(shí)也會(huì)存在筆誤和錯(cuò)漏。
而中的基礎(chǔ):智能合約代碼的開源性需要代碼的高可靠性,這種可靠性要求100%的正確。
差之毫厘,謬以千里。
用的術(shù)語來說:
類似這樣的代碼全部公開,用智能合約代碼存儲(chǔ)在上,與交易數(shù)據(jù)一樣受到的加密保護(hù),要想修改智能合約代碼需要掌握51%的算力,因此,智能合約代碼的防篡改性得到大大提升。
智能合約受到本身保護(hù),所以智能合約代碼可以的開源和讓人閱讀。智能合約解決了可以公開代碼并保障其安全的問題,但是代碼的公開性使得容易掌握代碼的缺陷,進(jìn)一步利用代碼缺陷觸發(fā)條件改變智能合約執(zhí)行結(jié)果,使得項(xiàng)目存在巨大的經(jīng)濟(jì)隱患。
就像,我們?cè)阢y行里轉(zhuǎn)賬,每一個(gè)賬戶的信息都是對(duì)的,轉(zhuǎn)賬才能夠是正確的,你的財(cái)產(chǎn)才可以安全被保護(hù),所以代碼中一個(gè)字都不能錯(cuò)。
二代碼錯(cuò)誤導(dǎo)致的嚴(yán)重后果
中的智能合約代碼質(zhì)量不好造成了許多嚴(yán)重的后果。
目前來看,許多和代幣項(xiàng)目在上之前沒有經(jīng)過代碼審計(jì),造成了許多虛擬被的事件。
1、t項(xiàng)目方與美國(guó)bec代幣的安全漏洞
2018年4月25日凌晨,artmesh(t)項(xiàng)目方反饋發(fā)現(xiàn)其交易存在異常問題,經(jīng)初步排查,t的以太坊智能合約存在漏洞。受此影響,火幣pro目前暫停所有幣種的充提幣業(yè)務(wù)。
另據(jù)媒體報(bào)道,發(fā)現(xiàn)t與美圖bec代幣存類似的安全漏洞,即可通過溢出攻擊可以收到大量的代幣。
2、美圖bec的異常交易漏洞
2018年4月22日,美圖bec出現(xiàn)異常交易,據(jù)分析,bec 智能合約中的batchtransfer批量轉(zhuǎn)賬函數(shù)存在漏洞,攻擊者可傳入很大的value數(shù)值,使cnt * value后超過unit256的值使其溢出導(dǎo)致amount變?yōu)?。
3、parity多簽名錢包漏洞
2017年7月,parity多簽名錢包由于其智能合約代碼中存在漏洞,被時(shí)價(jià)超過3000萬美金的eth。
4盜幣漏洞
2016年6月由于智能合約的一個(gè)錯(cuò)誤從dao偷走了價(jià)值5500萬美元的eth。
代碼的安全缺陷倒逼智能合約的代碼自動(dòng)審計(jì)。
三代碼審計(jì)成就合約
智能合約通過代碼建立一套“法律合同”,軟件工程師創(chuàng)造一個(gè)完全無誤差的代碼是不可能的,程序員總存在疏忽的地方。紅岸科技和科技大學(xué)的ulord項(xiàng)目研究團(tuán)隊(duì)對(duì)市面上的智能合約進(jìn)行了審計(jì),他們的研究發(fā)現(xiàn):
對(duì)所有的程序員來說,寫一個(gè)沒有bug的代碼實(shí)在是太難了,即使采取了所有可能的措施,在復(fù)雜的軟件中也總會(huì)出現(xiàn)沒有預(yù)料到的執(zhí)行路徑或可能的漏洞。
這是為什么要代碼審計(jì)的原因之一。
中的 “法律合同”是一項(xiàng)受解釋和仲裁的約束,程序員很難去創(chuàng)造一個(gè)縝密的合約。在任意一個(gè)大的合約里,可能出現(xiàn)的文稿錯(cuò)誤以及一些條款需要解釋和仲裁。
同時(shí),軟件工程師不是法律反之亦然。起草一份好的合約需要各種各樣的技能,不一定與編寫的計(jì)算機(jī)程序兼容。
因此,智能合約代碼在一定程度上都可能存在安全隱患。傳統(tǒng)的智能合約代碼審計(jì)主要利用人工,依靠code reviewer閱讀智能合約代碼。人工代碼審計(jì)終還是依賴人的經(jīng)驗(yàn),代碼審計(jì)效果不明顯,針對(duì)目前eth大量代幣的智能合約,人工審計(jì)工作量大,難以的完成工作。
在領(lǐng)域從事代碼審計(jì)業(yè)務(wù)的項(xiàng)目公司較少,目前每個(gè)代幣在上之前,其智能合約代碼由進(jìn)行審察和判定,但有時(shí)并不能完全有效地判斷合約是否。
智能化代碼審計(jì),利用計(jì)算機(jī)進(jìn)行穩(wěn)健性檢驗(yàn)是當(dāng)前代碼審計(jì)重要的方式,掌握該項(xiàng)技術(shù)標(biāo)準(zhǔn)的國(guó)內(nèi)公司并不多。
但代碼審計(jì)的重要性不言而喻世界本身是相當(dāng)安全的,但是由于人為撰寫代碼的問題,不可能必須加強(qiáng)代碼有效性的識(shí)別。